在 Debian 上使用 kubeadm 快速搭建单主集群
一 环境准备
sudo apt update && sudo apt upgrade -ysudo swapoff -a && sudo sed -i '/ swap / s/^/#/g' /etc/fstab二 安装容器运行时 Containerd(推荐)
echo -e "overlay\nbr_netfilter" | sudo tee /etc/modules-load.d/containerd.confsudo modprobe overlay && sudo modprobe br_netfiltercat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf\nnet.bridge.bridge-nf-call-iptables = 1\nnet.ipv4.ip_forward = 1\nnet.bridge.bridge-nf-call-ip6tables = 1\nEOFsudo sysctl --systemsudo apt update && sudo apt install -y containerdcontainerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1/etc/containerd/config.toml,在 [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] 下添加:SystemdCgroup = truesudo systemctl restart containerd && sudo systemctl enable containerd三 安装 kubeadm kubelet kubectl
sudo apt update && sudo apt install -y apt-transport-https curl gnupgcurl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/kubernetes-archive-keyring.gpgecho "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.listsudo apt update && sudo apt install -y kubelet kubeadm kubectlsudo apt-mark hold kubelet kubeadm kubectlsudo systemctl enable --now kubelet四 初始化控制平面并安装网络插件
sudo kubeadm init --pod-network-cidr=10.244.0.0/16--pod-network-cidr=192.168.0.0/16 --service-cidr=10.96.0.0/12mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configkubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubeadm init 输出中的 kubeadm join ... --token <token> --discovery-token-ca-cert-hash sha256:<hash> 在各 worker 上执行kubectl cluster-infokubectl get nodes五 防火墙与常见问题
6443/tcp、2379-2380/tcp、10250-10252/tcp、10255/tcp10250/tcp、30000:32767/tcp(NodePort 范围)kubectl get pods -n kube-system 与初始化参数。image-repository 参数(如 registry.aliyuncs.com/google_containers)。kubeadm token create --print-join-command 重新生成。