安装openyurt,为了适配边缘场景,需要对k8s组件进行调整。其中包括:
-
kube-apiserver
-
kube-controller-manager
-
kube-proxy
-
CoreDNS
1. kube-apiserver
为了实现云边通信,即用户可以正常使用kubectl exec/logs的功能来登录或查看边缘容器的信息。需要将kube-apiserver访问kubelet的地址调整为hostname优先。
1 | $ vi /etc/kubernetes/manifests/kube-apiserver.yaml |
2. kube-controller-manager
禁用默认的 nodelifecycle
控制器,当节点断连时不驱逐pod。
nodelifecycle
控制器主要用来根据node的status及lease的更新时间来决定是否要驱逐节点上的pod
。为了让 yurt-controller-mamanger
能够正常工作,因此需要禁用controller的驱逐功能。
1 | vim /etc/kubernetes/manifests/kube-controller-manager.yaml |
3. CoreDNS
将coredns从deployment部署改为daemonset部署。
将deployment的coredns副本数调整为0。
1 | kubectl scale --replicas=0 deployment/coredns -n kube-system |
创建daemonset的coredns。
1 | wget https://raw.githubusercontent.com/huweihuang/kubeadm-scripts/main/openyurt/yurt-tunnel/coredns.ds.yaml |
支持流量拓扑:
1 | # 利用openyurt实现endpoint过滤 |
4. kube-proxy
云边端场景下,边缘节点间很有可能无法互通,因此需要endpoints基于nodepool进行拓扑。直接将kube-proxy的kubeconfig配置删除,将apiserver请求经过yurthub即可解决服务拓扑问题。
1 | kubectl edit cm -n kube-system kube-proxy |
示例:
1 | apiVersion: v1 |
参考:
赞赏一下