背景: 在Kubernetes的使用环境中,咱们常常要链接外部的一些服务,好比mysql Elasticsearch kafka 等等外部的存储服务,可是这些服务又不是部署在K8S中的,因此端口就很差链接,这时咱们把service的Endpoints修改为外部ip和端口链接,就能够实现使用service 直接链接外部的服务。具体配置文件以下:mysql
使用一个Elasticsearch的配置文件做为实践sql
cat elasticsearch-enpoint.yaml --- apiVersion: v1 kind: Endpoints metadata: name: essrv1 namespace: kube-system subsets: - addresses: - ip: 192.168.0.250 ports: - port: 9200 protocol: TCP --- apiVersion: v1 kind: Service metadata: name: essrv1 namespace: kube-system spec: ports: - port: 9200 protocol: TCP
上面呢,咱们就创建一个service essrv1,同时让这个service 对应Endpoints essrv1 配置,这样咱们就实现了把外部服务放到K8S 中去利用。api
接下来咱们看下效果:app
$ kubectl get svc -n kube-system |grep essrv1 essrv1 ClusterIP 10.0.0.95 <none> 9200/TCP 26d $ kubectl get ep -n kube-system|grep essrv1 essrv1 192.168.0.250:9200 26d $ kubectl describe ep essrv1 -n kube-system Name: essrv1 Namespace: kube-system Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","kind":"Endpoints","metadata":{"annotations":{},"name":"essrv1","namespace":"kube-system"},"subsets":[{"addresses":[{"i... Subsets: Addresses: 192.168.0.250 NotReadyAddresses: <none> Ports: Name Port Protocol ---- ---- -------- <unset> 9200 TCP Events: <none>
上面咱们就看到了这种效果,这样咱们就能够经过内部的dns去调用essrv1的service名称了,实践完成!elasticsearch