Kubernetes集群Ubuntu节点如何扩展
导读:Kubernetes集群 Ubuntu 节点扩展实操指南 一、前置条件与规划 准备一台或多台运行 Ubuntu 20.04/22.04 的新机器,确保与现有集群网络互通(同一二层/三层网段或可达的 API Server 端点)。 规划节点...
Kubernetes集群 Ubuntu 节点扩展实操指南
一、前置条件与规划
- 准备一台或多台运行 Ubuntu 20.04/22.04 的新机器,确保与现有集群网络互通(同一二层/三层网段或可达的 API Server 端点)。
- 规划节点角色与标签(如 worker、gpu、ssd),便于后续调度。
- 统一时间同步(如 Asia/Shanghai),避免证书校验与组件异常。
- 如使用 UFW,提前放通必要端口(如 22/TCP、10250/TCP、30000–32767/TCP),或直接使用 iptables/firewalld 统一管理。
- 规划容器运行时(推荐 containerd),并保持与现有集群版本一致(如 v1.23+)。
二、新节点预处理
- 关闭 Swap(生产环境必须;新版 kubelet 支持开启但默认仍建议关闭):
sudo swapoff -a sudo sed -i '/ swap / s/^/#/' /etc/fstab - 内核与转发参数:
cat < < EOF | sudo tee /etc/sysctl.d/k8s.conf net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sudo sysctl --system - 可选:加载 br_netfilter 并验证
sudo modprobe br_netfilter lsmod | grep br_netfilter - 设置主机名与 /etc/hosts(所有节点保持一致,便于解析控制面端点):
sudo hostnamectl set-hostname < new-worker-hostname> echo "< 控制面IP> < 控制面主机名> " | sudo tee -a /etc/hosts - 时间同步:
sudo timedatectl set-timezone Asia/Shanghai sudo systemctl restart systemd-timesyncd
三、安装容器运行时与 Kubernetes 组件
- 安装并启动 containerd:
sudo apt-get update & & sudo apt-get install -y containerd sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml sudo systemctl restart containerd sudo systemctl enable containerd - 添加 Kubernetes APT 源并安装组件(版本与集群保持一致,示例 1.23.5-00):
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add - cat < < EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF sudo apt-get update K8S_VERSION="1.23.5-00" sudo apt-get install -y kubelet=${ K8S_VERSION} kubeadm=${ K8S_VERSION} kubectl=${ K8S_VERSION} sudo apt-mark hold kubelet kubeadm kubectl sudo systemctl enable --now kubelet
四、生成加入命令并加入集群
- 在控制面节点生成短期令牌与加入命令(示例有效期 2 小时):
kubeadm token create --ttl 2h --print-join-command # 如需手动计算哈希,可在控制面执行: openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | \ openssl rsa -pubin -outform der 2> /dev/null | \ openssl dgst -sha256 -hex | sed 's/^.* //' - 在新节点执行加入命令(将输出替换为实际值):
sudo kubeadm join < 控制面IP或域名> :6443 \ --token < token> \ --discovery-token-ca-cert-hash sha256:< hash> \ --node-labels=disk=ssd,region=cn-east - 如需临时忽略预检(不建议生产长期使用),可附加:
--ignore-preflight-errors=Swap
五、验证、标签与后续优化
- 验证节点状态:
kubectl get nodes -o wide - 为新节点添加业务标签并验证:
kubectl label node < new-worker-name> node-type=high-mem kubectl get node < new-worker-name> --show-labels - 可选:为节点设置污点/容忍,或配置 kubelet 资源预留(提升稳定性):
修改后重启 kubelet:# /var/lib/kubelet/config.yaml apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration systemReserved: cpu: "500m" memory: "1Gi" ephemeral-storage: "5Gi" kubeReserved: cpu: "500m" memory: "2Gi" ephemeral-storage: "5Gi"sudo systemctl restart kubelet。 - 防火墙要点(如使用 UFW):
sudo ufw allow 22/tcp sudo ufw allow 10250/tcp sudo ufw allow 30000:32767/tcp # 如使用 Calico/Flannel,按需放通: sudo ufw allow 179/tcp # BGP sudo ufw allow 5473/tcp # Typha sudo ufw allow 4789/udp # VXLAN
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Kubernetes集群Ubuntu节点如何扩展
本文地址: https://pptw.com/jishu/757925.html
