记一次 kubeflow notebook-srever not ready
程序员文章站
2024-03-11 10:50:01
...
环境: kubeflow 1.1.0, kubernetes 1.15.3, centos7.6
问题: 通过 kubeflow dashboard 部署应用,发现应用 not ready。
1、查看 pod 日志, 发现 Envoy proxy is NOT ready
kb logs -f x-0 -c istio-proxy -n nvidia-gpu
...
info Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 0 successful, 0 rejected; lds updates: 0 successful, 0 rejected
...
2、查看 pilot 服务正常。多次部署 app,发现只要 app pod 落在一个节点 node1 上,就会出现 ilstio-proxy not ready 问题。
3、查看 node1 节点上的 istio-nodeagent 日志,发现无法获取 secret
kubectl logs -f istio-nodeagent-br5j5 -n istio-system
...
error sdsServiceLog CONNECTION ID: sidecar~10.253.12.32~x-0.nvidia-gpu.svc.cluster.local-7538, RESOURCE NAME: ROOTCA,EVENT:close connection. Failed to get secret for proxy "sidecar~10.253.12.32~x-0.nvidia-gpu.svc.cluster.loca" from secret cache: failed to get root cert.
...
4、网上搜索,未找到解决方法。去 github 官方提问,官方说目前不支持 istio1.3 版本了,不会修复。istio 确实更新很快,而且从 1.5 版本起又有大的结构变动。至于说 kubeflow1.1.0 还采用 istio1.3,这个就很恼火了,或许是自定义更方便吧。
5、上 istio 官网查看 istio1.3 的 sds 文档,发现每个节点的 istio-nodeagent 向 citadel 请求证书签名。查看 citadel 日志,内容大概如下
invalid bearer token, token has expired.
6、重启 citadel,问题解决
kubectl delete po istio-citadel-*** -n istio-system