externalIPs
场景:AB 集群业务互相访问
1.将运行svc的主机设置为不可调度
2.构建svc时候用externalIPs指定运行svc的主机内网IP
3.A B两个集群做同样的操作
4.A B集群构建svc时候用endpoints执行需要访问的另外集群的svc主机内网IP
demo
启动一个nginx服务 并设置externalips
cat nginx.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 1 selector: matchLabels: app: web01 template: metadata: name: nginx labels: app: web01 spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: nginx-service spec: externalIPs: - 192.168.1.62 ports: - port: 8000 targetPort: 80 protocol: TCP selector: app: web01
说明:对外的IP:192.168.1.62,把宿主机上8000端口映射到容器80端口上,走的协议为TCP,选择器选择所有属于app=web1分组的容器
访问:
新建一个endpoints svc 制定刚刚 nginx的IP 和端口
cat protext.yaml
apiVersion: v1 kind: Endpoints metadata: name: prometheus subsets: - addresses: - ip: 192.168.1.62 ports: - port: 8000 --- apiVersion: v1 kind: Service metadata: name: prometheus spec: ports: - port: 9090 protocol: TCP
kubectl get endpoints
模拟访问(由于没有两套k8s环境 只能通过svc cluster-ip 访问)
curl 10.103.188.149:9090
[root@master externalIPs]# curl 10.103.188.149:9090 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>
可以看到访问10.103.188.149:9000端口就相当于访问了192.168.1.62:8000端口