首页主机资讯Debian部署Kubernetes的常见问题及解决方案

Debian部署Kubernetes的常见问题及解决方案

时间2025-12-19 12:33:04发布访客分类主机资讯浏览579
导读:Debian部署Kubernetes常见问题与解决方案 一 环境准备与内核网络 关闭 Swap:Kubernetes 要求关闭 Swap,否则 kubelet 预检失败。执行:sudo swapoff -a,并在 /etc/fstab 中...

Debian部署Kubernetes常见问题与解决方案

一 环境准备与内核网络

  • 关闭 Swap:Kubernetes 要求关闭 Swap,否则 kubelet 预检失败。执行:sudo swapoff -a,并在 /etc/fstab 中注释包含 swap 的行,确保重启后仍然生效。
  • 加载内核模块与开启转发:启用 overlay、br_netfilter 并设置桥接流量走 iptables,开启 IPv4 转发。示例:
    cat < < EOF | sudo tee /etc/modules-load.d/k8s.conf
    overlay
    br_netfilter
    EOF
    sudo modprobe overlay & & sudo modprobe br_netfilter
    cat < < EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.ipv4.ip_forward = 1
    EOF
    sudo sysctl --system
  • 防火墙与端口:确保节点间以下端口放通(示例以 UFW 为例):
    sudo ufw allow 6443/tcp
    sudo ufw allow 2379/tcp,2380/tcp
    sudo ufw allow 10250/tcp,10251/tcp,10252/tcp,10255/tcp
    如未使用 UFW,请改用 iptables/nftables 或云安全组规则放行相同端口。
  • 容器运行时选择:自 v1.20 起,Kubernetes 移除对 Docker 的直接支持,推荐使用 containerdCRI-O;若必须使用 Docker,需通过 cri-dockerd 适配。
  • 系统版本建议:优先选择 Debian 12,与主流 K8s 版本兼容性更好。

二 初始化与加入集群

  • 安装 kubeadm/kubelet/kubectl:在所有节点安装相同版本组件,并标记为 hold 防止误升级:sudo apt install -y kubelet kubeadm kubectl & & sudo apt-mark hold kubelet kubeadm kubectl。
  • 初始化控制平面:示例(按需替换参数):
    sudo kubeadm init --pod-network-cidr 10.244.0.0/16
    常见可追加参数:–apiserver-advertise-address、–control-plane-endpoint、–image-repository(如国内镜像源)、–service-cidr。
  • 配置 kubectl:
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 工作节点加入:使用 kubeadm init 输出的 join 命令;若 Token 过期 或配置异常,在主节点重新生成后再加入:
    kubeadm token create --print-join-command
  • 验证:kubectl cluster-info、kubectl get nodes(状态应为 Ready)。

三 网络与 DNS 故障

  • 网络插件未就绪:部署 Flannel/Calico 后若 Pod 间或节点间不通,先检查 DaemonSet 是否 Running:kubectl get pods -n kube-system -l app=flannel(或 calico)。异常时清理后重装:kubectl delete -f < plugin.yaml> 再 apply。
  • Pod 网段与控制平面 Service 网段冲突:初始化时确保 –pod-network-cidr–service-cidr 不重叠;常见组合为 pod 10.244.0.0/16、service 10.96.0.0/12
  • 内核转发与桥接参数未生效:若仍出现同节点 Service 不通或跨节点不通,复核 br_netfilter、ip_forward 是否加载并生效(见第一部分)。
  • DNS 解析异常:确认 CoreDNS 运行正常:kubectl get pods -n kube-system -l k8s-app=coredns;若 CrashLoopBackOff,查看日志并核查上游 DNS、存活性探针与网络连通性。

四 镜像拉取与容器运行时

  • ErrImagePull/ImagePullBackOff:
    • 核对镜像名与标签是否正确;
    • 使用国内镜像仓库或自建镜像仓库;
    • 私有仓库需配置 /etc/docker/certs.d//ca.crt
    • 可手动 docker pull 并重新打 tag 验证。
  • 使用 Docker 作为运行时的适配:Kubernetes v1.24+ 移除内置 dockershim,需部署 cri-dockerd 并在 kubeadm 配置中指定 criSocket(/var/run/cri-dockerd.sock)。
  • 版本兼容:若 Docker 版本不在验证列表,优先选择与 K8s 兼容的版本,或调整 K8s 组件版本;升级时遵循官方兼容矩阵与升级策略。

五 节点与资源问题

  • 节点 NotReady:常见原因为 kubelet 异常、容器运行时未就绪、网络插件未部署或内核参数缺失。按顺序排查:
    • systemctl status kubelet;journalctl -u kubelet -xe
    • crictl ps -a(或 docker ps)确认容器运行时可用
    • kubectl describe node 查看 ConditionsEvents
  • 资源不足导致 Pod 被驱逐(Evicted):检查磁盘与内存压力(kubectl describe node、节点监控),清理无用镜像/日志,必要时扩容节点或设置资源请求/限制。
  • 权限与 kubeconfig:确保执行 kubectl 的用户拥有 /etc/kubernetes/admin.conf 读取权限,或正确设置 KUBECONFIG 环境变量;集群 RBAC 策略应授予所需权限。
  • 服务访问异常:核查 Service 类型(ClusterIP/NodePort/LoadBalancer)、端口映射、外部负载均衡/Ingress 配置与证书有效性。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian部署Kubernetes的常见问题及解决方案
本文地址: https://pptw.com/jishu/776137.html
Debian部署Kubernetes的网络策略设置 ThinkPHP在Debian中的安全设置方法

游客 回复需填写必要信息