kubernetes - 从 kubernetes-master 中删除 kube-apiserver(仅用于测试和理解)
问题描述
从 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 中获取这些清单可能会很棘手,这取决于您在哪里运行它。请查看此案例,其中答案显示解决方案。
推荐阅读
- java - 尝试将图像从 jsp 发送到 servlet,然后再发送到 DB2 数据库
- javascript - 在 React-Redux 中,如何仅单击父组件,而不单击子组件?
- string - Rust:连接两个 expr.to_string() 值
- python - 如何将烧瓶应用程序添加为另一个网站的组件?
- java - 如何打包使用 JDK 11 或 JDK 14(及更高版本)构建且无需安装且包含 JRE 的 JavaFX 应用程序?
- python - FileNotFoundError: [WinError 2] 系统找不到指定的文件但路径正确
- javascript - jQuery addClass 和 toggleClass 不起作用
- javascript - chrome.runtime.sendMessage 在单击时不起作用(清单 V3 chrome 扩展)
- python - 当开始和结束的两个字符相等时最长回文递归方法为什么我们将计数与字符串的其余部分进行比较?
- arrays - 控制数组中元素的出现