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
原文地址:https://www.cnblogs.com/klvchen/p/14206803.html