如何在 Kind 中自定义 kubernetes 系统 pod(例如 kube-apiserver)的参数?

How can I customize the arguments to a kubernetes system pod such as kube-apiserver in Kind?

我想自定义 kube-apiserver 的参数,以便我可以检查正在发出的请求,以便我可以调试失败的请求。但是,我不确定我需要修改什么。我知道 kube-apiserver 不能与 helm 一起部署,因为 helm 需要一个 API 服务器才能完成它的工作。所以它一定是通过其他一些引导方法部署的,但是看着那种源代码我无法弄清楚那个方法是什么。

kube-apiserver配置了静态manifest文件,存储在/etc/kubernetes/manifests/kube-apiserver.yaml.

于是实物找出作为Kubernetes控制平面节点的容器ID:

docker ps|grep cluster-control-plane

在里面得到一个shell:

docker exec -it 4aeedccce928 bash

安装编辑器(例如emacs)并将上述文件编辑为add/remove/replace the desired arguments:

apt-get update
apt-get install emacs-nox
emacs /etc/kubernetes/manifests/kube-apiserver.yaml

Kubernetes 将检测文件更改并自动重启服务器,可以通过以下方式验证:

ps -Afl|grep kube-apiserver

如果它在启动时崩溃,您可以使用

找到日志
apt-get install less
less /var/log/pods/kube-system_kube-apiserver-cluster-control-plane_*/*/*.log

如果容器根本无法启动,那里不会有任何日志文件 - 请参考 Kubernetes 文档检查清单文件中是否存在语法错误。