从 kubernetes-master 中删除 kube-apiserver 不会阻止 kubectl 查询 pod。我一直都明白,kube-apiserver是负责和master通信的。
我的问题:kubectl 如何在 kube-apiserver 仍在重新启动时仍然能够查询 pod?是否有任何官方文档涵盖此行为?
从 kubernetes-master 中删除 kube-apiserver 不会阻止 kubectl 查询 pod。我一直都明白,kube-apiserver是负责和master通信的。
我的问题:kubectl 如何在 kube-apiserver 仍在重新启动时仍然能够查询 pod?是否有任何官方文档涵盖此行为?
你的理解是正确的。Kubernetes API服务器验证和配置 api 对象的数据,包括 pod、服务、复制控制器等。API Server 为 REST 操作提供服务,并为集群的共享状态提供前端,所有其他组件通过该前端进行交互。因此,如果您的api-server
pod 遇到一些问题,您将无法让您的客户端与之通信。
发生的情况是,当您删除api-server
pod 时,它会立即重新创建,因此您的客户端能够连接并获取数据。
为了提供一个示例,我通过摆弄以下kube-apiserver.yaml
文件中的文件来模拟 api-server pod 故障/etc/kubernetes/manifests
:
➜ manifests pwd
/etc/kubernetes/manifests
一旦这样做,我就无法再连接到api-server
:
➜ manifests kubectl get pods -A
The connection to the server 10.128.15.230:6443 was refused - did you specify the right host or port?
在 docker desktop 中获取这些清单可能会很棘手,这取决于您在哪里运行它。请查看此案例,其中答案显示解决方案。