Preface

标准版的k8s安装部署难度比较大,本地开发环境一般都是用minukube、k3d之类的缩小版kubernetes。

本文介绍如何在本地开发环境搭建一个minikube(k8s的单机版),重点介绍如何进行controller、operator等开发调试。

环境准备

你应该准备以下两个环境:

  1. 本地开发环境——就是你本地windows(macos类似,供参考),安装要开发的IDE及语言环境,比如goland、vscode等;
  2. 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

参考资料: