本地调试kubernetes组件源码方法

欢迎加入本站的kubernetes技术交流群,微信添加:加Blue_L。


安装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 get pod

设置断点进行测试,在下列文件中加入断点:pkg/registry/core/pod/storage/storage.go。

运行一个pod,测试上述断点。

kubectl --kubeconfig /var/run/kubernetes/admin.kubeconfig run nginx-test --image=nginx

查询刚才创建的pod

kubectl --kubeconfig /var/run/kubernetes/admin.kubeconfig get pod nginx-test

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注