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% 折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。