如下所示:
root@node1:~/cxl# kg po -A -l app=redis -o wide
NAME READY STATUS RESTARTS AGE IP
redis-84dbddc47-77nsl 1/1 Running 0 4d <none>
pod 自然一开始是有 ip 的,但是有一天发现突然这个 pod running 但是 ip 消失了。
cni 使用的是 multus + calico :
ip addr
查看网卡和 ip 也还在 一切 ok , 唯独 pod.status.podIP 不见了。
目前怀疑是 kubelet 更新 pod status 的时候把 ip 弄丢了(期间有重启过 kubelet ),但是没有复现,目前不清楚如何复现,暂时也没啥思路了。
大佬们有遇到这个问题吗?或者有什么排查思路吗?
1
duanjiong 53 天前
你这思路没问题啊, 就看看 kubelet 日志吧, 看看 kubelet 那部分更新状态的代码
|
![]() |
2
saka0609 53 天前
这种问题我也没碰到过
multus 我用的不多, 这里有什么报错么? 查出来了麻烦 @我下 |
![]() |
4
guanzhangzhang 52 天前
pod 内的 ip ,本机和其他节点能否 ping 通
发生频率高不高,是否是固定的节点 是否升级过啥东西后出现的,例如 cni plugin ,或者更改过啥配置参数 crictl inspect 从 CRI 协议去看看,对比看看 |
![]() |
5
cinlen OP @guanzhangzhang
@saka0609 错怪 kubelet 了,复现步骤是: 1. 重启 containerd(cri) ,所有 pod 的网络信息被清理(通过 `crictl inspectp <pod id> | jq .info.cniResult` 查看) 2. 重启 kubelet, kubelet 会去找 containerd 要所有 pod 的最新一手信息,containerd 此时会重新调用 cni 去要所有 pod 的网络信息 3. 从 containerd 日志看, 所有 pod 都重新要到了 ip 唯独 redis 这个 pod 压根没有去要, 于是 kubelet 就把 redis 的 pod.status.podIP 更新为空了 第 3 步暂时查不下去了,网络这块看的脑壳晕。 |
![]() |
7
guanzhangzhang 47 天前
@cinlen #5 这个和网络无关阿,看着是 containerd 的问题,调试看看,我要是有你这个问题环境,说不定我还能混个开源 pr 修复下
|