温馨提示×

Ubuntu Kubernetes应用部署流程是什么

小樊
32
2025-12-18 15:20:28
栏目: 智能运维

Ubuntu 上 Kubernetes 应用部署流程

一 环境准备

  • 操作系统建议使用 Ubuntu 22.04/24.04,节点间建议配置 /etc/hosts 或使用内网 DNS,确保主机名可解析。所有节点执行:更新系统、安装基础工具、设置主机名。
  • 关闭 Swap:执行 sudo swapoff -a 并注释 /etc/fstab 中的 swap 行,保证 kubelet 调度稳定。
  • 内核与转发:启用 br_netfilter 并设置内核参数 net.bridge.bridge-nf-call-iptables=1net.bridge.bridge-nf-call-ip6tables=1net.ipv4.ip_forward=1,执行 sudo sysctl --system 生效。
  • 容器运行时:安装并配置 containerdsystemd cgroup 驱动;如使用 Docker,需将 Docker 的 cgroup 也设为 systemd 并配置镜像加速。
  • 时间同步:建议统一时区并启用 NTP/chrony,避免证书与调度异常。
  • 云上或受限网络:按需开放或放通 TCP 6443、2379-2380、10250-10252、UDP 8472 等端口,确保节点与控制平面通信畅通。

二 安装 Kubernetes 组件

  • 添加软件源与密钥:导入 Kubernetes APT 公钥,写入源(如 https://packages.cloud.google.com/apt 或国内镜像源),更新索引。
  • 安装指定版本组件:安装 kubeadm、kubelet、kubectl(建议固定小版本,如 1.28.x),执行 sudo apt-mark hold kubeadm kubelet kubectl 防止意外升级。
  • 启动 kubelet:sudo systemctl enable --now kubelet(此时可能反复重启属正常,待集群初始化后进入稳态)。

三 初始化集群与网络

  • 初始化控制平面(主节点):执行 sudo kubeadm init,常用参数包括:
    • --pod-network-cidr:依据所选 CNI 设定(如 Calico 常用 192.168.0.0/16Flannel 常用 10.244.0.0/16)。
    • --apiserver-advertise-address 与(可选)--control-plane-endpoint 用于多主或高可用场景。
  • 配置 kubeconfig:
    • mkdir -p $HOME/.kube
    • sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    • sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 安装 CNI 网络插件:
    • Calico:kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml
    • Flannel:kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
  • 加入工作节点:使用 kubeadm init 输出或 kubeadm token create --print-join-command 生成的 kubeadm join 命令加入集群。
  • 验证:kubectl get nodes 应显示所有节点 Ready

四 部署示例应用

  • 定义 Deployment(示例为 Nginx):
    • 副本数:3;镜像:nginx:1.25;端口:80;资源配置:requests cpu=100m/memory=128Mi,limits cpu=200m/memory=256Mi
  • 定义 Service
    • 类型 NodePort,端口 80→80,节点端口如 30080
  • 部署与验证:
    • kubectl apply -f deployment.yamlkubectl apply -f service.yaml
    • kubectl get pods -o wide 查看分布与状态
    • 访问 http://<任意节点IP>:30080 应返回 Nginx 欢迎页。

五 运维与常见问题

  • 基础运维:
    • 指标与扩缩容:部署 Metrics Server 后可执行 kubectl top nodes/pods;创建 HPAkubectl autoscale deployment nginx-deployment --cpu-percent=50 --min=2 --max=5
    • 日志:使用 kubectl logs <pod> -f 实时查看;生产可部署 EFK/ Loki 等集中日志方案。
  • 常见问题快速定位:
    • Pod Pending:执行 kubectl describe pod <pod>,常见原因为资源不足或 污点/容忍节点亲和不匹配。
    • Service 不可达:检查 selector 与 Pod 标签是否一致、kubectl describe service <svc>Endpoints 是否为空、是否存在 NetworkPolicy 拦截。
  • 生产建议:
    • 控制平面高可用(多主 + 负载均衡)、持久化存储(PV/PVC/StorageClass)、RBAC 最小权限、NetworkPolicy 白名单、备份与恢复(如 etcd 快照)。

0