使用docker在Windows系统下编写k8s的operator
前言
编写k8s的operator往往会用到kubebuilder或operator-sdk,在linux或者苹果系统下,可以很方便的在github上下载对应工具的二进制编译版本,在windows系统上要想运行就没这么容易了,写这篇文章的目的是为了帮助更多的小伙伴在windows系统上也能简单开发operator
安装docker
注意: 此教程仅适用于windows系统
1、添加新功能
程序与功能添加新功能:适用于linux的的Windows子系统
2、下载docker-desktop
在下面的链接下载docker-desktop www.docker.com/products/do…
傻瓜式安装,一直下一步就行
3、启动docker-desktop
直接双击打开,第一次打开可能会报一个WSL的错误,拿着错误去百度一下,需要下载一个wsl的更新包安装
4、启动Kubernetes
之前我都是在windows上启动一个k8s的虚拟机,占用很大资源,新版本的docker-desktop支持一键部署一个指定版本的K8S,在设置这里勾选上等待就好了,左下角全部变为绿色启动状态,启动成功
创建目录
在E盘下创建一个data目录,这个目录用于挂载之后kubebuilder容器内的代码目录
启动kubebuild-operator容器
可以直接用我打包好的镜像,基础镜像使用的centos
- 支持ssh,端口22,默认密码000000
- 已安装kubebuilder、operator-sdk、kubectl、make环境
- 已配置阿里yum源,安装软件直接yum install
开始运行:
docker run -itd --name myoperator --restart=always --privileged=true -p 8022:22 -v E:\data:/data chenteng/kubebuilder-operator:v1
容器状态为Running代表启动成功,使用8022与默认密码ssh连接容器,编码文件必须存放在/data目录下
拷贝kubeconfig文件到容器内的/root/.kube,kubeconfig文件默认存在windowsC盘用户目录下的.kube文件夹
kubectl cp config myoperator:/root/.kube
进入容器,连接到k8s集群
C:\Users\Administrator>docker exec -it myoperator bash
[root@9ba8b0a0df2b /]#
[root@9ba8b0a0df2b /]#
[root@9ba8b0a0df2b /]#
[root@9ba8b0a0df2b /]#
[root@9ba8b0a0df2b /]# kubectl get node
NAME STATUS ROLES AGE VERSION
docker-desktop Ready control-plane 11d v1.25.0
FAQ
我启动容器后,为什么ssh连接失败?
可能是因为容器内ssh服务启动失败了
进入容器
docker exec -it myoperator bash
## 查看是否监听22端口
netstat -anultp
## 如未监听,手动启动ssh服务,已监听请检查上一步端口映射情况
/usr/sbin/sshd -D &