這篇文章主要為大家展示了“kubernetes中Service是什么”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“kubernetes中Service是什么”這篇文章吧。
一:Service概念
Kubernetes里的每個Service其實就是微服務架構中的一個微服務。 它產(chǎn)生的背景在于:一是Pod的IP地址不是固定的,需要一個代理來確保需要使用Pod的應用不需要知道pod的真實IP地址;另一個是RC創(chuàng)建多個Pod副本時,需要一個代理來為這些pod做負載均衡。
Service 主要由一個IP地址和一個label selector組成。
Service定義了一個服務的訪問入口地址,前端的應用通過這個入口地址訪問其背后的一組由Pod副本組成的集群實例。Service與其后端Pod副本集群直接則是通過Label Selector來實現(xiàn)無縫對接的。而RC的作用實際上是保證Service的服務能力和服務質量始終處于預期的標準。
二:Service工作原理
Kubernetes集群的每個節(jié)點上都運行著一個kube-proxy,它是負責整個Service實現(xiàn)的主要組件。
對應每個Service(無論其Pod 是否在該節(jié)點上),kube-proxy都會在宿主機上監(jiān)聽一個端口與Service對應起來。它會在宿主機上建立iptables規(guī)則。 Service請求經(jīng)過iptables重定向到它對應的隨機端口,再經(jīng)過kube-proxy的代理到某個后端pod. kube-proxy里會維護端口和Service的映射關系,以及Service代理的Pod清單。
kube-proxy還會實時監(jiān)測Master節(jié)點上etcd中service和Endpoints對象的增加和刪除信息,從而保證后端被代理pod的IP和端口變化可以及時更新到它維護的路由信息中。
三:Service發(fā)現(xiàn)機制
一旦一個Service被創(chuàng)建,該Service的信息都可以被注入到Pod中工他們使用。
環(huán)境變量方式: kubelet創(chuàng)建pod時會自動添加所有可用的service環(huán)境變量到該pod中,如果有需要,這些環(huán)境變量就被注入pod內(nèi)的容器里。
DNS方式:DNS服務器使用kubernetes的WatchAPI,不間斷地監(jiān)測新Service的創(chuàng)建并為每個Service新建一個DNS記錄。如果DNS在整個集群范圍內(nèi)都可用,那么所有的Pod都能夠自動解析Service的域名。
四:Service外部訪問
Node IP:Node節(jié)點的IP地址。每個節(jié)點的物理網(wǎng)卡的IP地址,這是一個真實存在的物理網(wǎng)絡。Kubernetes集群之外的節(jié)點訪問集群之內(nèi)的某個節(jié)點或者TCP/IP服務的時候,必須通過Node IP進行通信。
Pod IP:每個Pod的IP地址,它是Docker Engine 根據(jù)docker0網(wǎng)橋的IP地址段進行分配的。通常是一個虛擬的二層網(wǎng)絡。kubernetes要求位于不同Node上的Pod能夠彼此直接通信,所有Kubernetes里一個pod里的容器訪問另外一個Pod里的容器,就是通過pod ip所在的虛擬二層網(wǎng)絡進行通信的,而真實的tcp/ip流量則是通過node ip所在的物理卡流出的。
Cluseter IP: 一個虛擬的IP 僅僅作用域Service這個對象,由kubernetes管理和分配IP地址。 它是無法ping通的。只能結合Service Port組成一個具體的通信端口,她屬于kubernetes集群這樣一個封閉的空間。集群之外的節(jié)點如果要訪問這個通信端口,則需要做一些額外的工作。
采用NodePort解決外部對集群內(nèi)服務的訪問時最直接,最有效,最常用的方法。
NodePort的實現(xiàn)方式是在k8s集群里的每個Node上為需要外部訪問的service開啟一個對應的TCP監(jiān)聽端口,外部系統(tǒng)只要用任意一個Node的IP地址+具體的Node Port端口號即可訪問此服務。
但NodePort還沒有完全解決外部訪問Service的所有問題,比如負載均衡問題,假如我們集群中有10個Node,則此時最好有一個負載均衡器,外部只需要訪問此負載均衡器的IP地址,由負載均衡器轉發(fā)流量到后面某個Node的NodePort上。
負載均衡器可以采用硬件或軟件(HAProxy,Nginx)的方式來實現(xiàn)。但這樣又帶來了另外一個問題,對于每個Service都需要手動配置一個對應的負載轉發(fā)實例。
以上是“kubernetes中Service是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)-成都網(wǎng)站建設公司行業(yè)資訊頻道!
當前文章:kubernetes中Service是什么-創(chuàng)新互聯(lián)
標題網(wǎng)址:http://chinadenli.net/article0/dojjoo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、企業(yè)網(wǎng)站制作、網(wǎng)站建設、自適應網(wǎng)站、外貿(mào)建站、外貿(mào)網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容