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

相关文章
相关标签/搜索