温馨提示×

Debian如何利用Kubernetes进行容器编排

小樊
37
2026-01-03 16:47:10
栏目: 智能运维

在 Debian 上使用 Kubernetes 进行容器编排

一 架构与准备

  • 组件与职责
    • kubeadm:集群引导与初始化
    • kubelet:节点上运行容器的代理
    • kubectl:集群管理 CLI
    • 容器运行时:如 Docker/containerd/CRI-O
  • 节点规划
    • 至少 1 台控制平面(建议 2–3 台 做高可用)
    • 至少 1 台工作节点
    • 建议硬件:每节点 ≥2 核 CPU、≥2GB 内存、≥20GB 磁盘
  • 基础环境
    • 各节点互通,时间同步(如 chrony
    • 关闭 Swap:swapoff -a 并注释 /etc/fstab 中的 swap 行
    • 内核参数(示例):net.bridge.bridge-nf-call-iptables=1、net.ipv4.ip_forward=1
    • 防火墙放行 6443/10250/10251/10252 等端口(或临时关闭防火墙便于部署)

二 安装与初始化集群

  • 安装组件(Debian 12 示例)
    • 导入签名密钥与仓库(推荐新版签名方式)
      • curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.33/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
      • echo “deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.33/deb/ /” | tee /etc/apt/sources.list.d/kubernetes.list
    • 安装并锁定版本
      • apt-get update && apt-get install -y kubelet kubeadm kubectl
      • apt-mark hold kubelet kubeadm kubectl
    • 启动 kubelet
      • systemctl enable --now kubelet
  • 初始化控制平面
    • kubeadm init --pod-network-cidr=10.244.0.0/16
    • 完成后按提示保存 kubeadm join 命令
  • 配置 kubectl
    • mkdir -p $HOME/.kube
    • cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    • chown $(id -u):$(id -g) $HOME/.kube/config
  • 安装网络插件(示例使用 Flannel)
    • kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  • 加入工作节点
    • 在每台 Worker 上执行 kubeadm init 输出的 kubeadm join 命令
  • 验证
    • kubectl get nodes 应看到所有节点 Ready

三 部署与运维示例

  • 部署应用
    • 示例 Deployment(nginx.yaml)
      • apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80
    • 应用与暴露
      • kubectl apply -f nginx.yaml
      • kubectl expose deployment nginx --type=NodePort --port=80
  • 常用运维
    • 扩缩容:kubectl scale deployment nginx --replicas=5
    • 查看日志:kubectl logs deploy/nginx
    • 进入容器:kubectl exec -it deploy/nginx – sh

四 本地开发与单机方案

  • Minikube(适合在本机 Debian 上快速体验)
    • 安装 kubectl(下载二进制到 /usr/local/bin 并赋权)
    • 安装 Minikube(下载二进制到 /usr/local/bin
    • 启动集群:minikube start --driver=docker
    • 部署示例应用:kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0
    • 访问服务:minikube service hello-minikube --url
  • 无虚拟机驱动提示
    • 若使用 none 驱动,需确保 crictl 等依赖可用(Kubernetes ≥1.26 场景常见要求)

五 常见问题与优化

  • 镜像与仓库
    • 国内环境可使用镜像源(如 pkgs.k8s.io 或云厂商镜像)加速组件安装与拉取
  • 容器运行时
    • 新版 Kubernetes 默认使用 containerd/CRI-O;如使用 Docker,需确保与 kubelet 的 CRI 配置匹配
  • 版本与升级
    • 生产环境建议固定 kubelet/kubeadm/kubectl 版本,变更前在测试环境验证
  • 安全建议
    • 避免以 root 直接运行工作负载,使用 RBAC 最小权限
    • 开启 Pod SecurityOPA/Gatekeeper 进行准入控制
  • 网络与存储
    • 选择兼容的 CNI 插件(如 Flannel、Calico)
    • 有状态应用使用 PV/PVCStorageClass 提供持久化

0