我写过的软件之Kubernetes All In One

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/GreatChinaWolf/article/details/88593939

其实这不是一个软件,而是一个安装包。

公司的产品用到docker/kubernetes这些技术,每次安装都得从网上下载一堆软件包,加上有一些软件包还可能被墙了,安装一次得花了一两天时间,就萌生一个想法做一个离线就可以安装的kubernetes安装包,给自己定了一个小目标:

  • 把docker/kubernetes等软件的依赖和软件包都打包进去,电脑不能连接因特网也能安装。
  • 把calico,consul,dashboard,fluentd-elastic search-kibana,helm,kafka-zookeeper和nginx-ingress都用上。
  • 1个master,3个slave。
  • 包含几个demo演示如何访问consul,kafka。
  • 安装脚本尽可能只用shell。
  • 安装过程尽可能自动化,执行过程简单。

为了做这个,还买了一台高性能的笔记本,i9/64G内存/SSD硬盘,开几台虚拟机也不觉得卡顿,i9 CPU性能提升确实挺牛逼的。调试一些问题还经常弄到三更半夜,经过几个星期的奋战,年前终于做得差不多了,给大家knowledge share一下,貌似大部分人听得稀里糊涂的。。。倒是有几个开发的同事拿着这个包把玩了一番,若有所得的样子。

最后的包大概是这个样子:

https://img-blog.csdnimg.cn/20190316112644819.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0dyZWF0Q2hpbmFXb2xm,size_16,color_FFFFFF,t_70

假设这个包使用NFS共享给几个需要安装的机器上之后,对脚本做几个简单的修改就可以安装了:

  • 修改脚本中的pod-network-cidr。
  • 修改脚本中的master的ip地址。
  • 修改脚本中的主机名。

[Updated]

修改完之后,就只需要执行脚本就行了:

  • 在master主机上执行1_master的脚本
  • 在worker主机上执行2_worker和3_worker脚本
  • 在master主机上执行4_master脚本

整个执行过程还是简单明了的。脚本本身也没有太复杂,对于初学者应该是一个比较好的入门工具。

几个脚本完成的功能大概分解如下。

1_master.sh:

  • 安装Docker
  • 导入master节点所需要的docker镜像
  • 安装kubernetes
  • 执行kubeadm init初始化master节点
  • 安装Calico/Dashboard
  • 生成登录dashboard所需要的证书和配置文件
  • 生成join命令脚本(也就是3_worker.sh)

2_worker.sh

  • 创建Persistent Volume需要的文件夹
  • 安装Docker
  • 导入worker节点需要的镜像
  • 安装Kubernetes

3_worker.sh

  • 执行kubeadm join加入集群

4_master.sh

  • 给worker节点打label
  • 安装nginx ingress
  • 安装helm
  • 安装其他的应用

Kafka和Zookeeper是自己做的Image,Kafka的StatefulSet的状态竟然老是不稳定,调用脚本检查状态的时候老是挂在那里,一直不能ready,折腾了两三周,最后改成用tcpSocket的方式来检测readinessProbe了,貌似OK了。

另外做了几个demo访问kafka/consul。

用这个安装包,在一个ubuntu18 server上的机器,装完一个1个master 3个worker的Kubernetes也就需要个半个小时。方便快捷多了...容我自我陶醉一下...

做一个东西的过程中貌似各种坑,等坑填完了再回过头来看,好像坑也不算是坑了。

 

 

【有以前的同事要,传了一个版本到百度网盘:链接: https://pan.baidu.com/s/1ARdN2EeU_r-2TBj9cWWF1w 提取码: cvj4  】

展开阅读全文

没有更多推荐了,返回首页