使用docker在Windows系统下编写k8s的operator

835 阅读2分钟

使用docker在Windows系统下编写k8s的operator

前言

编写k8s的operator往往会用到kubebuilder或operator-sdk,在linux或者苹果系统下,可以很方便的在github上下载对应工具的二进制编译版本,在windows系统上要想运行就没这么容易了,写这篇文章的目的是为了帮助更多的小伙伴在windows系统上也能简单开发operator

安装docker

注意: 此教程仅适用于windows系统

1、添加新功能

image.png

程序与功能添加新功能:适用于linux的的Windows子系统

2、下载docker-desktop

在下面的链接下载docker-desktop www.docker.com/products/do…

傻瓜式安装,一直下一步就行

3、启动docker-desktop

直接双击打开,第一次打开可能会报一个WSL的错误,拿着错误去百度一下,需要下载一个wsl的更新包安装

4、启动Kubernetes

之前我都是在windows上启动一个k8s的虚拟机,占用很大资源,新版本的docker-desktop支持一键部署一个指定版本的K8S,在设置这里勾选上等待就好了,左下角全部变为绿色启动状态,启动成功

image.png

创建目录

在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 &