首页 > 解决方案 > 从 kubernetes-master 中删除 kube-apiserver(仅用于测试和理解)

问题描述

从 kubernetes-master 中删除 kube-apiserver 不会阻止 kubectl 查询 pod。我一直都明白,kube-apiserver是负责和master通信的。

我的问题:kubectl 如何在 kube-apiserver 仍在重新启动时仍然能够查询 pod?是否有任何官方文档涵盖此行为?

在此处输入图像描述

标签: kuberneteskube-apiserver

解决方案


你的理解是正确的。Kubernetes API服务器验证和配置 api 对象的数据,包括 pod、服务、复制控制器等。API Server 为 REST 操作提供服务,并为集群的共享状态提供前端,所有其他组件通过该前端进行交互。因此,如果您的api-serverpod 遇到一些问题,您将无法让您的客户端与之通信。

发生的情况是,当您删除api-serverpod 时,它会立即重新创建,因此您的客户端能够连接并获取数据。

为了提供一个示例,我通过摆弄以下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 中获取这些清单可能会很棘手,这取决于您在哪里运行它。请查看案例,其中答案显示解决方案。


推荐阅读