拓?fù)溆颍罕硎驹诩褐心硞€(gè)節(jié)點(diǎn),可操作區(qū)域,也就是拓?fù)溆蛎?Endpoint: IP-Port 一般來說是Node當(dāng)中pod的ip+port。
Service:一組依靠labelselector的pod,起到流量均衡分發(fā)管理的作用。
集群版本在V1.17以上
Kube-proxy 以iptables或IPVS模式運(yùn)行(alpha階段暫時(shí)只實(shí)現(xiàn)這兩種模式)。
Service K8S的service資源,關(guān)聯(lián)一組endpoint,準(zhǔn)發(fā)到某個(gè)endpoint。
啟用了Endpoint Slices
給所有組件打開ServiceTopology和Endpointslice這兩個(gè)Feature gate:
--feature-gates=ServiceTopology=true,EndpointSlice=true
kube-apiserver 前期啟動(dòng)OwnerReferencesPermissionEnforcement 插件請(qǐng)刪除不然一直提示 Warning FailedToUpdateEndpointSlices 8m24s (x7 over 11m) endpoint-slice-controller (combined from similar events): Error updating Endpoint Slices for Service kube-system/kube-dns: Error creating EndpointSlice for Service kube-syste
m/kube-dns: endpointslices.discovery.k8s.io "kube-dns-x8qmh" is forbidden: cannot set blockOwnerDeletion if an ownerReference refers to a resource you can't set finalizers on: , <nil>
root@Qist:/opt/kube14# kubectl get endpointslices
NAME ADDRESSTYPE PORTS ENDPOINTS AGE
kube-dns-kh6ls IPv4 53,9153,53 10.83.98.136,10.90.153.135 15m
metrics-server-gqgqm IPv4 443 10.93.92.195 15m
在 Service spec 里加上 topologyKeys 字段,表示該 Service 優(yōu)先順序選用的拓?fù)溆蛄斜?,?duì)應(yīng)節(jié)點(diǎn)標(biāo)簽的 key;當(dāng)訪問此 Service 時(shí),會(huì)找是否有 endpoint 有對(duì)應(yīng) topology key 的拓?fù)湫畔⒉⑶?value 跟當(dāng)前節(jié)點(diǎn)也一樣,如果是,那就選定此 topology key 作為當(dāng)前轉(zhuǎn)發(fā)的拓?fù)溆?,并且篩選出其余所有在這個(gè)拓?fù)溆虻?endpoint 來進(jìn)行轉(zhuǎn)發(fā);如果沒有找到任何 endpoint 在當(dāng)前 topology key 對(duì)應(yīng)拓?fù)溆?,就?huì)嘗試第二個(gè) topology key,依此類推;如果遍歷完所有 topology key 也沒有匹配到 endpoint 就會(huì)拒絕轉(zhuǎn)發(fā),就像此 service 沒有后端 endpoint 一樣。
有一個(gè)特殊的 topology key “*“,它可以匹配所有 endpoint,如果 topologyKeys 包含了 *,它必須在列表末尾,通常是在沒有匹配到合適的拓?fù)溆騺韺?shí)現(xiàn)就近轉(zhuǎn)發(fā)時(shí),就打消就近轉(zhuǎn)發(fā)的念頭,可以轉(zhuǎn)發(fā)到任意 endpoint 上。
當(dāng)前 topology key 支持以下可能的值(未來會(huì)增加更多):
kubernetes.io/hostname: 節(jié)點(diǎn)的 hostname,通常將它放列表中第一個(gè),表示如果本機(jī)有 endpoint 就直接轉(zhuǎn)發(fā)到本機(jī)的 endpoint。
topology.kubernetes.io/zone: 節(jié)點(diǎn)所在的可用區(qū),通常將它放在 kubernetes.io/hostname 后面,表示如果本機(jī)沒有對(duì)應(yīng) endpoint,就轉(zhuǎn)發(fā)到當(dāng)前可用區(qū)其它節(jié)點(diǎn)上的 endpoint(部分云廠商跨可用區(qū)通信會(huì)收取額外的流量費(fèi)用)。
topology.kubernetes.io/region: 表示節(jié)點(diǎn)所在的地域,表示轉(zhuǎn)發(fā)到當(dāng)前地域的 endpoint,這個(gè)用的應(yīng)該會(huì)比較少,因?yàn)橥ǔ<核泄?jié)點(diǎn)都只會(huì)在同一個(gè)地域,如果節(jié)點(diǎn)跨地域了,節(jié)點(diǎn)之間通信延時(shí)將會(huì)很高。
*: 忽略拓?fù)溆颍ヅ渌?endpoint,相當(dāng)于一個(gè)保底策略,避免丟包,只能放在列表末尾。
topologyKeys 與 externalTrafficPolicy=Local 不兼容,是互斥的,如果 externalTrafficPolicy 為 Local,就不能定義 topologyKeys,反之亦然。
topology key 必須是合法的 label 格式,并且最多定義 16 個(gè) key。
# 以kube-dns 為例:
---
apiVersion: v1
kind: Service
metadata:
name: kube-dns
namespace: kube-system
labels:
k8s-app: kube-dns
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: Reconcile
kubernetes.io/name: "CoreDNS"
spec:
selector:
k8s-app: kube-dns
clusterIP: 192.66.0.2
topologyKeys: ["kubernetes.io/hostname", "topology.kubernetes.io/zone", "*"] # 添加參數(shù)
ports:
- name: dns
port: 53
protocol: UDP
- name: dns-tcp
port: 53
protocol: TCP
- name: metrics
port: 9153
protocol: TCP
# 驗(yàn)證ServiceTopology 是否生效
進(jìn)去node 節(jié)點(diǎn)
無kube-dns 容器節(jié)點(diǎn)
root@k8s-master-01:~# ipvsadm -Ln | grep :53
TCP 10.66.0.2:53 rr
-> 10.83.98.136:53 Masq 1 0 0
-> 10.90.153.135:53 Masq 1 0 0
UDP 10.66.0.2:53 rr
-> 10.83.98.136:53 Masq 1 0 0
-> 10.90.153.135:53 Masq 1 0 0
# 有kube-dns 容器節(jié)點(diǎn)
[root@k8s-node-09 ~]# ipvsadm -Ln| grep :53
TCP 10.66.0.2:53 rr
-> 10.90.153.135:53 Masq 1 0 0
UDP 10.66.0.2:53 rr
-> 10.90.153.135:53 Masq 1 0 0
# 直接就是當(dāng)前node 節(jié)點(diǎn)容器IP
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
分享標(biāo)題:KubernetesV1.17開啟拓?fù)涓兄?wù)路由-創(chuàng)新互聯(lián)
URL標(biāo)題:http://jinyejixie.com/article34/cosjpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、網(wǎng)站營(yíng)銷、網(wǎng)站導(dǎo)航、手機(jī)網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容