K8S 中通過 service 訪問外部的資源


在工作時碰到一個場景,K8S中的容器需要訪問外部的 es 服務和 kibana, 若把 es 和 kibana 的配置以固定IP的形式寫入配置文件中,萬一 es 和 kibana 搬遷,ip 地址變更那改起來會非常不靈活和容易遺漏。
這時我們可以使用 K8S 的 service。

訪問 ES

外部的 es ip為 192.168.0.200 端口為 9400;這里創建一個 Endpoints 和 Service。

cat es.yaml 

apiVersion: v1
kind: Service
metadata:
  name: es-svc
  namespace: klvchen
spec:
  ports:
  - port: 9400
    targetPort: 9400
    protocol: TCP
    name: tcp
---
apiVersion: v1
kind: Endpoints
metadata:
  name: es-svc
  namespace: klvchen
subsets:
  - addresses:
    - ip: 192.168.0.200
    ports:
    - port: 9400
      name: tcp

# 在 K8S 中的容器使用 es-svc.klvchen.svc.cluster.local:9400 就可以訪問到 es 了。

訪問 Kibana

通過 ingress 管理 Kibana,讓用戶通過 kibana.klvchen.com 這個域名來訪問 192.168.0.200 上的 kibana。
注意:kibana.klvchen.com 域名需要解析到 ingress 上

cat kibana.yaml 

apiVersion: v1
kind: Service
metadata:
  name: kibana-svc
  namespace: klvchen
spec:
  ports:
  - port: 5601
    targetPort: 5601
    protocol: TCP
    name: http
---
apiVersion: v1
kind: Endpoints
metadata:
  name: kibana-svc
  namespace: klvchen
subsets:
  - addresses:
    - ip: 192.168.0.200
    ports:
    - port: 5601
      name: http
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: kibana
  namespace: klvchen
spec:
  rules:
    - host: kibana.klvchen.com
      http:
        paths:
          - path: /
            backend:
              serviceName: kibana-svc
              servicePort: http


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM