1. 项目背景与目标2026年3月Kubernetes已经发展到v1.30版本新特性如动态资源配额管理和增强的Sidecar容器支持让集群部署有了更多可能性。这次我们要在阿里云ECS上部署一个生产可用的三节点集群满足以下核心需求高可用控制平面三个Master节点采用etcd集群模式自动化节点管理使用kubeadm最新特性简化部署阿里云环境适配整合云盘CSI驱动和SLB负载均衡安全基线配置默认启用Pod安全准入控制注意本文基于阿里云CentOS 8.5镜像内核版本需≥5.4才能支持最新Kubernetes特性2. 环境准备与系统调优2.1 服务器规格选择我们选用阿里云ECS计算型c7实例具体配置见下表相比通用型实例更适合容器负载节点角色实例类型vCPU内存系统盘数据盘Masterecs.c7.large2核4GB100GB ESSD200GB ESSDWorkerecs.c7.xlarge4核8GB100GB ESSD500GB ESSD ×2关键配置要点Master节点需要稳定网络建议绑定弹性公网IPWorker节点数据盘采用RAID 0提升IOPS生产环境建议RAID 10所有节点部署在同一个专有网络VPC内2.2 系统基础配置# 所有节点执行 sudo sed -i s/SELINUXenforcing/SELINUXpermissive/g /etc/selinux/config sudo setenforce 0 sudo systemctl stop firewalld sudo systemctl disable firewalld # 配置阿里云YUM源 sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo sudo yum install -y yum-utils device-mapper-persistent-data lvm22.3 内核参数优化创建/etc/sysctl.d/k8s.conf文件net.bridge.bridge-nf-call-ip6tables 1 net.bridge.bridge-nf-call-iptables 1 net.ipv4.ip_forward 1 vm.swappiness 0 vm.overcommit_memory 1 vm.panic_on_oom 0 fs.inotify.max_user_instances 8192 fs.inotify.max_user_watches 524288 fs.file-max 52706963执行sysctl --system生效后需要额外配置echo ulimit -n 655350 /etc/profile echo * soft nofile 655350 /etc/security/limits.conf echo * hard nofile 655350 /etc/security/limits.conf3. 容器运行时与Kubernetes安装3.1 Containerd配置使用阿里云镜像加速安装sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo yum install -y containerd.io配置/etc/containerd/config.toml[plugins.io.containerd.grpc.v1.cri.registry.mirrors] [plugins.io.containerd.grpc.v1.cri.registry.mirrors.docker.io] endpoint [https://registry.cn-hangzhou.aliyuncs.com] [plugins.io.containerd.grpc.v1.cri.containerd] snapshotter overlayfs default_runtime_name runc3.2 kubeadm集群初始化在第一个Master节点执行sudo kubeadm init \ --control-plane-endpoint apiserver.cluster.local:6443 \ --upload-certs \ --pod-network-cidr10.244.0.0/16 \ --service-cidr10.96.0.0/12 \ --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers关键参数说明--control-plane-endpoint指向阿里云SLB的VIP地址--upload-certs自动轮转证书--image-repository使用阿里云镜像仓库加速拉取4. 网络与存储方案实现4.1 Calico网络插件部署使用阿里云适配版Calicocurl https://docs.projectcalico.org/manifests/calico.yaml -O sed -i s/192.168.0.0/10.244.0.0/g calico.yaml kubectl apply -f calico.yaml4.2 阿里云CSI驱动集成创建StorageClassapiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-disk-essd provisioner: diskplugin.csi.alibabacloud.com parameters: type: cloud_essd fsType: ext4 encrypted: true reclaimPolicy: Retain volumeBindingMode: WaitForFirstConsumer5. 集群验证与故障排查5.1 基础功能测试# 检查节点状态 kubectl get nodes -o wide # 测试DNS解析 kubectl run -it --rm --restartNever busybox --imagebusybox -- nslookup kubernetes.default # 验证存储动态供给 kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/alibaba-cloud-csi-driver/master/examples/disk/storageclass.yaml5.2 常见问题处理问题1Pod一直处于ContainerCreating状态排查步骤kubectl describe pod pod-name查看事件journalctl -u kubelet -f检查kubelet日志确认CNI插件二进制文件权限为755问题2节点NotReady快速诊断命令sudo crictl ps -a | grep -v Running sudo systemctl status kubelet -l ip route show table all6. 生产环境增强配置6.1 阿里云SLB对接通过OpenAPI创建专有网络类型的SLB后端挂载三个Master节点的6443端口。然后在kubeadm-config中配置apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration controlPlaneEndpoint: slb-xxxx.cn-hangzhou.aliyuncs.com:64436.2 监控方案部署使用阿里云ARMS Prometheushelm install arms-prometheus \ --set armsPrometheusRegioncn-hangzhou \ --set clusterIdyour-cluster-id \ stable/arms-prometheus7. 运维实践与经验总结证书管理kubeadm默认证书有效期1年建议使用kubeadm certs renew all提前续期节点维护使用kubectl drain时添加--ignore-daemonsets参数ETCD备份阿里云快照手动备份组合方案ETCDCTL_API3 etcdctl --endpointshttps://127.0.0.1:2379 \ --cacert/etc/kubernetes/pki/etcd/ca.crt \ --cert/etc/kubernetes/pki/etcd/server.crt \ --key/etc/kubernetes/pki/etcd/server.key \ snapshot save /data/backup/etcd-snapshot-$(date %Y%m%d).db版本升级阿里云提供经过验证的版本升级路径建议按季度执行小版本升级实测发现阿里云ESSD云盘的IOPS性能直接影响Pod启动速度。当集群规模超过50个节点时建议Master节点使用本地SSD盘部署etcd