首页主机资讯Kubernetes 节点如何在 Ubuntu 上扩展

Kubernetes 节点如何在 Ubuntu 上扩展

时间2026-01-21 19:53:04发布访客分类主机资讯浏览737
导读:在 Ubuntu 上扩展 Kubernetes 节点的实操指南 一 规划与前置检查 准备一台或多台运行 Ubuntu 20.04/22.04 的新机器,确保与现有集群网络互通(同一二层/三层网段或可达的 Pod CIDR/Service...

在 Ubuntu 上扩展 Kubernetes 节点的实操指南

一 规划与前置检查

  • 准备一台或多台运行 Ubuntu 20.04/22.04 的新机器,确保与现有集群网络互通(同一二层/三层网段或可达的 Pod CIDR/Service CIDR),并具备可用的 SSH 访问与 sudo 权限。
  • 规划节点角色与资源:新增 workercontrol-plane(如需高可用)。
  • 统一 /etc/hosts 或使用 DNS,确保主机名可解析;所有节点时间同步(如 chrony)。
  • 规划安全组/防火墙放通:至少放通 22/TCP(SSH)、6443/TCP(Kube-apiserver)、10250/TCP(Kubelet)、30000–32767/TCP(NodePort)、以及所用 CNI 所需端口(如 Calico:179/TCP、5473/TCP、4789/UDP)。
  • 准备加入命令:在控制平面节点生成一次性 tokenCA 证书哈希,或复用现有有效 bootstrap token
  • 确认现有集群使用的 容器运行时(如 containerdDocker),新节点需保持一致。

二 在新节点上安装与初始化

  • 关闭 Swap(Kubelet 要求):
    • 临时:sudo swapoff -a
    • 永久:sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
  • 加载内核模块与网络参数:
    • 模块:sudo modprobe overlay & & sudo modprobe br_netfilter
    • Sysctl:sudo tee /etc/sysctl.d/kubernetes.conf < < EOF net.bridge.bridge-nf-call-ip6tables=1 net.bridge.bridge-nf-call-iptables=1 net.ipv4.ip_forward=1 EOF & & sudo sysctl --system
  • 安装容器运行时(以 containerd 为例):
    • 安装:sudo apt-get update & & sudo apt-get install -y containerd
    • 生成默认配置并启用 SystemdCgroup:sudo containerd config default | sudo tee /etc/containerd/config.toml & & sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
    • 启动:sudo systemctl enable --now containerd
  • 安装 kubeadm/kubelet/kubectl(版本保持一致):
    • 添加源并安装:sudo apt-get update & & sudo apt-get install -y apt-transport-https curl & & curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-keyring.gpg & & echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] 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(一次性 token–discovery-token-ca-cert-hash
    • 若使用 控制平面端点(如 –control-plane-endpoint),在命令中加入 --control-plane 参数以新增 master 节点。
  • 在新节点执行输出的 kubeadm join … 命令,等待拉起 kubelet 与容器。
  • 在控制平面验证:kubectl get nodes -o wide,确认新节点状态为 Ready

四 节点就绪后的常用配置

  • 打标签与污点(示例):
    • 角色标签:kubectl label nodes < node-name> node-role.kubernetes.io/worker=
    • 污点与容忍(如需专用节点):kubectl taint nodes < node-name> key=value:NoSchedule;在 Pod 上配置相应 tolerations
  • 调度控制:
    • 节点选择器:nodeSelector
    • 亲和性:nodeAffinity
    • 反亲和性:podAntiAffinity(提升高可用分布)
  • 验证示例:部署 Nginx 并观察是否调度到新节点
    • kubectl create deployment nginx --image=nginx --replicas=2
    • kubectl get pods -o wide

五 批量扩展与常见问题

  • 批量添加:在控制平面生成一次加入命令,使用 Ansible/Shell 将命令分发到多台新节点并行执行,完成后统一 kubectl get nodes 校验。
  • 常见问题排查:
    • 节点 NotReady:检查 containerd/kubelet 状态、镜像拉取、容器网络(如 Calico/Flannel Pod 是否 Running)、以及 CNI 所需端口防火墙 策略。
    • 加入失败:确认 token 未过期、CA 证书哈希 正确、系统时间同步、以及 /etc/hosts/DNS 解析正常。
    • 端口放通:至少确保 22/TCP、6443/TCP、10250/TCP、30000–32767/TCP 与所用 CNI 端口(如 179/TCP、5473/TCP、4789/UDP)已放行。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Kubernetes 节点如何在 Ubuntu 上扩展
本文地址: https://pptw.com/jishu/789023.html
如何在Ubuntu上搭建MariaDB集群 Debian进程异常退出怎么排查

游客 回复需填写必要信息