基本信息

  • 操作系统信息,虚拟机,Debian v9.12.3,8C/16G
  • Kubernetes版本信息,v18.3,单节点
  • KubeSphere版本信息,v3.0.0,在线全套安装

正文

  • 故事从某周四晚上峰哥、立哥和我的一场脑爆开始,秉承 TTD (Test-Driven Development) 理念,认为 TTP (Test-Driven Production) 也是很有必要的,因为我们测试毕竟是产品第一使体验者、使用者,面对开发的 BUG,Driven it;那面对我们缺失的项目流程是因为产品功能没有完善,我们可以做什么呢?脑爆之后得出的结论是 Driven it , too。
  • 开心又兴奋的我,觉得这是很大胆也很有意思的事情,周五中午舍弃午休时间就开始尝试部署我们选型 QingCloud 开源的 KubeSphere ;当然选型也是经过深思熟虑,我们对比了 RetHat 的 OpenShift,SUSE 的 Rancher,不得不说,当前开源 PAAS 都已很成熟,最后选择 KubeSphere 的主要原因是很多其他类似产品 k8s 图形化管理工具是按照 k8s 原生逻辑在做,而我们的面向用户 k8s 的熟悉程度较低,KubeSphere 对用户上手成本没那么高。
  • 第一个坑基于现成可用的 k8s 集群开始了部署之旅,但失败了。因为我们需要 KubeSphere 外接 Jenkins 的功能,只有最新的 v3.0 才支持,但 k8s 版本要求 v1.15及以上,而我们用来调研的 k8s 集群版本为 v1.13,在未阅读部署文档直接上手的情况下我踩下了这第一个坑,及时发现后通过 筋斗云 (筋斗云是网易伏羲和雷火研发的用来管理各自项目的云服务器虚拟机的 IaaS 平台) 开了几台虚拟机后便切换为 All-in-one 模式开始部署。
  • 第二个坑: 前奏都还挺愉快,但出现了如下报错,定位到原因是我们服务默认监听的都是 32200,但 KubeSphere 默认的是 22。

    但是很快便找到更换端口的方法,用 kk create config 命令创建一个 config-sample.yaml 文件,然后在文件的 hosts 部分指定一下当前单节点的 port 就可以了,样例请见,文档教程具体如下:
  • 第三个坑:先吹一波 KubeSphere 的部署,./kk create cluster --with-kubernetes v1.18.3 --with-kubesphere v3.0.0 -f config-sample.yaml可以指定我们期望的 k8s 版本来部署,真的方便好用!但在我开始继续时,block 了,因为我拼写错了单词,打扰了,强调下部署是个细活,务必要认真仔细。
  • 第四个坑:这里的坑主要在于我们 VM 是个裸机,啥都没有,需要准备的东西有点多,而且机器没有翻墙没有走代理很多不好下载,具体如下:

    干货来了, 如果您也遇到类似情况,可以使用某些大家都懂的工具,流程又继续了~
  • 第五个坑:上述可见,已经到安装 docker 的步骤了,结果卡了十几分钟。。原因当然是镜像,结果 KubeSphere 很惊喜的支持便捷更换镜像仓库地址,详情可参考再配置一个国内的镜像加速器后我又可以了。
  • 第六个坑:安装 k8s 安装所需的依赖,可以参考, 可视化依赖是否安装也很人性~
  • 第七个坑:docker 安装失败了,原因是因为我一开始换的内网的镜像仓库地址有问题,所以大家如果出现类似情况,可以检查您的镜像仓库。
    {
      "registry-mirrors": ["https://<my-docker-mirror-host>"]
    }

    调整之后可以 check 下 docker 的状态

    几经艰难,终于部署好了,DashBoard 如下:
  • 外挂:几年前久垂涎 KubeSphere 的 AppCenter,终于部署好了,但今天刚知道,竟然默认没有开启 AppCenter ,需要通过开启对应的插件才能拥有,回头想一下其实涉及还挺人性,可以让用户更大自主选择自己想要的功能而不是上来就让集群负担很重。
  • 其他: 如上所示,这次虽然是以单节点部署的方式调研,但 KubeSphere 本身是支持 HA集群,以及节点管理的功能都很全。具体细节功能如下,很开心国内有如此专业的开源 PaaS 平台包括开源社区做的都很好,点赞,后续会持续关注。

国内的环境支持设置环境变量解决二进制文件下载难的问题哦 export KKZONE=cn ,下个版本也会把国内镜像仓库的支持加上。