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



Welcome to nginx!



Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to "http://nginx.org/">nginx.org.
Commercial support is available at "http://nginx.com/">nginx.com.

Thank you for using nginx.

可以看到访问10.103.188.149:9000端口就相当于访问了192.168.1.62:8000端口

k8s