Debian上K8s节点如何添加
导读:在 Debian 上添加 Kubernetes 节点的标准流程 按如下步骤在 Debian 主机上准备并加入 Kubernetes 集群,涵盖系统前置、容器运行时、kubeadm 加入与验证。 一 前置条件与系统准备 硬件建议:每个节点...
在 Debian 上添加 Kubernetes 节点的标准流程
按如下步骤在 Debian 主机上准备并加入 Kubernetes 集群,涵盖系统前置、容器运行时、kubeadm 加入与验证。
一 前置条件与系统准备
- 硬件建议:每个节点至少 2 核 CPU、2GB 内存、20GB 磁盘。
- 主机名与解析:为各节点设置唯一 hostname,并在所有节点的 /etc/hosts 中写入相互解析条目(示例:10.0.0.100 k8s-master;10.0.0.101 k8s-node1)。
- 关闭 Swap:
- 临时:sudo swapoff -a
- 永久:sudo sed -i ‘/ swap / s/^(.*)$/#\1/g’ /etc/fstab
- 内核与转发:
- 加载模块:
- sudo modprobe overlay
- sudo modprobe br_netfilter
- 开启转发与桥接调用:
- echo -e “net.bridge.bridge-nf-call-iptables = 1\nnet.ipv4.ip_forward = 1” | sudo tee /etc/sysctl.d/99-kubernetes.conf
- sudo sysctl --system
- 加载模块:
- 防火墙放行(如使用 UFW):
- sudo ufw allow 6443/tcp
- sudo ufw allow 2379:2380/tcp
- sudo ufw allow 10250/tcp
- sudo ufw allow 10251/tcp
- sudo ufw allow 10252/tcp
- sudo ufw allow 10255/tcp
- sudo ufw reload
- 容器运行时(推荐 containerd):
- 安装:sudo apt-get update & & sudo apt-get install -y containerd.io
- 启用并启动:sudo systemctl enable --now containerd
- 可选内核模块(IPVS 场景):
- echo -e “overlay\nbr_netfilter” | sudo tee /etc/modules-load.d/containerd.conf
- 注:IPVS 为可选,仅在需要 L4 负载均衡优化时启用。
二 安装 kubelet kubeadm kubectl
- 添加 Kubernetes APT 源并安装组件:
- curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
- echo “deb https://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee /etc/apt/sources.list.d/kubernetes.list
- sudo apt-get update
- sudo apt-get install -y kubelet kubeadm kubectl
- sudo apt-mark hold kubelet kubeadm kubectl(防止被系统升级干扰)
- 启动 kubelet:
- sudo systemctl enable --now kubelet
三 获取加入命令并加入集群
- 在 控制平面节点 生成并打印加入命令:
- kubeadm token create --print-join-command
- 典型输出:kubeadm join :6443 --token --discovery-token-ca-cert-hash sha256:
- 在 工作节点 执行上一步输出的 join 命令(需要 root 或 sudo):
- sudo kubeadm join :6443 --token --discovery-token-ca-cert-hash sha256:
- 如 token 即将过期或需要长期可用,可在控制平面重建:
- kubeadm token create --ttl 0 --print-join-command
- 加入完成后在控制平面验证:
- kubectl get nodes(新节点状态应为 Ready)
四 常见问题与快速排查
- 节点 NotReady:
- 检查容器运行时:sudo systemctl status containerd
- 查看 kubelet 日志:sudo journalctl -u kubelet -f
- 确认内核参数与模块已加载(overlay、br_netfilter、ip_forward)。
- 加入命令不可用或过期:
- 在控制平面重新生成:kubeadm token create --print-join-command。
- 端口或防火墙问题:
- 确认 6443/2379-2380/10250-10252/10255 已放行,云厂商安全组同样需要放通。
- 主机名解析失败:
- 核对 /etc/hosts 在所有节点一致且可相互解析。
- 已有节点需维护下线:
- 驱逐:kubectl drain --ignore-daemonsets --delete-emptydir-data
- 标记不可调度:kubectl cordon
- 从集群移除:kubectl delete node 。
五 可选网络插件与后续步骤
- 若集群尚未安装 CNI 网络插件,加入节点后 Pod 仍会处于 NotReady。
- 以 Calico 为例:
- kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
- 等待 kube-system 命名空间下 Calico 相关 Pod 就绪后,再次执行 kubectl get nodes,节点应转为 Ready。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian上K8s节点如何添加
本文地址: https://pptw.com/jishu/758192.html
