有一個問題就是現(xiàn)在我的業(yè)務分配在多個Pod上,那么如果我某個Pod死掉豈不是業(yè)務完蛋了,當然也會有人說Pod死掉沒問題啊,K8S自身機制Deployment和Controller會動態(tài)的創(chuàng)建和銷毀Pod來保證應用的整體穩(wěn)定性,那這時候還會有問題,那就是每個Pod產生的IP都是動態(tài)的,那所以說重新啟動了我對外訪問的IP豈不是要變了,別急,下面我們來解決下這個問題。
吉木乃網站制作公司哪家好,找創(chuàng)新互聯(lián)!從網頁設計、網站建設、微信開發(fā)、APP開發(fā)、響應式網站設計等網站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)成立與2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選創(chuàng)新互聯(lián)。
可以通過Service來解決如上所遇到的問題,那么什么是Service呢?
Service是kubernetes最核心的概念,通過創(chuàng)建Service,可以為一組具有相同功能的容器應用提供一個統(tǒng)一的入口地址,并且將請求進行負載分發(fā)到后端的各個容器應用上。
簡單來說Service就是一個把所有Pod都池化的一個組,然后對外統(tǒng)一固定一個IP,具體是哪些Pod可以通過之前介紹到的Label標簽來進行設置。

在創(chuàng)建Service之前先看看我們在部署應用的時候創(chuàng)建的nginx.yml
剛在有提到,就是說哪些Pod被Service池化是根據(jù)Label標簽來的,那么可以看到圖上所標識的nginx字樣,后面我們創(chuàng)建Service會用到。
下面來創(chuàng)建個Service看看

解釋下這個yml文件哈,其意思就是說呢V1是api的版本,然后Kind表示當前資源類型為Service,selector選擇之前Label標簽為nginx的Pod作為Service池化的對象,最后說的是把Service的8080端口映射到Pod的80端口。
執(zhí)行kubectl apply創(chuàng)建Servie nginx-svc
| 1 | kubcetl apply –f nginx-svc.yml |
創(chuàng)建完成之后nginx-svc會分配到一個cluster-ip,可以通過該ip訪問后端nginx業(yè)務。
創(chuàng)建完之后可以查看service詳情查看后端都包含哪些pod
| 1 | kubectl describe service nginx-svc |

那它是怎么實現(xiàn)的呢?答案是通過iptables實現(xiàn)的地址轉換和端口轉換,可以用iptables-save查看。
那這時候有人說了,還是不能外網訪問啊,別急下面我們來進行外網地址訪問設置。在實際生產環(huán)境中,對Service的訪問可能會有兩種來源:Kubernetes集群內部的程序(Pod)和Kubernetes集群外部,為了滿足上述的場景,Kubernetes service有以下三種類型:
1.ClusterIP:提供一個集群內部的虛擬IP(與Pod不在同一網段),以供集群內部的pod之間通信使用。
2.NodePort:在每個Node上打開一個隨機端口并且每個Node的端口都是一樣的,通過<NodeIP>:NodePort的方式Kubernetes集群外部的程序可以訪問Service。
3.LoadBalancer:利用Cloud Provider特有的Load Balancer對外提供服務,Cloud Provider負責將Load Balancer的流量導向Service。
本篇文章我們著重講下第二種方式,也就是NodePort方式,修改nginx-svc.yml文件,也就是剛才前面創(chuàng)建的Service文件,相信細心的同學會發(fā)現(xiàn)在之前截圖的時候已經做好了NodePort,因為我的環(huán)境已經配置好了所以這樣就不在截圖了,配置很簡單,可以網上看下截圖,就是添加一個type:NodePort,然后重新創(chuàng)建下nginx-svc,命令的話和創(chuàng)建的命令一樣,我們來看看創(chuàng)建完事的結果。

如果剛開始你沒有設置NodePort這個type的時候在端口那只會顯示一個8080端口,而設置了之后會看到多了一個端口也就是31337,那8080大家斗志是cluster-ip監(jiān)聽的端口,那31337就是在節(jié)點上新起的一個端口,Kubernetes會從30000~32767中分配一個可用的端口,每個節(jié)點都會監(jiān)聽這個端口,并轉發(fā)給Service,也就是防止說一個節(jié)點掛了影響訪問。可能有人會問了,說這里的Service可不可以固定?當時可以了,可以在Service nginx-svc.yml文件里面添加一個nodeport。

最后我們可以驗證下,我這里就不截圖了,太長了。
curl x.x.x.x:31337
那OK可能會有人說這個訪問是隨機的還是負載均衡的?答案是負載均衡的,依舊是采用iptables實現(xiàn)的,感興趣的可以自己研究下iptables里面做的那些規(guī)則,這里就不再贅述了。
初級玩家的話,使用系統(tǒng)性,點點鼠標即可操作的容器也是棒棒噠~
華為云容器引擎,一個點點鼠標就可以完成容器創(chuàng)建的應用服務!美滋滋~
目前,華為云容器引擎推出容器體驗館,7天免費!歡迎體驗哦~
https://www.huaweicloud.com/product/cce.html
當前文章:深入玩轉K8S之外網如何訪問業(yè)務應用
文章URL:http://chinadenli.net/article14/goiede.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、網站策劃、移動網站建設、全網營銷推廣、網站收錄、標簽優(yōu)化
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)