Kubernetes使用Eedpoints连接外部服务端口

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名称了,实践完成!

原文地址:https://www.cnblogs.com/Serverlessops/p/13553315.html