Kubernetes使用Eedpoints鏈接外部服務端口

Kubernetes使用Eedpoints鏈接外部服務端口

背景: 在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

相關文章
相關標籤/搜索