Kubernetes 集群 troubleshooting

2023年 1月 4日 45.0k 0

FailedCreatePodSandBox

  • 错误

Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:402: getting the final child's pid from pipe caused: EOF: unknown

  • 处理

清理 cache

1
echo 3 > /proc/sys/vm/drop_caches
  • 原因

内存碎片过多

calico-node 不停重启

  • 错误

runtime: failed to create new OS thread (have 11 already; errno=11),runtime: may need to increase max user processes (ulimit -u)

  • 处理

增加 ulimit 限制额度

1
ulimit -u unlimited
  • 原因

用户进程数耗尽

应用起不来,cgroup 内存泄露问题

  • 错误

mkdir /sys/fs/cgroup/memory/kubepods/burstable/pod7a1e89bd-b85e-46c6-9674-bbfd3ead02d1: cannot allocate memory如果有 fork 相关字样,可能是 PID 耗尽。

  • 临时处理

清理 cache

1
echo 3 > /proc/sys/vm/drop_caches
  • 永久处理
  • 修改 /etc/default/grub
  • GRUB_CMDLINE_LINUX 加上了 cgroup.memory=nokmem

  • 生成配置
  • /usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg

  • 重启机器
  • reboot

    • 原因

    cgroup 内存泄露

    kubectl 404 page not found

    • 错误

    执行 kubectl exec 时,报错 error: unable to upgrade connection: 404 page not found

    • 处理

    在 kubelet 启动参数中添加当前节点的 IP,Environment="KUBELET_EXTRA_ARGS=--node-ip=x.x.x.x"

    • 原因

    安装工具未能准确识别主机 IP

    容器内系统调用出错、没权限

    • 错误

    Problem executing scripts Post-Invoke Sub-process returned an error code 没权限提示

    • 处理

    在运行时,添加参数 --security-opt seccomp=unconfined 禁用 seccomp

    • 原因

    内核中的 Seccomp 安全模块,限制了容器对主机的系统调用能力。

    NodePort 服务不能通过 localhost 访问

    • 错误

    NodePort 暴露的服务,不能通过 localhost:port 访问,只能通过主机的 ip:port 访问。

    • 处理

    检测回环转发参数

    1
    
    sysctl net.ipv4.conf.all.route_localnet
    

    临时生效

    1
    
    sysctl -w net.ipv4.conf.all.route_localnet=1
    

    永久生效

    1
    
    echo "net.ipv4.conf.all.route_localnet=1" >> /etc/sysctl.conf && sysctl -p
    
    • 原因

    ipvs 模式默认关闭了该转发路径

    fork/exec /usr/bin/runc 无法创建 Pod

    • 错误
    1
    
    OCI runtime create failed: unable to retrieve OCI runtime error (open /run/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/488165d6dd80c997d252ac1a5f36f41edc567cc828d98c0c0b8f1c2acf2e2524/log.json: no such file or directory): fork/exec /usr/bin/runc
    
    • 处理

    查看 PID 限制

    1
    
    cat /proc/sys/kernel/pid_max
    

    查看当前用户使用

    1
    
    ps -eLf | wc -l
    

    永久调大 PID 限制

    echo "kernel.pid_max=65535 " >> /etc/sysctl.conf && sysctl -p
    

    相关文章

    KubeSphere 部署向量数据库 Milvus 实战指南
    探索 Kubernetes 持久化存储之 Longhorn 初窥门径
    征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
    那些年在 Terraform 上吃到的糖和踩过的坑
    无需 Kubernetes 测试 Kubernetes 网络实现
    Kubernetes v1.31 中的移除和主要变更

    发布评论