鲲鹏EulerOS搭建Cluster API Provider开发测试环境
【摘要】 Cluster API是一个Kubernetes项目,它将声明式Kubernetes风格的API用于集群的创建、配置和管理。它通过使用时CustomResourceDefinitions(CRDs)来扩展被Kubernetes API Server暴露的API来实现这些功能,从而允许用户创建新资源,例如集群(指Kubernetes集群)和Machine(指组成集群的节点的Machine)。环...
Cluster API是一个Kubernetes项目,它将声明式Kubernetes风格的API用于集群的创建、配置和管理。它通过使用时CustomResourceDefinitions(CRDs)来扩展被Kubernetes API Server暴露的API来实现这些功能,从而允许用户创建新资源,例如集群(指Kubernetes集群)和Machine(指组成集群的节点的Machine)。
环境工具:
工具 | 版本 | 说明 |
---|---|---|
cluster api | v1.9.3 | |
kind | v0.26.0 | |
kubectl | v1.32.0 | |
docker | v27.4.1 | 本身docker比较旧,装一个相对新点的 |
Huawei Cloud EulerOS | 2.0 Standard 64 bit for ARM | 鲲鹏 ARM64 |
安装工具
cluster-api安装
ARM64:
curl -L https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.9.2/clusterctl-linux-arm64 -o clusterctl
Install clusterctl:
sudo install -o root -g root -m 0755 clusterctl /usr/local/bin/clusterctl
安装kind
需要安装Go或到kind releases下载
go install sigs.k8s.io/kind@v0.26.0
安装kubectl
下载最新稳定版:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl"
安装kubectl:
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
调整环境
在部署过程中遇到的2个系统问题,一个镜像问题
- cgroup版本问题
- Failed to create inotify object: Too many open files
- docker镜像拉取不了
调整cgroup版本
查看cgroup版本:
- tmpfs (v1)
- cgroup2fs (v2)
stat -fc %T /sys/fs/cgroup/
将cgroup版本改成V2:
grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=1"
reboot
将cgroup driver改成systemd,k8s推荐systemd:
{
"exec-opts": ["native.cgroupdriver=systemd"],
"features": {
"cgroup2": true
}
}
调整inotify限制
临时修改:
sysctl fs.inotify.max_user_watches=1048576
sysctl fs.inotify.max_user_instances=8192
添加或更新 /etc/sysctl.conf:
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
使用其他镜像源下载
使用超能力
开始部署
-
创建集群
cat > kind-cluster-with-extramounts.yaml <<EOF kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking: ipFamily: dual nodes: - role: control-plane extraMounts: - hostPath: /var/run/docker.sock containerPath: /var/run/docker.sock EOF
kind create cluster --config kind-cluster-with-extramounts.yaml
-
初始化集群
export CLUSTER_TOPOLOGY=true clusterctl init --infrastructure docker
-
如果有下载不了的,替换镜像源或先下载到本地并替换
- 使用其他镜像源下载镜像
docker pull gcr.kubesre.xyz/k8s-staging-cluster-api/capd-manager:v1.9.3 docker pull k8s.kubesre.xyz/cluster-api/kubeadm-bootstrap-controller:v1.9.3 docker pull k8s.kubesre.xyz/cluster-api/kubeadm-control-plane-controller:v1.9.3 docker pull k8s.kubesre.xyz/cluster-api/cluster-api-controller:v1.9.3
- 替换镜像
kubectl set image deploy/capd-controller-manager -n capd-system manager=gcr.kubesre.xyz/k8s-staging-cluster-api/capd-manager:v1.9.3 kubectl set image deploy/capi-kubeadm-bootstrap-controller-manager -n capi-kubeadm-bootstrap-system manager=k8s.kubesre.xyz/cluster-api/kubeadm-bootstrap-controller:v1.9.3 kubectl set image deploy/capi-kubeadm-control-plane-controller-manager -n capi-kubeadm-control-plane-system manager=k8s.kubesre.xyz/cluster-api/kubeadm-control-plane-controller:v1.9.3 kubectl set image deploy/capi-controller-manager -n capi-system manager=k8s.kubesre.xyz/cluster-api/cluster-api-controller:v1.9.3
- 查看部署
kubectl get deploy -A -o wide
-
创建负载集群
- 设置负载集群环境变量:
# The list of service CIDR, default ["10.128.0.0/12"] export SERVICE_CIDR=["10.96.0.0/12"] # The list of pod CIDR, default ["192.168.0.0/16"] export POD_CIDR=["192.168.0.0/16"] # The service domain, default "cluster.local" export SERVICE_DOMAIN="k8s.test"
- 生成负载集群配置文件:
clusterctl generate cluster capi-quickstart --flavor development \ --kubernetes-version v1.32.0 \ --control-plane-machine-count=3 \ --worker-machine-count=3 \ > capi-quickstart.yaml
- 创建负载集群:
kubectl apply -f capi-quickstart.yaml
- 查看集群情况
kubectl get cluster
clusterctl describe cluster capi-quickstart
kubectl get kubeadmcontrolplane
- 导出负载集群的kubeconfig
kind get kubeconfig --name capi-quickstart > capi-quickstart.kubeconfig
-
安装CNI插件
- 安装calico,可能有镜像下载问题,请用超能力
kubectl --kubeconfig=./capi-quickstart.kubeconfig \ apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
- 查看集群节点,所有节点ready,集群启动成功
kubectl --kubeconfig=./capi-quickstart.kubeconfig get nodes
-
删除集群
kind create cluster --config kind-cluster-with-extramounts.yaml
kind delete cluster --name kind-kind
接下来,使用kubebulder创建Operator,然后将Operator安装到kind创建的集群中做测试开发。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)