从 kubernetes-master 中删除 kube-apiserver(仅用于测试和理解)
Deleting kube-apiserver from kubernetes-master (just for testing and understanding)
从 kubernetes-master 中删除 kube-apiserver 不会阻止 kubectl 查询 pods。我一直明白,kube-apiserver是负责和master通信的。
我的问题:kubectl 如何在 kube-apiserver 仍在重启时仍然能够查询 pods?是否有任何官方文档涵盖此行为?
您的理解是正确的。 Kubernetes API 服务器验证并配置 api 对象的数据,其中包括 pods、服务、复制控制器等。 API 服务器为 REST 操作提供服务,并为集群的共享状态提供前端,所有其他组件通过该状态进行交互。因此,如果您的 api-server
pod 遇到一些问题,您将无法让您的客户端与其通信。
发生的事情是,当您删除 api-server
pod 时,它会立即重新创建,因此您的客户端能够连接并获取数据。
为了提供一个示例,我通过摆弄 /etc/kubernetes/manifests
:
中的 kube-apiserver.yaml
文件模拟了 api-server pod 故障
➜ 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 桌面中获取这些清单可能很棘手,具体取决于您 运行 它的位置。请查看 案例,其中答案显示了解决方案。
从 kubernetes-master 中删除 kube-apiserver 不会阻止 kubectl 查询 pods。我一直明白,kube-apiserver是负责和master通信的。
我的问题:kubectl 如何在 kube-apiserver 仍在重启时仍然能够查询 pods?是否有任何官方文档涵盖此行为?
您的理解是正确的。 Kubernetes API 服务器验证并配置 api 对象的数据,其中包括 pods、服务、复制控制器等。 API 服务器为 REST 操作提供服务,并为集群的共享状态提供前端,所有其他组件通过该状态进行交互。因此,如果您的 api-server
pod 遇到一些问题,您将无法让您的客户端与其通信。
发生的事情是,当您删除 api-server
pod 时,它会立即重新创建,因此您的客户端能够连接并获取数据。
为了提供一个示例,我通过摆弄 /etc/kubernetes/manifests
:
kube-apiserver.yaml
文件模拟了 api-server pod 故障
➜ 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 桌面中获取这些清单可能很棘手,具体取决于您 运行 它的位置。请查看