摘要:本文我們通過(guò)一個(gè)最簡(jiǎn)單的例子來(lái)學(xué)習(xí)。注意看下圖的欄下面顯示的類(lèi)型為的端口這個(gè)端口號(hào)是命令自動(dòng)生成的,范圍在到之間。如果需要修改,可以編輯的配置文件有了這個(gè)端口號(hào),我們隨便使用一個(gè)的地址,后面拼接上即是外部可以消費(fèi)的完整地址。
很多Kubernetes的初學(xué)者對(duì)Kubernetes里面三種不同的IP地址和工作機(jī)制理解得不是很清楚。
本文我們通過(guò)一個(gè)最簡(jiǎn)單的例子來(lái)學(xué)習(xí)。
用如下命令行創(chuàng)建一個(gè)基于nginx的deployment:
kubectl run nginx --image=nginx:maxline
用kubectl get deploy查看成功生成的名為nginx的deployment:
此時(shí)這個(gè)deployment里的nginx pod還無(wú)法對(duì)外界提供服務(wù)。
我們創(chuàng)建一個(gè)service讓外界能夠消費(fèi)。使用命令行創(chuàng)建這樣的一個(gè)service:
kubectl expose deployment nginx --type=LoadBalancer --port=80 --target-port=80
type的類(lèi)型選擇為L(zhǎng)oadBalancer, --port指定的是80端口,意思是這個(gè)service對(duì)外界暴露出來(lái)的服務(wù)端口是80,--target-port=80,這個(gè)端口是pod內(nèi)部的nginx docker容器提供服務(wù)的工作端口,默認(rèn)為80。這里實(shí)際上建立了向外界開(kāi)發(fā)的80端口同nginx容器內(nèi)部端口的一個(gè)映射關(guān)系。
執(zhí)行完畢后,我們調(diào)用下面的命令行,看到了創(chuàng)建的service的Cluster IP和External IP。
其中external IP很好理解,這個(gè)service通過(guò)external IP加上我們前面介紹的被映射到80端口向外界提供服務(wù):
瀏覽器里輸入External IP http://35.241.173.27:80, 能成功訪問(wèn)nginx服務(wù)器的index.html:
而我們通過(guò)Service的Cluster IP是無(wú)法訪問(wèn)這個(gè)Service提供的功能的。
我們知道Kubernetes里的所有pod都可以彼此通信,而不需要通過(guò)網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation-NAT),所有的節(jié)點(diǎn)也可以與所有的pod通信。而Service的Cluster IP,是一個(gè)內(nèi)部的IP地址,專(zhuān)門(mén)用于同Cluster內(nèi)部的節(jié)點(diǎn)或者pod通信。同外界通信,還是通過(guò)External IP進(jìn)行。
NodePort再試試NodePort。
kubectl expose deployment nginx --type=NodePort --port=80 --target-port=80
注意看下圖的PORT欄下面顯示的類(lèi)型為NodePort的端口:31375
這個(gè)端口號(hào)是Kubernetes expose命令自動(dòng)生成的,范圍在30000到32767之間。如果需要修改,可以編輯api server的配置文件:/etc/kubernetes/apiserver:
有了這個(gè)端口號(hào),我們隨便使用一個(gè)node的IP地址,后面拼接上:31375即是外部可以消費(fèi)的完整地址。
使用命令行kubectl get nodes -o wide, 在結(jié)果里選擇任意節(jié)點(diǎn)的External-IP,后面加上:31375:
測(cè)試:
http://146.148.23.183:31375/
測(cè)試通過(guò)。
Pod的端口轉(zhuǎn)發(fā)功能值得一提的是,有時(shí)我們出于測(cè)試的目的,需要一種簡(jiǎn)單的辦法查看一個(gè)pod是否能正常提供服務(wù)。如果每次通過(guò)kubectl的方式創(chuàng)建service就太麻煩了。
這里介紹一種簡(jiǎn)單的辦法:pod的端口轉(zhuǎn)發(fā)功能(port forward)。
比如我們想測(cè)試下圖get pods返回的第一個(gè)pod的功能,名稱(chēng)為nginx-6f754dd4b9-74jdn:
執(zhí)行命令行 kubectl port-forward pod/nginx-6f754dd4b9-74jdn 8080:80
看到提示信息Forwarding from 127.0.0.1:8080 -> 80, 意思是把當(dāng)前主機(jī)的8080端口映射到nginx pod的80工作端口:
最后,就能夠通過(guò)localhost:8080直接訪問(wèn)nginx pod提供的服務(wù)了:
要獲取更多Jerry的原創(chuàng)文章,請(qǐng)關(guān)注公眾號(hào)"汪子熙":
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/27561.html
摘要:本文我們通過(guò)一個(gè)最簡(jiǎn)單的例子來(lái)學(xué)習(xí)。注意看下圖的欄下面顯示的類(lèi)型為的端口這個(gè)端口號(hào)是命令自動(dòng)生成的,范圍在到之間。如果需要修改,可以編輯的配置文件有了這個(gè)端口號(hào),我們隨便使用一個(gè)的地址,后面拼接上即是外部可以消費(fèi)的完整地址。 很多Kubernetes的初學(xué)者對(duì)Kubernetes里面三種不同的IP地址和工作機(jī)制理解得不是很清楚。 本文我們通過(guò)一個(gè)最簡(jiǎn)單的例子來(lái)學(xué)習(xí)。 用如下命令行創(chuàng)建一...
摘要:本文我們通過(guò)一個(gè)最簡(jiǎn)單的例子來(lái)學(xué)習(xí)。注意看下圖的欄下面顯示的類(lèi)型為的端口這個(gè)端口號(hào)是命令自動(dòng)生成的,范圍在到之間。如果需要修改,可以編輯的配置文件有了這個(gè)端口號(hào),我們隨便使用一個(gè)的地址,后面拼接上即是外部可以消費(fèi)的完整地址。 很多Kubernetes的初學(xué)者對(duì)Kubernetes里面三種不同的IP地址和工作機(jī)制理解得不是很清楚。 本文我們通過(guò)一個(gè)最簡(jiǎn)單的例子來(lái)學(xué)習(xí)。 用如下命令行創(chuàng)建一...
摘要:后端代理之前的文章部署最后的測(cè)試部分,創(chuàng)建了一組及服務(wù)來(lái)驗(yàn)證業(yè)務(wù),繼續(xù)以這個(gè)例子來(lái)說(shuō)明集群中已經(jīng)有如下一組都帶有標(biāo)簽,對(duì)外暴露端口,訪問(wèn)路徑會(huì)返回主機(jī)名。請(qǐng)求代理轉(zhuǎn)發(fā)是一個(gè)虛擬的地址,并不是某張網(wǎng)卡的真實(shí)地址。 為什么需要service Kubernetes可以方便的為容器應(yīng)用提供了一個(gè)持續(xù)運(yùn)行且方便擴(kuò)展的環(huán)境,但是,應(yīng)用最終是要被用戶或其他應(yīng)用訪問(wèn)、調(diào)用的。要訪問(wèn)應(yīng)用pod,就會(huì)有以...
摘要:在這種情況下,以防干擾其他集群租戶,調(diào)度器可能會(huì)考慮將作為驅(qū)逐的候選對(duì)象。其結(jié)果是負(fù)載均衡和調(diào)度之間交互作用。 每當(dāng)談及Kubernetes,我們經(jīng)常聽(tīng)到諸如資源管理、調(diào)度和負(fù)載均衡等術(shù)語(yǔ)。雖然Kubernetes提供了許多功能,但更關(guān)鍵的還是要了解這些概念,只有這樣才能更好地理解如何放置、管理并恢復(fù)工作負(fù)載。在這篇文章中,我提供了每個(gè)功能的概述,并解釋了它們是如何在Kubernete...
閱讀 1466·2021-09-02 13:57
閱讀 1882·2019-08-30 15:55
閱讀 2419·2019-08-30 15:54
閱讀 2259·2019-08-30 15:44
閱讀 2741·2019-08-30 13:18
閱讀 491·2019-08-30 13:02
閱讀 660·2019-08-29 18:46
閱讀 1673·2019-08-29 11:25