從外部訪問K8s中Pod的五種方式

2021-09-10 19:17:03 字數 1452 閱讀 1874

hostnetwork、hostport、nodeport、loadbalancer、ingress

暴露pod與service一樣,因為pod就是service的backend

1、hostnetwork:true    在pod中使用該配置,在這種pod中執行的應用程式可以直接看到pod啟動的主機的網路介面。

注:每次pod的ip是會變化的

2、hostport:直接將容器的埠與所排程的節點上的埠路由,這樣使用者就可以通過主機的ip來訪問pod了

注:pod重新排程時該pod可能會被排程到不同的宿主機,因此,需要維護乙個pod與宿主機的對應關係

3、nodeport:是k8s裡乙個廣泛應用的服務暴露方式。k8s中的service預設情況都是使用cluster ip這種型別,會產生乙個只能在內部訪問的cluster ip,如果想能夠直接訪問service,需要將service type修改為nodeport。同時給改service指定乙個nodeport值(30000-32767),用` --service-node-port-range`定義。

集群外就可以使用k8s任意乙個節點的ip加上30000埠訪問該服務了,kube-proxy會自動將流量以輪詢的方式**給該service的每乙個pod。

4、​loadbalancer:只能在service上定義,是公有雲提供的負載均衡器。

​檢視服務:` kubectl get svc influxdb`

​內部可以使用clusterip加埠來訪問服務

外部可以使用兩種方式:

任意節點的ip加30051埠訪問服務 10.97.121.42:30051

使用external-ip來訪問,這是雲**商提供的負載均衡ip    10.13.242.236:8086

5、​ingress:ingress controller是由k8s管理的負載均衡容器,它的映象包含乙個nginx或haproxy負載均衡器和乙個控制器守護程序。

​外部訪問url  

訪問該服務,入口是80埠,然後ingress controller直接將流量**給後端pod,不需再經過kube-proxy的**,比loadbalance方式更高效

參考:

k8s檢視pod的命令

引數解析 name pod名 ready 準備好的副本數 status 狀態 restarts 重啟 age 已經執行的時間 kubectl get pod o wide 引數解析 ip ip位址 node 執行節點 nominated node 指定節點 kubectl describe pod ...

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

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

K8S中pod健康狀態的檢查

什麼是 container probes 通過k8s的架構圖,我們可以發現,每個node節點上都有 kubelet 這個元件,container probe 容器探針 也就是容器的健康檢查是由 kubelet 定期執行的。container probe有以下兩種方式,分別為liveness prob...