Kubernetes 集群部署完整指南
Kubernetes(简称 K8S)是当前最流行的容器编排平台,用于自动化部署、扩展和管理容器化应用。本文将详细介绍如何使用 kubeadm 工具在搬瓦工 VPS 上从零搭建一个 Kubernetes 集群,包括主节点初始化、网络插件安装和工作节点加入。
一、环境规划
- Master 节点:至少 2 核 CPU、4GB 内存。
- Worker 节点:至少 1 核 CPU、2GB 内存。
- 操作系统:Ubuntu 22.04 LTS(推荐)。
- 容器运行时:containerd(K8S 1.24+ 已移除 Docker shim)。
- 网络:各节点间需要互通,建议使用搬瓦工同机房方案。
推荐使用搬瓦工 4GB 内存以上的方案,购买地址:bwh81.net,使用优惠码 NODESEEK2026 享受 6.77% 折扣。
二、所有节点准备工作
以下操作需要在所有节点(Master 和 Worker)上执行。
2.1 关闭 Swap
swapoff -a
sed -i '/ swap / s/^/#/' /etc/fstab
2.2 加载内核模块
cat > /etc/modules-load.d/k8s.conf <<EOF
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
2.3 配置内核参数
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
2.4 安装 containerd
apt update
apt install -y ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update
apt install -y containerd.io
2.5 配置 containerd
containerd config default > /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
systemctl restart containerd
systemctl enable containerd
2.6 安装 kubeadm、kubelet、kubectl
apt install -y apt-transport-https
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.list
apt update
apt install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl
三、初始化 Master 节点
在 Master 节点上执行:
kubeadm init \
--pod-network-cidr=10.244.0.0/16 \
--apiserver-advertise-address=MASTER_IP \
--kubernetes-version=v1.29.0
将 MASTER_IP 替换为 Master 节点的实际 IP 地址。
3.1 配置 kubectl
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
3.2 验证集群状态
kubectl get nodes
kubectl get pods -A
四、安装网络插件
以 Flannel 为例(轻量级,适合搬瓦工 VPS):
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
或使用 Calico(功能更强大):
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml
等待网络插件就绪:
kubectl get pods -n kube-system -w
五、加入 Worker 节点
在 kubeadm init 输出中会有加入命令,在每个 Worker 节点上执行:
kubeadm join MASTER_IP:6443 --token YOUR_TOKEN \
--discovery-token-ca-cert-hash sha256:YOUR_HASH
如果忘记了 token,在 Master 上重新生成:
kubeadm token create --print-join-command
六、验证集群
# 查看节点状态
kubectl get nodes -o wide
# 部署测试应用
kubectl create deployment nginx --image=nginx:alpine --replicas=2
kubectl expose deployment nginx --port=80 --type=NodePort
# 查看部署状态
kubectl get pods -o wide
kubectl get svc nginx
七、单节点集群
如果只有一台 VPS,可以让 Master 节点同时运行工作负载:
kubectl taint nodes --all node-role.kubernetes.io/control-plane-
这样单台搬瓦工 VPS 也可以运行完整的 Kubernetes 环境。如果资源有限,建议考虑使用更轻量的 K3S。
八、集群管理常用命令
# 查看集群信息
kubectl cluster-info
# 查看所有命名空间的 Pod
kubectl get pods --all-namespaces
# 查看节点资源使用(需安装 metrics-server)
kubectl top nodes
kubectl top pods
# 排空节点(维护前)
kubectl drain node-name --ignore-daemonsets --delete-emptydir-data
# 恢复节点调度
kubectl uncordon node-name
九、安装 Metrics Server
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
如果使用自签名证书,需要添加启动参数:
kubectl edit deployment metrics-server -n kube-system
在 args 中添加 --kubelet-insecure-tls。
十、常见问题
节点状态 NotReady
kubectl describe node NODE_NAME
journalctl -u kubelet -f
通常是网络插件未正确安装或 containerd 配置有误。
Pod 无法调度
kubectl describe pod POD_NAME
kubectl get events --sort-by='.lastTimestamp'
coredns Pod 一直 Pending
这通常是因为网络插件还未安装,安装 Flannel 或 Calico 后会自动恢复。
总结
Kubernetes 是容器编排的标准平台,通过 kubeadm 可以快速搭建生产级别的集群。在搬瓦工 VPS 上搭建 K8S 集群后,可以进一步配置 Ingress 控制器、持久化存储、Helm 包管理器 等组件。选购搬瓦工 VPS 请参考 全部方案,使用优惠码 NODESEEK2026 享受 6.77% 折扣。