温馨提示×

Debian上Kubernetes的安装与配置

小樊
45
2025-12-21 01:13:41
栏目: 智能运维

在 Debian 12 上使用 kubeadm 安装与配置 Kubernetes 集群

一 环境准备与系统设置

  • 硬件建议:每个节点至少 2 核 CPU / 2 GB RAM / 20 GB 磁盘,并具备 sudo 权限与稳定网络。
  • 设置主机名与解析(示例):
    • 控制平面:sudo hostnamectl set-hostname k8s-master01.test.local
    • 工作节点:sudo hostnamectl set-hostname k8s-worker01.test.local
    • 所有节点 /etc/hosts 追加:
      • 192.168.16.20 k8s-master01.test.local k8s-master01
      • 192.168.16.21 k8s-worker01.test.local k8s-worker01
      • 192.168.16.22 k8s-worker02.test.local k8s-worker02
  • 关闭 Swap:
    • sudo swapoff -a
    • sudo sed -i ‘/ swap / s/^(.*)$/#\1/g’ /etc/fstab
  • 内核与转发参数:
    • cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
      overlay
      br_netfilter
      EOF
    • sudo modprobe overlay && sudo modprobe br_netfilter
    • cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf
      net.bridge.bridge-nf-call-iptables = 1
      net.ipv4.ip_forward = 1
      net.bridge.bridge-nf-call-ip6tables = 1
      EOF
    • sudo sysctl --system
  • 防火墙(如启用 UFW):
    • 控制平面放行:6443/tcp、2379/tcp、2380/tcp、10250/tcp、10251/tcp、10252/tcp、10255/tcp
    • 工作节点放行:10250/tcp、30000:32767/tcp
    • 执行:sudo ufw allow <端口或范围> && sudo ufw reload

二 安装容器运行时 Containerd

  • 安装:sudo apt update && sudo apt -y install 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 = false 改为 true
    • 可选(提升拉取速度):将 sandbox_image 调整为 registry.aliyuncs.com/google_containers/pause:3.9
  • 重启并自启:sudo systemctl restart containerd && sudo systemctl enable containerd

三 安装 kubeadm kubelet kubectl

  • 安装依赖:sudo apt install -y curl gpg
  • 添加 Kubernetes APT 仓库(Debian 12 推荐新仓库):
    • curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo 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.28/deb/ /” | 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

四 初始化控制平面与配置 kubectl

  • 初始化(单控制平面示例):
    • sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    • 如在国内环境拉取镜像慢,可加:–image-repository registry.aliyuncs.com/google_containers
  • 配置 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
    • Calico:kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  • 工作节点加入:在 master 初始化输出中获取命令,形如:
    • sudo kubeadm join :6443 --token --discovery-token-ca-cert-hash sha256:
  • 验证:
    • kubectl cluster-info
    • kubectl get nodes
    • kubectl get pods -n kube-system

五 常见问题与优化

  • 镜像拉取失败:使用国内镜像仓库(如 registry.aliyuncs.com/google_containers)或配置 containerd 镜像加速。
  • Pod 无法跨节点通信:确认已安装 CNI 插件(Flannel/Calico),且 Pod CIDR 与插件配置一致(如 10.244.0.0/16)。
  • 节点 NotReady:检查 containerdkubelet 状态、内核参数与防火墙端口。
  • 需要更高可用:部署多控制平面(kubeadm HA)并配置 kube-proxykeepalived/haproxy
  • 安全加固:启用 RBAC、限制 kubelet 匿名访问、开启审计日志、定期升级集群版本。

0