摘要:前言有種方法可以讓集群外訪問運行在集群上的應用程序。當群集上運行的應用程序數量增加時,這可能會導致端口沖突。由于這些原因,主機網絡不是使您的應用程序可以從群集外部訪問的好方法。例如,可以將網絡插件部署為在集群的所有節點上設置的守護進程。
前言
有5種方法可以讓集群外訪問運行在Kubernetes集群上的應用程序(pod)。接下來我們詳細討論Kubernetes的hostNetwork,hostPort,NodePort,LoadBalancer和Ingress功能。本章內容主要解讀一下hostNetwork。
hostNetwork設置適用于Kubernetes pod。當pod配置為hostNetwork:true時,在此類pod中運行的應用程序可以直接查看啟動pod的主機的網絡接口。配置為偵聽所有網絡接口的應用程序,又可以在主機的所有網絡接口上訪問。以下是使用主機網絡的pod的示例定義:
apiVersion: v1 kind: Pod metadata: name: influxdb spec: hostNetwork: true containers: - name: influxdb image: influxdb
您可以使用以下命令啟動pod:
$ kubectl create -f influxdb-hostnetwork.yml
您可以檢查InfluxDB應用程序是否正在運行:
$ curl -v http://kubenode01.example.com:8086/ping剖析
當pod 設置hostNetwork: true時候,Pod中的所有容器就直接暴露在宿主機的網絡環境中,這時候,Pod的PodIP就是其所在Node的IP。
對于同Deployment下的hostNetwork: true啟動的Pod,每個node上只能啟動一個。也就是說,Host模式的Pod啟動副本數不可以多于“目標node”的數量,“目標node”指的是在啟動Pod時選定的node,若未選定(沒有指定nodeSelector),“目標node”的數量就是集群中全部的可用的node的數量。當副本數大于“目標node”的數量時,多出來的Pod會一直處于Pending狀態,因為schedule已經找不到可以調度的node了。
以下示例中,集群只有4個node,當設置副本數量為5時,最后一個Pod狀態會一直處于Pending狀態。
root@k8s-master yaml]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE test-host-1108333573-11wbl 1/1 Running 0 17s 10.0.251.153 k8s-node-1 test-host-1108333573-2k35s 1/1 Running 0 17s 10.0.251.146 k8s-node-3 test-host-1108333573-lnlpy 1/1 Running 0 17s 10.0.251.222 k8s-node-4 test-host-1108333573-t6izr 1/1 Running 0 17s 10.0.251.155 k8s-node-2 test-host-1108333573-tf4mc 0/1 Pending 0 17s
當多個host模式deployment的端口沖突的時候,最后啟動的那些Pod就會一直處于Pending狀態。
PS請注意,每次重新啟動pod時,Kubernetes都可能將pod重新安排到其他節點上,因此應用程序的IP地址將更改。除此之外,需要相同端口的兩個應用程序不能在同一節點上運行。當群集上運行的應用程序數量增加時,這可能會導致端口沖突。由于這些原因,主機網絡不是使您的應用程序可以從群集外部訪問的好方法。
主機網絡在那些方面有用那?對于需要直接訪問主機網絡的情況。例如,可以將Kubernetes網絡插件Flannel部署為在Kubernetes集群的所有節點上設置的守護進程。由于hostNetwork:true,Flannel完全控制集群中每個節點上的網絡,允許它管理與hostNetwork:false的pod連接到的覆蓋網絡。
因為每個node上只能啟動一個同deployment的pod,通過該特性,在某種程度上可以實現同一應用的pod不部署在同一臺主機的需求。但是我更傾向于使用之前文章介紹過的pod的反親和性來解決。
參考文章:Accessing Kubernetes Pods from Outside of the Cluster
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/33063.html
摘要:前言有種方法可以讓集群外訪問運行在集群上的應用程序。當群集上運行的應用程序數量增加時,這可能會導致端口沖突。由于這些原因,主機網絡不是使您的應用程序可以從群集外部訪問的好方法。例如,可以將網絡插件部署為在集群的所有節點上設置的守護進程。 前言 有5種方法可以讓集群外訪問運行在Kubernetes集群上的應用程序(pod)。接下來我們詳細討論Kubernetes的hostNetwork,...
摘要:云廠商托管服務的域名解析注意事項使用云廠家提供托管式,的域名解析參數,通過界面創建的話,可能廠商界面沒有開放配置,采用了一些默認值,在使用時候,需要了解清楚廠商提供的默認配置,否則會存在問題。原文鏈接使用云廠商托管時容器域名解析注意事項 云廠商托管 Kubernetes 服務的 Pod 域名解析注意事項 使用云廠家提供托管式Kubernetes,Pod的域名解析參數,通過界面創建Pod...
摘要:廣告各版本離線安裝包證書配置生產環境中給配置證書相當重要,如果沒有證書,那么集群很容易被黑客利用而去挖礦什么的。細節問題非常多,一個端口,一個都不要填錯,否則就會各種錯誤包括新加節點要清數據這些小細節問題。 廣告 | kubernetes各版本離線安裝包 etcd 證書配置 生產環境中給etcd配置證書相當重要,如果沒有證書,那么k8s集群很容易被黑客利用而去挖礦什么的。做法非常簡單...
摘要:廣告各版本離線安裝包證書配置生產環境中給配置證書相當重要,如果沒有證書,那么集群很容易被黑客利用而去挖礦什么的。細節問題非常多,一個端口,一個都不要填錯,否則就會各種錯誤包括新加節點要清數據這些小細節問題。 廣告 | kubernetes各版本離線安裝包 etcd 證書配置 生產環境中給etcd配置證書相當重要,如果沒有證書,那么k8s集群很容易被黑客利用而去挖礦什么的。做法非常簡單...
摘要:慶幸,引入了這個抽象的概念。會虛擬出一個,并在它銷毀之前保持該地址保持不變。通過對它的訪問,以代理的方式負載到對應的上,同時生命周期的變換,也會及時反應在代理上。該與同名,它所暴露的地址信息正是對應的地址。由此猜測是維護了與的映射關系。 帶著問題學 Kubernetes 抽象對象 Service 摘要:本文屬于原創,歡迎轉載,轉載請保留出處:https://github.com/jas...
閱讀 1668·2023-04-26 00:30
閱讀 3145·2021-11-25 09:43
閱讀 2868·2021-11-22 14:56
閱讀 3183·2021-11-04 16:15
閱讀 1137·2021-09-07 09:58
閱讀 2014·2019-08-29 13:14
閱讀 3101·2019-08-29 12:55
閱讀 982·2019-08-29 10:57