温馨提示×

Debian上K8s安装有哪些技巧

小樊
38
2025-12-09 03:46:02
栏目: 智能运维

Debian上安装Kubernetes的实用技巧

一 基础准备与系统设置

  • 建议使用Debian 12(Bookworm),资源基线至少2核CPU、2GB内存、20GB磁盘,节点间网络互通且最好使用静态IP
  • 设置主机名与**/etc/hosts**解析,便于集群内通信与排障。
  • 关闭swap:执行swapoff -a并注释/etc/fstab中的swap行,避免kubelet异常。
  • 开启内核模块转发:加载overlaybr_netfilter,开启net.bridge.bridge-nf-call-iptables=1net.ipv4.ip_forward=1,使容器网络与K8s策略生效。
  • 保持时间同步(如NTP),避免证书校验与调度异常。

二 容器运行时选择与配置

  • 优先选择containerd(与K8s集成更紧密、维护成本更低):
    • 安装后生成默认配置:containerd config default > /etc/containerd/config.toml
    • [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]下设置SystemdCgroup = true,与systemd驱动一致。
    • 重启并设为开机自启:systemctl restart containerd && systemctl enable containerd
  • 若使用Docker:安装docker-cecontainerd.io,启动并设为开机自启。
  • 提示:无论哪种运行时,都需确保上述内核与sysctl已正确配置。

三 kubeadm初始化与网络插件

  • 安装工具链:在所有节点安装kubeletkubeadmkubectl,并apt-mark hold避免被系统升级干扰。
  • 初始化控制平面(示例):
    • 使用Flannel时:kubeadm init --pod-network-cidr=10.244.0.0/16
    • 使用Calico时:kubeadm init --pod-network-cidr=192.168.0.0/16
      不同网络插件的Pod CIDR需与插件文档一致,否则Pod网络不通。
  • 配置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/tigera-operator.yamlkubectl apply -f https://docs.projectcalico.org/manifests/custom-resources.yaml
  • 加入工作节点:在Master上复制kubeadm join ...命令在各Node执行。

四 防火墙与端口规划

  • 若使用UFW
    • 控制平面放行:6443/tcp(API)2379-2380/tcp(etcd)10250/tcp(kubelet)10251/tcp(kube-scheduler)10252/tcp(kube-controller-manager)10255/tcp(kubelet health)
    • 工作节点放行:10250/tcp、以及NodePort范围30000-32767/tcp(如启用NodePort服务)。
  • 如使用firewalld,请按等价的区域与端口规则放行,确保节点与控制平面之间的双向可达。

五 常见问题与快速排查

  • 节点NotReady:优先检查CNI网络插件是否已成功部署、Pod CIDR是否与插件匹配、以及节点内核参数模块是否加载。
  • kubelet反复重启:确认swap已关闭SystemdCgroup设置与运行时一致、以及容器运行时处于active状态。
  • 镜像拉取慢或失败:在kubeadm init时使用--image-repository registry.aliyuncs.com/google_containers加速;或提前在各节点docker pull/ctr images pull所需镜像。
  • Pod间/外网不通:核对Pod CIDRService CIDR是否冲突,检查NodePort与安全组/防火墙策略。
  • 加入集群失败:重新生成tokenCA证书哈希kubeadm token create --print-join-command),确保时间同步与API可达。
  • 虚拟机克隆环境:确保各节点MAC地址product_uuid唯一,避免kubelet识别异常。

0