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