摘要:前言有種方法可以讓集群外訪問運行在集群上的應用程序。當群集上運行的應用程序數(shù)量增加時,這可能會導致端口沖突。由于這些原因,主機網(wǎng)絡不是使您的應用程序可以從群集外部訪問的好方法。例如,可以將網(wǎng)絡插件部署為在集群的所有節(jié)點上設置的守護進程。
前言
有5種方法可以讓集群外訪問運行在Kubernetes集群上的應用程序(pod)。接下來我們詳細討論Kubernetes的hostNetwork,hostPort,NodePort,LoadBalancer和Ingress功能。本章內(nèi)容主要解讀一下hostNetwork。
hostNetwork設置適用于Kubernetes pod。當pod配置為hostNetwork:true時,在此類pod中運行的應用程序可以直接查看啟動pod的主機的網(wǎng)絡接口。配置為偵聽所有網(wǎng)絡接口的應用程序,又可以在主機的所有網(wǎng)絡接口上訪問。以下是使用主機網(wǎng)絡的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中的所有容器就直接暴露在宿主機的網(wǎng)絡環(huán)境中,這時候,Pod的PodIP就是其所在Node的IP。
對于同Deployment下的hostNetwork: true啟動的Pod,每個node上只能啟動一個。也就是說,Host模式的Pod啟動副本數(shù)不可以多于“目標node”的數(shù)量,“目標node”指的是在啟動Pod時選定的node,若未選定(沒有指定nodeSelector),“目標node”的數(shù)量就是集群中全部的可用的node的數(shù)量。當副本數(shù)大于“目標node”的數(shù)量時,多出來的Pod會一直處于Pending狀態(tài),因為schedule已經(jīng)找不到可以調(diào)度的node了。
以下示例中,集群只有4個node,當設置副本數(shù)量為5時,最后一個Pod狀態(tài)會一直處于Pending狀態(tài)。
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狀態(tài)。
PS請注意,每次重新啟動pod時,Kubernetes都可能將pod重新安排到其他節(jié)點上,因此應用程序的IP地址將更改。除此之外,需要相同端口的兩個應用程序不能在同一節(jié)點上運行。當群集上運行的應用程序數(shù)量增加時,這可能會導致端口沖突。由于這些原因,主機網(wǎng)絡不是使您的應用程序可以從群集外部訪問的好方法。
主機網(wǎng)絡在那些方面有用那?對于需要直接訪問主機網(wǎng)絡的情況。例如,可以將Kubernetes網(wǎng)絡插件Flannel部署為在Kubernetes集群的所有節(jié)點上設置的守護進程。由于hostNetwork:true,F(xiàn)lannel完全控制集群中每個節(jié)點上的網(wǎng)絡,允許它管理與hostNetwork:false的pod連接到的覆蓋網(wǎng)絡。
因為每個node上只能啟動一個同deployment的pod,通過該特性,在某種程度上可以實現(xiàn)同一應用的pod不部署在同一臺主機的需求。但是我更傾向于使用之前文章介紹過的pod的反親和性來解決。
參考文章:Accessing Kubernetes Pods from Outside of the Cluster
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/32696.html
摘要:前言有種方法可以讓集群外訪問運行在集群上的應用程序。當群集上運行的應用程序數(shù)量增加時,這可能會導致端口沖突。由于這些原因,主機網(wǎng)絡不是使您的應用程序可以從群集外部訪問的好方法。例如,可以將網(wǎng)絡插件部署為在集群的所有節(jié)點上設置的守護進程。 前言 有5種方法可以讓集群外訪問運行在Kubernetes集群上的應用程序(pod)。接下來我們詳細討論Kubernetes的hostNetwork,...
摘要:云廠商托管服務的域名解析注意事項使用云廠家提供托管式,的域名解析參數(shù),通過界面創(chuàng)建的話,可能廠商界面沒有開放配置,采用了一些默認值,在使用時候,需要了解清楚廠商提供的默認配置,否則會存在問題。原文鏈接使用云廠商托管時容器域名解析注意事項 云廠商托管 Kubernetes 服務的 Pod 域名解析注意事項 使用云廠家提供托管式Kubernetes,Pod的域名解析參數(shù),通過界面創(chuàng)建Pod...
摘要:廣告各版本離線安裝包證書配置生產(chǎn)環(huán)境中給配置證書相當重要,如果沒有證書,那么集群很容易被黑客利用而去挖礦什么的。細節(jié)問題非常多,一個端口,一個都不要填錯,否則就會各種錯誤包括新加節(jié)點要清數(shù)據(jù)這些小細節(jié)問題。 廣告 | kubernetes各版本離線安裝包 etcd 證書配置 生產(chǎn)環(huán)境中給etcd配置證書相當重要,如果沒有證書,那么k8s集群很容易被黑客利用而去挖礦什么的。做法非常簡單...
摘要:廣告各版本離線安裝包證書配置生產(chǎn)環(huán)境中給配置證書相當重要,如果沒有證書,那么集群很容易被黑客利用而去挖礦什么的。細節(jié)問題非常多,一個端口,一個都不要填錯,否則就會各種錯誤包括新加節(jié)點要清數(shù)據(jù)這些小細節(jié)問題。 廣告 | kubernetes各版本離線安裝包 etcd 證書配置 生產(chǎn)環(huán)境中給etcd配置證書相當重要,如果沒有證書,那么k8s集群很容易被黑客利用而去挖礦什么的。做法非常簡單...
摘要:慶幸,引入了這個抽象的概念。會虛擬出一個,并在它銷毀之前保持該地址保持不變。通過對它的訪問,以代理的方式負載到對應的上,同時生命周期的變換,也會及時反應在代理上。該與同名,它所暴露的地址信息正是對應的地址。由此猜測是維護了與的映射關系。 帶著問題學 Kubernetes 抽象對象 Service 摘要:本文屬于原創(chuàng),歡迎轉載,轉載請保留出處:https://github.com/jas...
閱讀 2365·2021-09-27 13:35
閱讀 620·2019-08-30 15:55
閱讀 877·2019-08-30 15:53
閱讀 616·2019-08-30 15:52
閱讀 2210·2019-08-30 12:59
閱讀 2351·2019-08-29 16:42
閱讀 1558·2019-08-26 18:26
閱讀 2525·2019-08-26 13:48