在工作時碰到一個場景,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