Kubernetes使用Eedpoints連線外部服務埠
阿新 • • 發佈:2020-08-24
Kubernetes使用Eedpoints連線外部服務埠
背景: 在Kubernetes的使用環境中,我們經常要連線外部的一些服務,比如mysql Elasticsearch kafka 等等外部的儲存服務,但是這些服務又不是部署在K8S中的,所以埠就不好連線,這時我們把service的Endpoints修改成外部ip和埠連線,就可以實現使用service 直接連線外部的服務。具體配置檔案如下:
使用一個Elasticsearch的配置檔案作為實踐
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 中去利用。
接下來我們看下效果:
$ 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名稱了,實踐完成!