Preface
标准版的k8s安装部署难度比较大,本地开发环境一般都是用minukube、k3d之类的缩小版kubernetes。
本文介绍如何在本地开发环境搭建一个minikube(k8s的单机版),重点介绍如何进行controller、operator等开发调试。
环境准备
你应该准备以下两个环境:
- 本地开发环境——就是你本地windows(macos类似,供参考),安装要开发的IDE及语言环境,比如goland、vscode等;
- k8s试验环境——我在本机装了一个deepin虚拟机,用来模拟生产环境,安装了minikube(单机版k8s)。
我们一般都是在windows(Macos)上进行代码开发,最后代码的运行态是在Linux上。Macos这里不太清楚,关于开发环境对windows再补充下。
所以一般是开发环境与试验环境分开,当然了,你也可以两个环境一样的。比如windows10及以上版本,可以开启ubuntu on windows。
minikube安装
Minikube也是google推荐的k8s试验环境,可看作是单机版的k8s。可安装到虚拟机上,供学习开发使用。
安装这里不是本文重点,所以请自行进行minikube安装,必要时,建议使用科学上网。
连接远程k8s
复制配置文件到本地
.kube.minikube
~/.kube/config
.kubeC:\Users\你登录的用户名.minikube.kube.minikube
.kube.kuberoot.minikuberoot.kube/config
添加ssh端口转发
kubectl cluster-info
windows端口转发,打开windows的cmd,输入命令:
/etc/ssh/sshd_configPermitRootLogin yesservice sshd restart
此时可以在本地开发环境通过curl进行简单验证:
开发调试
如果要进行k8s的controller、operator的开发,最重要的一个问题就是如何在本地IDE上进行debug。
这里以通过knative开发controller代码为例,代码位置:knative-sample-controller。也可以使用官方提供的controller模板:knative-sanbox/sample-controller。
SimpleDeploymentAddressableSimpleDeployment
代码主要目录结构如下:(本文不对代码展开,后面我会单独开一帖讲代码)
在实验环境上创建crd,执行命令:
golandcmd/controller/main.go
没有报错,此时可认为启动成功。
然后在核心逻辑的go文件上标记断点,开始准备debug。
example-simple-deployment.yaml
执行命令创建crd:
此时idea上断点已生效:
放行后,可以通过如下命令看到创建的pod:
replicas
同样的,其他的操作,如手动删除其中一个pod同样也可以在ide上捕获倒断点,此时可以尽情调试了。
kubectl远程操作(可选)
在你的本机开发环境,添加远程主机端口转发,安装kubectl,进而可以直接你本地进行kubectl远程操作。
kubectlunix2dos
本地kubectl安装,安装比较简单,可以直接参考官方的安装方式:Install Tools | Kubernetes
这里简单说下linux的安装:
简化下命令(可选):
验证:如果前面你已经添加了端口转发,那么通过如下命令可查看当前节点信息:
192.168.49.2:8443
参考资料: