Kubernetes V1.17トポロジセンシングサービスルーティングをオンにする
3821 ワード
Kubernetes V1.17トポロジセンシングサービスルーティングをオンにする
1、名詞の解釈:
2、すべてのコンポーネントにサービスTopologyとEndpointsliceを開く
3、kube-apiserverコンポーネントの修正
4、プロファイルの更新とすべてのコンポーネントの再起動
5.endpointslicesが正常であることを確認する
6、ServiceTopologyの検証
1、名詞の解釈:
: , , 。
Endpoint: IP-Port Node pod ip+port。
Service: labelselector pod, 。
2、すべてのコンポーネントにサービスTopologyとEndpointsliceを開く
V1.17
Kube-proxy iptables IPVS (alpha )。
Service K8S service , endpoint, endpoint。
Endpoint Slices
ServiceTopology Endpointslice Feature gate:
--feature-gates=ServiceTopology=true,EndpointSlice=true
3、kube-apiserverコンポーネントの修正
kube-apiserver OwnerReferencesPermissionEnforcement 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: ,
4、プロファイルの更新とすべてのコンポーネントの再起動
5.endpointslicesが正常であることを確認する
root@Qist:/opt/kube14# kubectl get endpointslices
NAME ADDRESSTYPE PORTS ENDPOINTS AGE
kube-dns-kh5ls IPv4 53,9153,53 10.83.98.136,10.90.153.135 15m
metrics-server-gqgqm IPv4 443 10.93.92.195 15m
6、ServiceTopologyの検証
Service spec topologyKeys , Service , key; Service , endpoint topology key value , , topology key , endpoint ; endpoint topology key , topology key, ; topology key endpoint , service endpoint 。
topology key “*“, endpoint, topologyKeys *, , , , endpoint 。
topology key ( ):
kubernetes.io/hostname: hostname, , endpoint endpoint。
topology.kubernetes.io/zone: , kubernetes.io/hostname , endpoint, endpoint( )。
topology.kubernetes.io/region: , endpoint, , , , 。
*: , endpoint, , , 。
topologyKeys externalTrafficPolicy=Local , , externalTrafficPolicy Local, topologyKeys, 。
topology key label , 16 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", "*"] #
ports:
- name: dns
port: 53
protocol: UDP
- name: dns-tcp
port: 53
protocol: TCP
- name: metrics
port: 9153
protocol: TCP
# ServiceTopology
node
kube-dns
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
[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
# node IP