简介

k8s中的资源类型Service用作代理Pod,一般来说需要在Service中定义selector才可以绑定到对应pod上。存在一种特殊的service,即不指定selectorservice。这种类型的service一般用作代理外部服务。例如集群外存在mysql服务,这时想要映射到集群内部地址使用,此时即可使用这种service

要点

  1. service不指定selector
  2. 创建endpointsservice同名

此时即可完成绑定

示例:

external-service.yaml

---
apiVersion: v1
kind: Service
metadata:
  name: external-service
spec:
  type: NodePort
  ports:
  - port: 80

---
apiVersion: v1
kind: Endpoints
metadata:
  name: external-service
subsets:
  - addresses:
    - ip: 172.16.21.180
    ports:
    - port: 3306
[email protected]:~/endpoints# kubectl get svc 
NAME                            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
external-service                NodePort    10.254.139.74    <none>        80:51080/TCP     12h

此时通过访问$NODE_IP:51080即可访问原先的172.16.21.180:3306