Kubernetes externalIPs 类型服务
背景:
在k8s中用到的比较到多的是ClusterIP和NodePort类型的service,externalIPs则很少使用。我们现在了解一下其用法和它的一些优缺点。
官方定义:
如果有路由到一个或多个集群节点的外部 IP,则可以在这些 IP 上公开 Kubernetes 服务。在服务端口上使用外部 IP(作为目标 IP)进入集群的流量将被路由到其中一个服务端点。 不受 Kubernetes 管理,由集群管理员负责。
如何使用externalIPs
本实例预配了 2 个 VM。 分别为 Kubernetes 主节点,IP 为 1.2.4.120。 Kubernetes worker,IP 为 1.2.4.114。k3s-external-ip-master
k3s-external-ip-worker
部署nginx和httpd服务
1 2 | $ kubectl create deployment nginx --image=nginx $ kubectl create deployment httpd --image=httpd |
可以看到
1 2 3 4 | $ kubectl get pods NAME READY STATUS RESTARTS AGE nginx-86c57db685-fzxn5 1 /1 Running 0 22s httpd-7bddd4bd85-zk8ks 1 /1 Running 0 16s |
编写service配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $ cat << EOF > nginx-service.yaml apiVersion: v1 kind: Service metadata: name: nginx-service spec: selector: app: nginx ports: - name: http protocol: TCP port: 80 targetPort: 80 externalIPs: - 1.2.4.114 EOF |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $ cat << EOF > httpd-service.yaml apiVersion: v1 kind: Service metadata: name: httpd-service spec: selector: app: httpd ports: - name: http protocol: TCP port: 80 targetPort: 80 externalIPs: - 1.2.4.120 EOF |
部署这两个service
1 2 | $ kubectl create -f nginx-service.yaml $ kubectl create -f httpd-service.yaml |
查看service
1 2 3 4 5 | $ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.43.0.1 <none> 443 /TCP 18m httpd-service ClusterIP 10.43.240.149 1.2.4.120 80 /TCP 32s nginx-service ClusterIP 10.43.13.149 1.2.4.114 80 /TCP 26s |
调用查看httpd服务
1 2 3 4 5 6 7 8 9 10 11 | $ curl -i 1.2.4.120 HTTP /1 .1 200 OK Date: Fri, 20 Dec 2019 03:36:23 GMT Server: Apache /2 .4.41 (Unix) <------ Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT ETag: "2d-432a5e4a73a80" Accept-Ranges: bytes Content-Length: 45 Content-Type: text /html <html><body><h1>It works!< /h1 >< /body >< /html > |
调用查看nginx服务
$ curl -i 1.2.4.114 HTTP/1.1 200 OK Server: nginx/1.17.6 <------ Date: Fri, 20 Dec 2019 03:36:01 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT Connection: keep-alive ETag: "5dd3e500-264" Accept-Ranges: bytes <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> ....
总结:
优点:是对外暴露访问地址相较于NodePort的访问地址自控程度高
缺点:不具有高可用的能力
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了