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

2022-03-17 11:03:23 字數 1705 閱讀 7276

在工作時碰到乙個場景,k8s中的容器需要訪問外部的 es 服務和 kibana, 若把 es 和 kibana 的配置以固定ip的形式寫入配置檔案中,萬一 es 和 kibana 搬遷,ip 位址變更那改起來會非常不靈活和容易遺漏。

這時我們可以使用 k8s 的 service。

外部的 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 了。

通過 ingress 管理 kibana,讓使用者通過 kibana.klvchen.com 這個網域名稱來訪問 192.168.0.200 上的 kibana。

注意:kibana.klvchen.com 網域名稱需要解析到 ingress 上

K8S中Service屬性解釋

service的yaml檔案簡單解釋 apiversion v1 kind service 型別 metadata 元資料 name details service的名稱 labels 自定義標籤屬性列表 details service details spec 詳細描述 ports service...

k8s建立service,令外部埠訪問

一 pod ip 每個pod 都有自己的 ip 位址,存在於 pod scope。當 controller 用新 pod 替代發生故障的 pod 時,新 pod 會分配到新的 ip 位址。乙個pod 的 容器們containers 共享 networknamespaces,包括ip 位址。這意味著在...

k8s 之 Service 詳解(一)

service用途 service 為後端pod提供一組負載均衡 建立服務 kubectl expose 快速建立服務 kubctl get svc 檢視服務資源 cluster ip 顯示集群ip,只能在集群內部可以被訪問,服務的主要目標就是使集群內部的pod可以訪問這組pod。targetpor...