☰
K8S-Kubeadm初始化后查看集群状态实操
2026/10/11 8:49:31 网站建设 项目流程

Kubeadm初始化后查看集群状态实操

技术栈:Kubernetes v1.32.13 + Rocky Linux 8.6 + Containerd 1.7.x + Calico v3.27.x

操作环境 / 对接原理 / 详细步骤 / 完整命令 / 配置文件 / 验证流程 / 排错方案

Kubeadm初始化后查看集群状态实操

操作环境

  • K8s 集群版本 v1.32.13,操作系统 Rocky Linux 8.6,内核 4.18.0-372.el8

  • 容器运行时 Containerd 1.7.13,runc 1.1.12,CNI 插件 1.4.0

  • 网络插件 Calico v3.27.4,Pod CIDR 10.244.0.0/16,Service CIDR 10.96.0.0/12

  • 节点间网络互通,关闭 firewalld 或放行所需端口,关闭 Swap 分区

  • 时间同步通过 chronyd 实现,时区 Asia/Shanghai

  • SEinux 设置为 disabled,内核参数 net.bridge.bridge-nf-call-iptables=1

对接原理

Kubeadm 是 K8s 官方集群引导工具,负责初始化控制平面(APIServer、ControllerManager、Scheduler、etcd)并以静态 Pod 形式运行于 /etc/kubernetes/manifests 目录。kubelet 以 systemd 服务运行,管理节点 Pod 生命周期。Containerd 作为 CRI 运行时通过 unix socket 与 kubelet 对接。Calico 以 DaemonSet 部署,通过 BGP 实现 Pod 跨节点互通,通过 iptables/IPVS 实现 Service 负载均衡。

详细步骤

1. 系统基础环境配置(所有节点执行)

# 关闭防火墙 systemctl stop firewalld && systemctl disable firewalld # 关闭 SELinux setenforce 0 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config # 关闭 Swap swapoff -a sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # 时间同步 timedatectl set-timezone Asia/Shanghai dnf install -y chrony && systemctl enable --now chronyd

2. 内核参数与模块加载(所有节点执行)

cat > /etc/modules-load.d/k8s.conf << 'EOF' overlay br_netfilter ip_vs ip_vs_rr nf_conntrack EOF modprobe overlay br_netfilter ip_vs ip_vs_rr nf_conntrack cat > /etc/sysctl.d/k8s.conf << 'EOF' net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 vm.swappiness = 0 EOF sysctl --system

3. 安装 Containerd 容器运行时(所有节点执行)

dnf install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo dnf install -y containerd.io-1.7.13 mkdir -p /etc/containerd containerd config default > /etc/containerd/config.toml sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml systemctl daemon-reload && systemctl enable --now containerd

4. 安装 K8s 组件并初始化 Master(仅 Master 执行)

cat > /etc/yum.repos.d/kubernetes.repo << 'EOF' [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.32/rpm/ enabled=1 gpgcheck=1 exclude=kubelet kubeadm kubectl EOF dnf install -y kubelet-1.32.13 kubeadm-1.32.13 kubectl-1.32.13 --disableexcludes=kubernetes systemctl enable --now kubelet kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.32.13 kubeadm init --kubernetes-version v1.32.13 --apiserver-advertise-address 192.168.1.100 \ --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr 10.244.0.0/16 \ --cri-socket unix:///run/containerd/containerd.sock mkdir -p $HOME/.kube && cp /etc/kubernetes/admin.conf $HOME/.kube/config

5. 部署 Calico 网络插件

curl -O https://raw.githubusercontent.com/projectcalico/calico/v3.27.4/manifests/tigera-operator.yaml kubectl apply -f tigera-operator.yaml cat > custom-resources.yaml << 'EOF' apiVersion: operator.tigera.io/v1 kind: Installation metadata: name: default spec: calicoNetwork: ipPools: - cidr: 10.244.0.0/16 encapsulation: VXLANCrossSubnet EOF kubectl apply -f custom-resources.yaml kubectl wait --for=condition=ready pod -l k8s-app=calico-node -n kube-system --timeout=300s

验证流程

# 1. 节点状态验证 kubectl get nodes -o wide # 所有节点 STATUS 应为 Ready ​ # 2. 控制平面 Pod 验证 kubectl get pods -n kube-system # etcd、kube-apiserver、kube-controller-manager、kube-scheduler 均为 Running ​ # 3. 集群信息验证 kubectl cluster-info # Kubernetes control plane is running at https://<apiserver>:6443 ​ # 4. 组件版本验证 kubectl version --short # Server Version: v1.32.13 ​ # 5. Pod 网络连通性验证 kubectl run net-test --image=busybox:1.36 --restart=Never -- sleep 3600 kubectl exec net-test -- ping -c 3 10.96.0.10 ​ # 6. DNS 解析验证 kubectl exec net-test -- nslookup kubernetes.default.svc.cluster.local

排错方案

  • 节点 NotReady:查看 kubectl describe node,确认 CNI 插件是否就绪,检查 calico-node Pod 日志,确认 Pod CIDR 与初始化参数一致

  • kubelet 启动失败:执行 journalctl -u kubelet -f 查看日志,常见原因是 containerd socket 路径不匹配或 cgroup 驱动不一致(containerd 需设 SystemdCgroup=true)

  • 镜像拉取失败:确认 --image-repository 是否指定国内源,或手动执行 kubeadm config images pull 预拉取

  • CoreDNS CrashLoopBackOff:通常为网络插件未就绪,等待 Calico 部署完成后自动恢复;检查 iptables 规则

  • APIServer 连接超时:检查 6443 端口是否监听,防火墙是否放行,etcd 是否健康(etcdctl endpoint health)

  • etcd 成员异常:执行 etcdctl member list 确认成员状态,检查数据目录 /var/lib/etcd 空间是否充足

  • 证书过期报错:执行 kubeadm certs check-expiration 查看到期时间,使用 kubeadm certs renew all 轮换后重启控制平面 Pod

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询