在 Ubuntu 上快速安装 Kubernetes 的可选方案
方案一 使用 MicroK8s 一键安装(最快,适合本地或单节点测试)
sudo snap install microk8s --classicmicrok8s status、microk8s start|stop、microk8s kubectl versionmicrok8s enable dashboard dns registry community istiomicrok8s status --wait-readymicrok8s kubectl create deployment nginx --image=nginx && microk8s kubectl expose deployment nginx --port=80 --target-port=80 --type=ClusterIP && microk8s kubectl get svc方案二 使用 kubeadm 搭建标准集群(适合多节点与可定制场景)
sudo swapoff -a && sudo sed -i '/ swap / s/^/#/' /etc/fstabecho -e "overlay\nbr_netfilter" | sudo tee /etc/modules-load.d/k8s.conf && sudo modprobe overlay && sudo modprobe br_netfilterecho -e "net.bridge.bridge-nf-call-iptables=1\nnet.bridge.bridge-nf-call-ip6tables=1\nnet.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/k8s.conf && sudo sysctl --systemsudo apt-get update && sudo apt-get install -y containerdcontainerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.tomlsudo systemctl restart containerd && sudo systemctl enable containerdsudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curlcurl -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 kubectl && sudo apt-mark hold kubelet kubeadm kubectlsudo kubeadm init --apiserver-advertise-address=<MASTER_IP> --pod-network-cidr=10.244.0.0/16mkdir -p $HOME/.kube && sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && sudo chown $(id -u):$(id -g) $HOME/.kube/configkubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubectl apply -f https://docs.projectcalico.org/manifests/calico.yamlkubeadm init 输出中的 kubeadm join ... 命令;若遗失,可在主节点执行:sudo kubeadm token create --print-join-commandkubectl get nodes(状态为 Ready 即正常)。常见问题与快速排查
sudo systemctl status kubelet、sudo systemctl status containerd)。kubeadm join 的 token 与 sha256 是否正确;确保主节点 6443 端口对节点可达(云上需放通安全组/防火墙)。补充说明
/etc/docker/daemon.json:{"exec-opts": ["native.cgroupdriver=systemd"]},然后重启 Docker)。kubeadm init 中使用镜像仓库参数(如 --image-repository=registry.aliyuncs.com/google_containers)或提前拉取并重新打标镜像以加速部署。