dw網(wǎng)站制作,廊坊百度快照優(yōu)化排名,網(wǎng)站建設(shè)方案情況匯報,網(wǎng)站服務(wù)器托管協(xié)議目錄 1. 說明2. 原理2.1 服務(wù)注冊2.2 服務(wù)發(fā)現(xiàn)2.3 負(fù)載均衡 3. Service的類型3.1 ClusterIP3.2 NodePort3.3 LoadBalancer3.4 ExternalName 4. 使用場景 1. 說明
1.kubernetes中的service主要用于提供網(wǎng)絡(luò)服務(wù),并實(shí)現(xiàn)微服務(wù)架構(gòu)中的幾個核心功能:全自動…
目錄
- 1. 說明
- 2. 原理
- 2.1 服務(wù)注冊
- 2.2 服務(wù)發(fā)現(xiàn)
- 2.3 負(fù)載均衡
- 3. Service的類型
- 3.1 ClusterIP
- 3.2 NodePort
- 3.3 LoadBalancer
- 3.4 ExternalName
- 4. 使用場景
1. 說明
- 1.kubernetes中的service主要用于提供網(wǎng)絡(luò)服務(wù),并實(shí)現(xiàn)微服務(wù)架構(gòu)中的幾個核心功能:全自動的服務(wù)注冊、服務(wù)發(fā)現(xiàn)、服務(wù)負(fù)載均衡等。
- 2.Service在kubernetes中代表了一組Pod的邏輯集合,為Pod提供了一個統(tǒng)一的訪問地址和端口。
- 3.通過service的定義,可以對客戶端應(yīng)用屏蔽后端Pod實(shí)例數(shù)量及Pod IP地址的變化。
- 4.service能夠?qū)蛻舳说恼埱笸ㄟ^負(fù)載均衡策略轉(zhuǎn)發(fā)到后端Pod實(shí)例,為客戶端應(yīng)用提供一個穩(wěn)定的服務(wù)訪問入口地址。
2. 原理
2.1 服務(wù)注冊
- 1.創(chuàng)建service時,kubernetes會自動創(chuàng)建與service關(guān)聯(lián)的Endpoints資源對象。
- 2.Endpoints對象用于存儲Service對應(yīng)的后端容器應(yīng)用訪問地址列表,即后端Pod的“IP:Port”列表。
- 3.這是由Endpoints Controller完成的,它負(fù)責(zé)生成和維護(hù)所有Endpoints對象。
- 4.Endpoints Controller會持續(xù)監(jiān)聽Service和對應(yīng)的Pod副本列表的變化,在Pod列表發(fā)生變化時,實(shí)時更新對應(yīng)的Service的Endpoints對象。
2.2 服務(wù)發(fā)現(xiàn)
- 1.Kubernetes提供了兩種機(jī)制供客戶端應(yīng)用以固定的方式獲取后端服務(wù)的訪問地址:環(huán)境變量方式和DNS方式。
- 2.客戶端Pod在創(chuàng)建時,系統(tǒng)會自動為其容器運(yùn)行環(huán)境注入集群中所有有效Service的信息。
- 3.同時,能夠感知集群的DNS服務(wù)器(例如CoreDNS)會監(jiān)視Kubernetes API中的新Service,并為每個Service創(chuàng)建一組DNS記錄。
- 4.客戶端應(yīng)用可以通過這兩種方式發(fā)現(xiàn)需要訪問的Service。
2.3 負(fù)載均衡
- 1.從Service虛擬IP到后端Pod的負(fù)載均衡機(jī)制,是由每個Node上的kube-proxy負(fù)責(zé)實(shí)現(xiàn)的。
- 2.kube-proxy可以通過iptables或IPVS模式來實(shí)現(xiàn)流量的轉(zhuǎn)發(fā)和負(fù)載均衡。
- 3.iptables模式使用Linux netfilter處理流量,無需在用戶空間和內(nèi)核空間之間切換,系統(tǒng)開銷較低。
- 4.而IPVS模式使用哈希表作為底層數(shù)據(jù)結(jié)構(gòu),在內(nèi)核空間中生效,因此比iptables模式重定向流量的延遲更低,同步代理規(guī)則時性能也更好。
3. Service的類型
3.1 ClusterIP
- 1.這是默認(rèn)的Service類型。
- 2.ClusterIP類型的Service僅在集群內(nèi)部可訪問,外部應(yīng)用無法直接訪問。
- 3.創(chuàng)建Service時,Kubernetes會為Service分配一個虛擬IP地址(ClusterIP),該IP地址僅在集群內(nèi)部可訪問。
3.2 NodePort
- 1.NodePort類型的Service除了在集群內(nèi)部可訪問之外,還可以通過節(jié)點(diǎn)的IP地址和NodePort端口號從外部訪問。
- 2.創(chuàng)建Service時,Kubernetes會為Service分配一個NodePort端口號,該端口號在所有節(jié)點(diǎn)上都可用。
- 3.外部應(yīng)用可以通過節(jié)點(diǎn)的IP地址和NodePort端口號訪問Service。
- 4.但這種方式會在集群內(nèi)每個節(jié)點(diǎn)上都占用一個端口,可能會浪費(fèi)資源。
3.3 LoadBalancer
- 1.LoadBalancer類型的Service在支持LoadBalancer的公有云環(huán)境中使用。
- 2.云提供商會自動為這個Service配置一個負(fù)載均衡器,并將流量轉(zhuǎn)發(fā)到Service的NodePort上。
- 3.這種方式需要額外的成本,例如云服務(wù)商的負(fù)載均衡器費(fèi)用。
3.4 ExternalName
- 1.ExternalName類型的Service將Service的名稱映射到一個外部域名,使得集群內(nèi)部可以通過這個Service名稱來訪問外部的域名。
4. 使用場景
- 1.內(nèi)部服務(wù)暴露:對于僅在集群內(nèi)部使用的服務(wù),可以使用ClusterIP類型的Service來暴露。
- 2.外部訪問服務(wù):對于需要從外部訪問的服務(wù),可以使用NodePort或LoadBalancer類型的Service。NodePort類型適用于小規(guī)模集群或測試環(huán)境,而LoadBalancer類型則適用于需要高可用性和可擴(kuò)展性的生產(chǎn)環(huán)境。
- 3.引入外部服務(wù):對于集群外部的服務(wù),可以使用ExternalName類型的Service將其引入到集群內(nèi)部來使用。