温馨提示×

Debian如何快速搭建Kubernetes环境

小樊
45
2025-12-15 02:27:42
栏目: 智能运维

在 Debian 上使用 kubeadm 快速搭建单主集群

一 环境准备

  • 至少准备 2 核 CPU、2GB 内存、20GB 磁盘,节点间网络互通,建议使用 Debian 12
  • 所有节点执行:
    • 更新系统:sudo apt update && sudo apt upgrade -y
    • 关闭 Swap:sudo swapoff -a && sudo sed -i '/ swap / s/^/#/g' /etc/fstab
    • 可选:设置主机名并写入 /etc/hosts,便于解析(如:master 与 workers 互指)。

二 安装容器运行时 Containerd(推荐)

  • 加载内核模块与网络参数:
    • echo -e "overlay\nbr_netfilter" | sudo tee /etc/modules-load.d/containerd.conf
    • sudo modprobe overlay && sudo modprobe br_netfilter
    • cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf\nnet.bridge.bridge-nf-call-iptables = 1\nnet.ipv4.ip_forward = 1\nnet.bridge.bridge-nf-call-ip6tables = 1\nEOF
    • sudo sysctl --system
  • 安装并配置 Containerd:
    • sudo apt update && sudo apt install -y containerd
    • containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
    • 编辑 /etc/containerd/config.toml,在 [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] 下添加:SystemdCgroup = true
    • sudo systemctl restart containerd && sudo systemctl enable containerd
      说明:Kubernetes 官方当前推荐 Containerd 作为运行时;如使用 Docker,需确保其内置的 containerd 正确配置并启用 。

三 安装 kubeadm kubelet kubectl

  • 添加 Kubernetes APT 源并安装组件:
    • sudo apt update && sudo apt install -y apt-transport-https curl gnupg
    • curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/kubernetes-archive-keyring.gpg
    • echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    • sudo apt update && sudo apt install -y kubelet kubeadm kubectl
    • sudo apt-mark hold kubelet kubeadm kubectl
  • 启动 kubelet:sudo systemctl enable --now kubelet
    说明:上述源与步骤适用于 Debian 11/12 的快速部署场景 。

四 初始化控制平面并安装网络插件

  • 在主节点初始化(单主最简命令):
    • sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    • 如需自定义网段:--pod-network-cidr=192.168.0.0/16 --service-cidr=10.96.0.0/12
  • 配置 kubectl:
    • mkdir -p $HOME/.kube
    • sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    • sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 安装网络插件(Flannel):
    • kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  • 加入工作节点:
    • 使用 kubeadm init 输出中的 kubeadm join ... --token <token> --discovery-token-ca-cert-hash sha256:<hash> 在各 worker 上执行
  • 验证:
    • kubectl cluster-info
    • kubectl get nodes
      说明:Flannel 的默认 Pod CIDR 为 10.244.0.0/16,与初始化参数保持一致即可 。

五 防火墙与常见问题

  • 防火墙放行端口(如使用 UFW):
    • 控制平面:6443/tcp、2379-2380/tcp、10250-10252/tcp、10255/tcp
    • 工作节点:10250/tcp、30000:32767/tcp(NodePort 范围)
  • 常见问题速查:
    • 节点 NotReady:多因网络插件未就绪或 Pod CIDR 不匹配,检查 kubectl get pods -n kube-system 与初始化参数。
    • 镜像拉取慢:可配置国内镜像仓库或使用 image-repository 参数(如 registry.aliyuncs.com/google_containers)。
    • 加入命令过期:在主节点执行 kubeadm token create --print-join-command 重新生成。
    • 虚拟化克隆环境:确保各节点 MAC 地址product_uuid 唯一,避免 kubelet 误判为同一节点 。

0