使用 YurtCluster Operator 部署边缘集群
1. 背景说明
当您准备在生产环境使用 OpenYurt 时,官方推荐使用 YurtCluster Operator 。 YurtCluster Operator 提供了云原生声名式 Cluster API,能够根据声明的配置自动在标准 Kubernetes 集群上部署和配置 OpenYurt 相关组件, 使其具备提供边缘计算服务的能力(即将普通集群一键转换为 OpenYurt 边缘集群),同时负责动态追踪和管理 OpenYurt 集群的生命周期,包括集群扩容、升级等, 保障边缘集群始终运行在最佳状态。
2. 安装流程
2.1 前置准备
在开始前,您需要先准备一个普通的 Kubernetes 集群。如果您还没有一个可用集群,可以参考使用 kubeadm 等工具搭建一个新的集群。 当然,如果您只是想体验 YurtCluster Operator 的相关功能,也可以基于社区推荐的 kind 、minikube 等工具快速拉起一个用于本地开发测试使用的 Kubernetes 集群。
本文仅介绍通过 kind 工具拉起集群的一般方法,关于其它工具的使用请参照其对应的官方说明文档。
kind 依赖 Docker 软件,请确保您的机器上已经正确安装了 Docker 程序,关于 kind 的安装请参照文档 。
准备一个 kind-cluster.yaml
文件,定义一个 “1 control-plane + 3 worker” 的 Kubernetes 集群:
apiVersion: kind.x-k8s.io/v1alpha4
kind: Cluster
nodes:
- role: control-plane
- role: worker
- role: worker
- role: worker
执行如下命令,初始化集群:
# kind create cluster --config kind-cluster.yaml
Creating cluster "kind" ...
✓ Ensuring node image (kindest/node:v1.21.1) 🖼
✓ Preparing nodes 📦 📦 📦 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
✓ Joining worker nodes 🚜
Set kubectl context to "kind-kind"
You can now use your cluster with:
kubectl cluster-info --context kind-kind
Have a nice day! 👋
检查集群是否已经 Ready:
# kubectl get node
NAME STATUS ROLES AGE VERSION
kind-control-plane Ready control-plane,master 6m30s v1.21.1
kind-worker Ready <none> 5m56s v1.21.1
kind-worker2 Ready <none> 5m57s v1.21.1
kind-worker3 Ready <none> 5m57s v1.21.1
2.2 部署 YurtCluster Operator
YurtCluster Operator 提供了 Helm Chart 部署包,可以通过 Helm 实现一键部署,
YurtCluster Operator 属于集群生命周期核心管控组件,需要部署在 kube-system
命名空间:
# git clone https://github.com/openyurtio/yurtcluster-operator
# cd yurtcluster-operator/charts
# helm install yurtcluster-operator . -n kube-system
NAME: yurtcluster-operator
LAST DEPLOYED: Tue Dec 28 10:45:28 2021
NAMESPACE: kube-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
YurtCluster Operator 采用了分布式架构,包含一个 manager 组件(支持多副本高可用部署),以及运行在各个节点上的 agent 组件。 manager 组件负责统一管理集群组件的安装部署以及 YurtCluster 的状态更新等,agent 专注于处理本节点的节点配置(转换)任务。 YurtCluster Operator 的 helm chart 中同时包含了 YurtAppManager 和 YurtControllerManager 子 chart,它们作为 OpenYurt 集群的核心组件,会被同步安装。
检查 YurtCluster 组件是否已经就绪(就绪状态会看到类似如下输出):
# kubectl get pod -n kube-system | grep yurt
yurt-app-manager-7998648c47-5s9tp 1/1 Running 0 4m45s
yurt-app-manager-7998648c47-bdkfd 1/1 Running 0 4m45s
yurt-app-manager-7998648c47-rg8zn 1/1 Running 0 4m45s
yurt-controller-manager-868b85cc4b-5ktf2 1/1 Running 0 4m45s
yurt-controller-manager-868b85cc4b-gkwlf 1/1 Running 0 4m45s
yurt-controller-manager-868b85cc4b-pwwmx 1/1 Running 0 4m45s
yurt-operator-agent-2sx77 1/1 Running 0 4m45s
yurt-operator-agent-lhqgm 1/1 Running 0 4m45s
yurt-operator-agent-tfk9q 1/1 Running 0 4m45s
yurt-operator-agent-x9rrs 1/1 Running 0 4m45s
yurt-operator-manager-7476dc9b4-v28tx 1/1 Running 0 4m45s