本地调试kubernetes组件源码方法

安装etcd hack/install-etcd.sh export PATH="/home/blue/codes/kubernetes/third_party/etcd:${PATH}" 修改hack/local-up-cluster.sh,出以调试kube-apiserver为例 diff --git a/hack/local-up-cluster.sh b/hack/local-up-cluster.sh index e6195d73383..cfbabc65642 100755 --- a/hack/local-up-cluster.sh +++ b/hack/local-up-cluster.sh @@ -550,7 +550,7 @@ EOF APISERVER_LOG=${LOG_DIR}/kube-apiserver.log # shellcheck disable=SC2086 - ${CONTROLPLANE_SUDO} "${GO_OUT}/kube-apiserver" "${authorizer_arg}" "${priv_arg}" ${runtime_config} \ + ${CONTROLPLANE_SUDO} /opt/GoLand-2023.2.5/plugins/go-plugin/lib/dlv/linux/dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec -- "${GO_OUT}/kube-apiserver" "${authorizer_arg}" "${priv_arg}" ${runtime_config} \ ${cloud_config_arg} \ "${advertise_address}" \ "${node_port_range}" \ goland中添加golang远程调试配置。 启动本地集群 mkdir -p /var/run/kubernetes/ # 权限改成当前用户 chown -R blue:blue /var/run/kubernetes/ DBG=1 hack/local-up-cluster.sh 在出现这句提示时,点击启动调试按钮 此时等待集群启动完成,如果遇到不能启动,可查看/tmp/kube-apiserver.log找到具体原因。 kubectl --kubeconfig /var/run/kubernetes/admin.kubeconfig…

使用kwok测试kube-scheduler

kwok是Kubernetes WithOut Kubelet的缩写,意思是无需要kubelet的kubernetes,kwok可轻松部署数千节点的集群。通过kwok的控制器,实现让这些节点模拟真实节点的行为,从而做到在普通笔记本上部署大规模集群,帮助我们对一些核心组件进行性能测试。还有一个类似的工具叫做kubemark,虽然这个也不真实运行容器,但是要模拟多个节点需要多个kubemark实例,仍然会需要大量内存。 安装 安装docker。 这里,我们不使用官方的release版本,而是下载kwok代码到本地编译,此处我们需要修改一些参数配置,方便我们的测试。这里使用的是0.5分支,修改下列位置,主要添加了/debug/*接口跳过鉴权和调整client-go客户端qps配置(默认为50): diff --git a/pkg/kwokctl/components/kube_scheduler.go b/pkg/kwokctl/components/kube_scheduler.go index 07316fd..9541186 100644 --- a/pkg/kwokctl/components/kube_scheduler.go +++ b/pkg/kwokctl/components/kube_scheduler.go @@ -115,7 +115,7 @@ func BuildKubeSchedulerComponent(conf BuildKubeSchedulerComponentConfig) (compon if conf.SecurePort { if conf.Version.GE(version.NewVersion(1, 13, 0)) { kubeSchedulerArgs = append(kubeSchedulerArgs, - "--authorization-always-allow-paths=/healthz,/readyz,/livez,/metrics", + "--authorization-always-allow-paths=/healthz,/readyz,/livez,/metrics,/debug/*", ) } diff --git a/pkg/kwokctl/runtime/scheduler.go b/pkg/kwokctl/runtime/scheduler.go index f23701a..09bd9d0 100644 --- a/pkg/kwokctl/runtime/scheduler.go +++ b/pkg/kwokctl/runtime/scheduler.go @@ -30,6 +30,7 @@ func (c *Cluster) CopySchedulerConfig(oldpath, newpath, kubeconfig string) error err = c.AppendToFile(newpath, []byte(fmt.Sprintf(` clientConnection: kubeconfig: %q…