all in one
公司的产品用到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一下,貌似大部分人听得稀里糊涂的。。。倒是有几个开发的同事拿着这个包把玩了一番,若有所得的样子。
最后的包大概是这个样子:
假设这个包使用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
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 】
相关阅读
云原生存储编排利器Rook详解 1. Rook介绍 1.1 Rook简介 Rook是一个运行在Kubernetes集群中的开源云原生存储服务编排工具,为各种存
kubernetes 自1.14 之后,Kubernetes 项目本身开始具备了原生的应用管理能力,这其中最重要的一个功能,就是 Kustomize。 Kustomize 允
kubernetes系列之十四:Kubernetes CRD(CustomResourceD
一、前言Kubernetes平台对于分布式服务部署的很多重要的模块都有系统性的支持,借助如下一些平台资源可以满足大多数分布式系统部署
云计算具有水平弹性的特性,这个是云计算区别于传统IT技术架构的主要特性。对于Kubernetes中的POD集群来说,HPA就是实现这种水平伸缩