前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K8s系列一之Controller Manager源码调试环境搭建

K8s系列一之Controller Manager源码调试环境搭建

原创
作者头像
用户9511949
发布2024-09-01 10:58:10
1260
发布2024-09-01 10:58:10

1 概要

本文主要介绍下如何在本地进行Controller Manager代码的调试,对于想要阅读各个控制器代码细节的同学可以参考参考。总的思路就是先在本地启动一个k8s集群,然后将Controller Manager组件删掉,然后将k8s的源码从github上clone下来,checkout到对应的版本,用Goland打开,找到Controller Manager的main函数以debug模式启动代替集群中的Controller Manager组件,这样就可以断点逐行调试。

2 环境准备

我本地使用的环境

操作系统:Ubuntu 20.04.3(虚拟机或者物理机)

Docker:20.10.8

Kubernetes:1.22.2

go:1.22.3

Goland:2024.2

安装k8s集群

在调试之前需要在本地安装一个k8s集群,由于只是调试Controller Manager,所以只需要一个单节点的集群即可,单节点的集群安装这里就不阐述了,网上很多。

删除Controller Manager组件

集群启动好之后,首先进入到/etc/kubernetes/manifests目录找到kube-controller-manager.yaml文件,如下

manifests
manifests

kube-controller-manager.yaml文件中定义的是Controller Manager的Pod配置,如下

CM Pod
CM Pod

将文件中的command的启动参数复制出来,然后将kube-controller-manager.yaml删除(一定要删除,修改文件名称都不行),确保kube-system这个命名空间没有Controller Manager组件,如下

No CM Pod
No CM Pod

Goland配置

在Goland中找到Controller Manager的main函数以debug模式启动

CM Main
CM Main

这里第一次启动肯定不成功,因为没有配置,主要是为了在Goland中添加一条启动的历史记录,然后点击Edit Configurations配置

Edit Configurations
Edit Configurations

这里主要配置下Program arguments参数,将刚才从kube-controller-manager.yaml文件复制出来的启动参数配置在这里,如果是非root用户启动的Goland,那么需要勾选上Run with sudo,不然启动的时候有些配置文件没权限加载,如下

Program Arguments
Program Arguments
Run With Sudo
Run With Sudo

配置好了之后再次启动即可,启动完成之后可以自己apply一个deployment试试看能不能转到Goland中,我本地的效果如下,

这样就可以愉快的deubg代码了

Debug
Debug

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 概要
  • 2 环境准备
    • 安装k8s集群
      • 删除Controller Manager组件
        • Goland配置
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档