温馨提示×

Debian K8s安装有哪些坑

小樊
54
2025-08-14 06:04:47
栏目: 智能运维

在Debian上安装Kubernetes(K8s)时,需注意以下易踩坑点及解决方案:

一、系统环境配置问题

  1. 未关闭Swap分区

    • 问题:Kubernetes 1.8+要求关闭Swap,否则可能导致kubelet无法正常运行。
    • 解决方案:执行 sudo swapoff -a 并编辑 /etc/fstab 永久禁用Swap。
  2. 内核参数未正确配置

    • 问题:缺少 net.bridge.bridge-nf-call-iptables 等参数可能导致网络插件异常。
    • 解决方案:在 /etc/sysctl.d/99-kubernetes-k8s.conf 中添加相关参数并执行 sudo sysctl --system 生效。
  3. 防火墙规则未开放

    • 问题:默认防火墙(如UFW)可能拦截Kubernetes组件通信端口(如6443、2379等)。
    • 解决方案:使用 sudo ufw allow <端口号> 开放必要端口并重载防火墙。

二、依赖组件安装问题

  1. Containerd运行时配置错误

    • 问题:未正确加载内核模块(如overlaybr_netfilter)或未设置模块加载配置文件。
    • 解决方案:执行 sudo modprobe overlay br_netfilter,并确保 /etc/modules-load.d/containerd.conf 包含相关模块。
  2. Kubernetes组件版本不兼容

    • 问题:Kubernetes与Debian版本、Docker/containerd版本不匹配(如K8s 1.24+需弃用Docker,需使用containerd)。
    • 解决方案
      • 确认Debian版本支持(推荐Debian 12+)。
      • 使用 kubeadm config images set 指定镜像仓库,或通过 --ignore-preflight-errors 跳过版本检查(仅限测试环境)。

三、网络插件与集群初始化问题

  1. 网络插件部署失败

    • 问题:Calico/Flannel等插件需特定内核参数或端口,可能因防火墙或内核配置错误导致无法运行。
    • 解决方案
      • 确保已开放插件所需端口(如Calico需179、4789等UDP端口)。
      • 检查插件YAML文件是否与Kubernetes版本兼容,必要时手动修改API版本。
  2. 节点无法加入集群

    • 问题:主节点初始化后,工作节点执行 kubeadm join 时出现超时或证书错误。
    • 解决方案
      • 检查主节点日志 journalctl -u kubelet,确认API服务正常。
      • 确保工作节点与主节点的时间同步(使用NTP服务)。

四、其他常见问题

  1. 离线环境安装困难

    • 问题:无网络时无法拉取Kubernetes组件镜像。
    • 解决方案:提前下载离线安装包(如使用 kubeadm config images pull 保存镜像),并通过本地仓库加载。
  2. SELinux与AppArmor冲突

    • 问题:安全模块可能限制容器运行时权限,导致Pod启动失败。
    • 解决方案:临时关闭SELinux(sudo setenforce 0)或配置兼容策略。

参考来源

0