在 Debian 上部署 Kubernetes 的实操步骤
一 环境与前置准备
二 所有节点通用配置
sudo apt update && sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl
sudo tee /etc/modules-load.d/k8s.conf <<EOF
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
sudo tee /etc/sysctl.d/99-kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo apt install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl enable --now containerd
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker
# 以 1.33 为例,可按需替换为其他稳定版本
VERSION=v1.33
sudo curl -fsSL https://pkgs.k8s.io/core:/stable:/${VERSION}/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:/${VERSION}/deb/ /" | \
sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
sudo systemctl enable --now kubelet
sudo ufw allow 6443/tcp
sudo ufw allow 2379:2380/tcp
sudo ufw allow 10250/tcp
sudo ufw allow 10251/tcp
sudo ufw allow 10252/tcp
sudo ufw allow 30000:32767/tcp
sudo ufw reload
以上步骤覆盖系统、内核、容器运行时与 k8s 组件的基础安装与网络准备。
三 初始化控制平面 Master
# Flannel 常用 10.244.0.0/16;Calico 常用 192.168.0.0/16
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f https://docs.projectcalico.org/manifests/tigera-operator.yaml
kubectl apply -f https://docs.projectcalico.org/manifests/custom-resources.yaml
kubectl cluster-info
kubectl get nodes
kubectl get pods -A
上述命令完成控制面初始化、kubectl 配置与网络插件部署,节点就绪后即可纳管工作节点。
四 加入 Worker 节点
# 生成新的 join 命令并打印
kubeadm token create --print-join-command
sudo kubeadm join <MASTER_IP>:6443 \
--token <TOKEN> \
--discovery-token-ca-cert-hash sha256:<HASH>
kubectl get nodes
以上完成节点加入与集群扩容。
五 常见问题与维护
docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.33.4
docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.33.4 \
k8s.gcr.io/kube-apiserver:v1.33.4
# 其余组件同理:kube-controller-manager、kube-scheduler、kube-proxy、pause、etcd、coredns
sudo kubeadm reset -f
sudo rm -rf /etc/cni/net.d
sudo iptables -F && sudo iptables -t nat -F && sudo iptables -t mangle -F && sudo iptables -X
sudo systemctl restart containerd