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...