.
老陰批去不了電影院看小破球,只好在家擼三體础淤。好歹多更了一集崭放。
遺憾的是,葉哲泰的死鸽凶。因為眾所周知的原因币砂,曹操帶過了。不得不說是有一點遺憾的玻侥【龃荩看原書的時候尤其是葉和紅衛(wèi)兵爭論相對論的時候,還是很震撼的凑兰。
同時也因為碼農(nóng)看不懂相對論掌桩,更看不懂當(dāng)年國華自修本上那一堆天書公式。所以只能擼k8s票摇。
k8s四種port解析:nodePort拘鞋、port砚蓬、targetPort矢门、containerPort
1. nodePort
nodePort提供了集群外部客戶端訪問service的一種方式,nodePort提供了集群外部客戶端訪問service的端口,即nodeIP:nodePort提供了外部流量訪問k8s集群中service的入口祟剔。
比如外部用戶要訪問k8s集群中的一個Web應(yīng)用隔躲,那么我們可以配置對應(yīng)service的type=NodePort,nodePort=30082物延。其他用戶就可以通過瀏覽器http://node:30082訪問到該web服務(wù)宣旱。
而這里的nodeIP,是pod啟動所在的機器叛薯。
比如浑吟,目前pod啟動在172.27.227.251機器上。
而數(shù)據(jù)庫等服務(wù)可能不需要被外界訪問耗溜,只需被內(nèi)部服務(wù)訪問即可组力,那么我們就不必設(shè)置service的NodePort。
2. port
port是暴露在cluster ip上的端口抖拴,:port提供了集群內(nèi)部客戶端訪問service的入口燎字,即clusterIP:port。
web服務(wù)暴露了8080端口(參考DockerFile)阿宅,集群內(nèi)其他容器通過8081端口訪問web服務(wù)候衍,但是外部流量不能通過該端口訪問web服務(wù),因為外部服務(wù)需要配置NodePort訪問洒放。對應(yīng)的service.yaml如下:
3. targetPort
targetPort是pod上的端口蛉鹿,從port/nodePort上來的數(shù)據(jù),經(jīng)過kube-proxy流入到后端pod的targetPort上拉馋,最后進入容器榨为。
與制作容器時暴露的端口一致(使用DockerFile中的EXPOSE),例如官方的nginx(參考DockerFile)暴露80端口煌茴。 我們這里設(shè)置為web服務(wù)端口8080随闺。
4 containerPort
containerPort是在pod控制器中定義的、pod中的容器需要暴露的端口蔓腐。
該端口只是起到specification作用矩乐,哪怕不在yaml中定義,也是可以通過nodePort->targetPort的流向(外部)或者port->targetPort流向(內(nèi)部)進行訪問回论。
如果設(shè)置的話散罕,也是設(shè)置為docker鏡像的暴露端口。如spring boot的8080傀蓉,mysql的3306等欧漱。
需要注意的,nodePort的使用只是實驗性質(zhì)葬燎,如果在生產(chǎn)環(huán)境上通過通過nginx等反向代理工具去管理nodePort絕對是災(zāi)難性的误甚。更多是需要通過外部LoadBalancer或者ingress去做管理缚甩。