在 Ubuntu 上快速部署 Kubernetes 的可选方案
方案一 使用 kubeadm 快速搭建多节点集群
环境要求
所有节点前置准备(以 containerd 为例)
sudo swapoff -a && sudo sed -i '/ swap / s/^/#/' /etc/fstabecho -e "br_netfilter\noverlay" | sudo tee /etc/modules-load.d/k8s.confsudo modprobe br_netfilter overlaycat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOFsudo sysctl --systemsudo apt-get update && sudo apt-get install -y containerdsudo containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1/etc/containerd/config.toml 中的 SystemdCgroup = false 改为 SystemdCgroup = truesudo systemctl restart containerd && sudo systemctl enable containerdcurl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpgecho "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.listsudo apt-get update && sudo apt-get install -y kubelet kubeadm kubectlsudo apt-mark hold kubelet kubeadm kubectlsudo ufw disable初始化控制平面(仅在 Master 节点)
sudo kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containerssudo kubeadm init \ --kubernetes-version=v1.28.2 \ --image-repository=registry.aliyuncs.com/google_containers \ --pod-network-cidr=10.244.0.0/16 \ --service-cidr=10.96.0.0/12 \ --apiserver-advertise-address=<MASTER_IP>mkdir -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 join <MASTER_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>。加入工作节点(在每个 Worker 节点)
kubeadm join ... 命令完成入群。验证集群
kubectl get nodes,状态应为 Ready。方案二 使用 microk8s 一键安装(最快)
sudo snap install microk8s --classicmicrok8s enable dashboard dns registry community istiomicrok8s statusmicrok8s kubectl create deployment nginx --image=nginxmicrok8s kubectl expose deployment nginx --port=80 --target-port=80 --type=ClusterIPmicrok8s kubectl get service nginxmicrok8s start / microk8s stop常见问题与快速排查
初始化失败或 kubelet 不断重启
sysctl --systemsudo kubeadm reset 再重新 init。节点 NotReady
sudo journalctl -u kubelet -f,定位镜像拉取、cgroup、网络等问题。