Kubernetes集群 Ubuntu 节点扩展实操指南
一、前置条件与规划
二、新节点预处理
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
sudo modprobe br_netfilter
lsmod | grep br_netfilter
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 组件
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
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
四、生成加入命令并加入集群
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
# /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"
修改后重启 kubelet:sudo systemctl restart kubelet。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