温馨提示×

Debian环境下Kubernetes如何运行

小樊
34
2025-12-30 18:42:14
栏目: 智能运维

在 Debian 上运行 Kubernetes 的标准做法

一 环境准备与前置条件

  • 硬件建议:每节点至少2 核 CPU2 GB RAM20 GB 磁盘;各节点需有唯一主机名时间同步互通网络
  • 禁用 Swap:执行swapoff -a,并在**/etc/fstab**中注释 swap 行,避免 kubelet 异常。
  • 容器运行时:选择其一并安装与启用(见下一节)。
  • 防火墙/安全组:放行控制面与工作节点所需端口(见文末端口表)。
  • 国内环境:可准备镜像源或代理,以加速拉取镜像与仓库访问。

二 安装容器运行时与 Kubernetes 组件

  • 安装 Docker(传统方式,适合入门与测试)
    • 更新并安装:sudo apt-get update && sudo apt-get install -y docker.io
    • 启动与开机自启:sudo systemctl enable --now docker
  • 安装 containerd(更贴近生产,CRI 原生)
    • 安装与生成默认配置:sudo apt-get install -y containerd
    • 生成并启用配置:sudo mkdir -p /etc/containerd && sudo containerd config default | sudo tee /etc/containerd/config.toml
    • 启动与开机自启:sudo systemctl enable --now containerd
  • 安装 kubeadm、kubelet、kubectl(所有节点)
    • 导入 GPG 并添加仓库(新版推荐方式,示例为 v1.33):
      • 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/ /” | sudo tee /etc/apt/sources.list.d/kubernetes.list
    • 更新索引并安装:sudo apt-get update && sudo apt-get install -y kubelet kubeadm kubectl
    • 锁定版本避免误升级:sudo apt-mark hold kubelet kubeadm kubectl
    • 启动 kubelet:sudo systemctl enable --now kubelet

三 初始化控制平面与加入工作节点

  • 初始化 Master(将 替换为你的主节点 IP)
    • 使用 Flannel 时推荐:sudo kubeadm init --apiserver-advertise-address= --pod-network-cidr=10.244.0.0/16
    • 国内镜像加速(可选):sudo kubeadm init --apiserver-advertise-address= --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16
  • 配置 kubectl(仅在 Master 执行)
    • mkdir -p $HOME/.kube
    • sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    • sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 安装 CNI 网络插件(二选一)
    • Flannel:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    • Calico:kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  • 加入 Worker 节点
    • 使用 kubeadm init 输出中的 kubeadm join 命令;若 Token 过期,在主节点执行:kubeadm token create --print-join-command 生成新命令。

四 验证与常见问题处理

  • 验证集群状态
    • kubectl cluster-info
    • kubectl get nodes(节点状态应为 Ready
    • kubectl get pods -A(系统 Pod 应为 Running)
  • 常见问题
    • 节点 NotReady:检查 CNI 是否已安装Pod CIDR 是否与网络插件一致(如 Flannel 默认 10.244.0.0/16)、kubelet 是否 Running
    • Token 过期:在主节点执行 kubeadm token create --print-join-command 获取新 join 命令。
    • 重置与重装:sudo kubeadm reset,必要时清理 /etc/cni/net.d 并重置 iptables。

五 端口与网络要求

节点角色 端口/协议 用途
控制平面 6443/TCP Kubernetes API Server
控制平面 2379–2380/TCP etcd 集群通信
控制平面 10250/TCP kubelet API
控制平面 10251/TCP kube-scheduler
控制平面 10252/TCP kube-controller-manager
工作节点 10250/TCP kubelet API
工作节点 30000–32767/TCP NodePort 服务端口范围

0