自定义Endpoint资源可以将集群外部的服务如mysql、zookeeper,引入到集群内来。这种集群外的服务除非使用service的externalName,否则用Service来引入是不合适的,因为他不会自动创建出endpoint,也没有标签来选择集群外部的服务。
我们可以直接在集群上创建一个endpoint资源,为endpoint资源指定端点为集群外部的资源,前提是endpoint资源能和集群外部资源通信。在endpoint之上人为的创建一个Service资源。当客户端访问Service时就相当于访问到集群外部的服务。
手动创建的endpoint存在缺点,缺点在于手动创建的endpoint无法进行就绪状态检测。如果需要将某个端点定义为未就绪状态,则需要手动修改配置清单并重新应用。
Endpoint资源使用格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| apiVersion: v1 kind: Endpoint metadata: name: namespace: subsets: - addresses: - hostname <string> ip <string> nodeName <string> targetRef: apiVersion <string> kind <string> name <string> namespace <string> fieldPath <string>
uid <string> notReadyAddresses: ports: - name <string> port <integer> protocol <string> appProtocol <string>
|
Endpoint资源清单示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| apiVersion: v1 kind: Endpoints metadata: name: mysql-external namespace: default subsets: - addresses: - ip: 172.16.11.51 - ip: 172.16.11.52 ports: - name: mysql port: 3306 protocol: TCP notReadyAddresses: - ip: 172.16.11.53 --- apiVersion: v1 kind: Service metadata: name: mysql-external namespace: default spec: type: ClusterIP ports: - name: mysql port: 3306 targetPort: 3306 protocol: TCP
|