Ubuntu 上 Kubernetes 应用部署流程
一 环境准备
sudo swapoff -a 并注释 /etc/fstab 中的 swap 行,保证 kubelet 调度稳定。net.bridge.bridge-nf-call-iptables=1、net.bridge.bridge-nf-call-ip6tables=1、net.ipv4.ip_forward=1,执行 sudo sysctl --system 生效。二 安装 Kubernetes 组件
sudo apt-mark hold kubeadm kubelet kubectl 防止意外升级。sudo systemctl enable --now kubelet(此时可能反复重启属正常,待集群初始化后进入稳态)。三 初始化集群与网络
sudo kubeadm init,常用参数包括:
--pod-network-cidr:依据所选 CNI 设定(如 Calico 常用 192.168.0.0/16,Flannel 常用 10.244.0.0/16)。--apiserver-advertise-address 与(可选)--control-plane-endpoint 用于多主或高可用场景。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/projectcalico/calico/v3.27.0/manifests/calico.yamlkubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.ymlkubeadm init 输出或 kubeadm token create --print-join-command 生成的 kubeadm join 命令加入集群。kubectl get nodes 应显示所有节点 Ready。四 部署示例应用
kubectl apply -f deployment.yaml 与 kubectl apply -f service.yamlkubectl get pods -o wide 查看分布与状态http://<任意节点IP>:30080 应返回 Nginx 欢迎页。五 运维与常见问题
kubectl top nodes/pods;创建 HPA:kubectl autoscale deployment nginx-deployment --cpu-percent=50 --min=2 --max=5。kubectl logs <pod> -f 实时查看;生产可部署 EFK/ Loki 等集中日志方案。kubectl describe pod <pod>,常见原因为资源不足或 污点/容忍、节点亲和不匹配。kubectl describe service <svc> 的 Endpoints 是否为空、是否存在 NetworkPolicy 拦截。