在Kubernetes上安装
本教程展示了如何手动部署 OpenYurt 集群。我们假设用户已经安装好一个Kubernetes集群。如果想从头开始创建OpenYurt集群,请参考yurtadm 文档。
1 Kubernetes集群环境
用户需要先自行准备好一个Kubernetes集群(可以通过kubeadm工具搭建),本文档中以1节点的Kubernetes为例。
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
us-west-1.192.168.0.87 Ready <none> 3d23h v1.20.11
1.1 给云端节点打标签
当与 apiserver
断开连接时,只有运行在边缘自治的节点上的Pod才不会被驱逐。因此,我们首先需要通过打 openyurt.io/is-edge-worker
的标签的方式,将节点分为云端节点和边缘节点。
我们将 us-west-1.192.168.0.87
作为云端节点,将标签的 value
值设置为 false
$ kubectl label node us-west-1.192.168.0.87 openyurt.io/is-edge-worker=false
node/us-west-1.192.168.0.87 labeled
2 OpenYurt安装准备
2.1 Kube-Controller-Manager调整
为了保证Yurt-Controller-Manager可以正常工作,需要关闭Kube-Controller-Manager中的NodeLifeCycle controller(目前正在优化,后续Kube-Controller-Manager将无需调整)。
Kube-Controller-Manager配置调整方法如下:
2.2 部署Yurt-Tunnel专用DNS
云端组件(如Kube-apiserver, prometheus, metrics-server等)通过hostname:port
访问边缘时,为了让hostname
域名解析到yurt-tunnel-server
,从而让请求无感知
经过yurt-tunnel-server/yurt-tunnel-agent
到达边缘节点。需要确保组件的DNS域名解析请求发送到Yurt-Tunnel专用的DNS(取名为yurt-tunnel-dns)。
通过如下命令安装yurt-tunnel-dns:
kubectl apply -f config/setup/yurt-tunnel-dns.yaml
当安装完成后,可以通过命令kubectl -n kube-system get po
等确认一下yurt-tunnel-dns组件是否正常启动。并且通过kubectl -n kube-system get svc yurt-tunnel-dns
获取到yurt-tunnel-dns service
的clusterIP
.
2.3 Kube-apiserver调整
为了保证Master节点上kube-apiserver使用hostname:port
访问kubelet,同时保证使用yurt-tunnel-dns pod
对hostname
进行域名解析。需要调整kube-apiserver组件的相关配置。
Kube-apiserver配置调整方法如下:
2.4 Addons调整
kubeadm默认安装kube-proxy和CoreDNS的配置也需要配置,从而适配云边协同场景。调整配置方法如下:
3 部署OpenYurt的Control-Plane组件
我们推荐使用Helm安装OpenYurt组件。请先保证在你的环境中已经安装helm。另外,接下来要用到的所有helm charts都可以在openyurt-helm 仓库中找到。