简介:本文详细拆解Kubernetes 1.36集群部署全流程,涵盖环境初始化、组件配置、网络规划及运维要点。通过标准化操作步骤与风险控制策略,帮助开发者与运维人员快速构建高可用容器编排平台,适用于生产环境、测试环境及混合云场景。
本文旨在指导读者在私有环境或云服务器上部署一套Kubernetes 1.36集群,采用1个控制平面节点(Master)与2个工作节点(Worker)的经典架构。部署完成后,集群将具备容器编排、服务发现、负载均衡等核心能力,支持生产环境的高可用运行。
适用人群:
核心收益:
| 节点类型 | 数量 | IP地址段 | 核心组件 |
|---|---|---|---|
| 控制平面 | 1 | 10.0.0.21 | kube-apiserver, etcd, controller-manager, scheduler |
| 工作节点 | 2 | 10.0.0.22-23 | kubelet, kube-proxy, container runtime |
# 禁用防火墙并停止服务systemctl disable --now firewalld# 永久关闭SELinux(需重启生效)sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config# 临时生效命令setenforce 0
# 设置主机名(各节点分别执行)hostnamectl set-hostname k8s-master # 控制节点hostnamectl set-hostname k8s-node1 # 工作节点1hostnamectl set-hostname k8s-node2 # 工作节点2# 配置hosts文件cat >> /etc/hosts <<EOF10.0.0.21 k8s-master10.0.0.22 k8s-node110.0.0.23 k8s-node2EOF
# 安装chrony时间同步工具yum install -y chrony# 配置时间服务器(可根据实际需求修改)cat > /etc/chrony.conf <<EOFserver ntp.aliyun.com iburstallow 10.0.0.0/24EOF# 启动服务并设置开机自启systemctl enable --now chronyd
# 安装依赖包yum install -y device-mapper-persistent-data lvm2# 添加容器镜像仓库(示例为通用配置)cat > /etc/yum.repos.d/containerd.repo <<EOF[containerd]name=Containerd Repobaseurl=https://download.containerd.io/rpm/latest/centos/9/x86_64enabled=1gpgcheck=0EOF# 安装containerdyum install -y containerd# 生成默认配置文件mkdir -p /etc/containerdcontainerd config default > /etc/containerd/config.toml# 修改Cgroup驱动为systemd(与kubelet保持一致)sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml# 启动服务systemctl enable --now containerd
# 配置Kubernetes仓库cat > /etc/yum.repos.d/kubernetes.repo <<EOF[kubernetes]name=Kubernetesbaseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0EOF# 安装核心组件(所有节点)yum install -y kubelet-1.36.0 kubeadm-1.36.0 kubectl-1.36.0# 设置kubelet开机自启(暂不启动)systemctl enable kubelet
# 初始化控制平面(根据实际网络修改pod-network-cidr)kubeadm init \--apiserver-advertise-address=10.0.0.21 \--pod-network-cidr=10.244.0.0/16 \--kubernetes-version v1.36.0# 配置kubectl认证信息mkdir -p $HOME/.kubecp -i /etc/kubernetes/admin.conf $HOME/.kube/configchown $(id -u):$(id -g) $HOME/.kube/config
# 在Master节点获取加入命令kubeadm token create --print-join-command# 在Worker节点执行返回的命令,示例:kubeadm join 10.0.0.21:6443 \--token abcdef.1234567890abcdef \--discovery-token-ca-cert-hash sha256:xxxxxx
# 下载Calico配置文件curl https://docs.projectcalico.org/manifests/calico.yaml -O# 修改配置中的CIDR(需与kubeadm init时一致)sed -i 's/192.168.0.0/10.244.0.0/g' calico.yaml# 应用配置kubectl apply -f calico.yaml
# 查看节点状态kubectl get nodes# 预期输出:# NAME STATUS ROLES AGE VERSION# k8s-master Ready control-plane 5m v1.36.0# k8s-node1 Ready <none> 3m v1.36.0# k8s-node2 Ready <none> 3m v1.36.0# 检查核心组件状态kubectl get pods -n kube-system
# 创建测试Nginx部署kubectl create deployment nginx --image=nginx:alpine# 暴露服务kubectl expose deployment nginx --port=80 --type=NodePort# 获取访问端口kubectl get svc nginx -o jsonpath='{.spec.ports[0].nodePort}'# 通过任意节点IP+端口访问测试curl http://10.0.0.22:<NodePort>
kubeadm upgrade plan制定升级方案kubectl drain安全迁移工作负载/etc/kubernetes/pki目录证书有效期| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| NodeStatusUnknown | 网络分区 | 检查节点间网络连通性 |
| ImagePullBackOff | 镜像仓库访问失败 | 配置镜像加速器或检查网络策略 |
| CrashLoopBackOff | 容器启动失败 | 查看kubectl logs获取详细错误 |
| Pending状态Pod | 资源不足 | 调整节点资源或增加Worker节点 |
本文通过标准化流程完成了Kubernetes 1.36集群部署,核心步骤包括:
后续优化方向:
通过持续监控集群资源使用率(CPU/内存/磁盘)和网络流量,结合定期的渗透测试与安全审计,可构建满足生产环境要求的容器编排平台。