这篇文章整理一下单机版本的kubernetes的所有安装脚本的执行过程,之所以使用单机版本,主要是便于说明,脚本化以及变量可配置化之后,基本上的内容修改设定文件即可,应该可以简单实现1主n从的设定。本文以脚本的方式进行固化,内容仍然放在github的easypack上,鉴于脚本内容也非常简单,无非就是,设定systemd的service文件与参数,拷贝离线二进制文件,启动服务并确认,所以内容不再说明,代码本身少量的注释应该已经足够说明,如有错误可直接在csdn联系或者github上联系均可。
- 安装单机版kubernetes离线设定文件,使用如下步骤即可。
步骤1:下载easypack
[root@host131 tmp]# git clone https://github.com/liumiaocn/easypack.git
Cloning into ‘easypack’…
…省略
[root@host131 tmp]#
步骤2: 下载相关离线二进制文件
- 修改并确定要下砸的各组件的版本号
[root@host131 tmp]# cd easypack/k8s/shell/
[root@host131 shell]# head -n11 step0-get-binaries.sh
#!/bin/sh
TYPE_OS=linux
TYPE_ARCH=amd64
VER_CFSSL=R1.2
VER_KUBERNETES=v1.13.4
VER_ETCD=v3.3.12
VER_DOCKER=17.03.2-ce
VER_CNI=v0.7.4
VER_FLANNEL=v0.10.0
DIR_DOWNLOAD=/tmp
[root@host131 shell]#
执行如下命令即可完成下载
缺省的情况下会在/tmp/binaries下进行二进制的收集,可自行修改
[root@host131 shell]# head -n10 install.cfg
#!/bin/sh
#######BEGIN: SETTING: BASIC#########
ENV_HOME_BINARY=/tmp/binaries
ENV_HOME_CFSSL=${ENV_HOME_BINARY}/cfssl
ENV_HOME_ETCD=${ENV_HOME_BINARY}/etcd
ENV_HOME_FLANNEL=${ENV_HOME_BINARY}/flannel
ENV_HOME_DOCKER=${ENV_HOME_BINARY}/docker
ENV_CURRENT_HOSTIP="192.168.163.131"
#######END : SETTING: BASIC#########
[root@host131 shell]#
下载请自行完成,如无法完成二进制下载,后续可提供百度网盘,这实在是
步骤3: 调整配置
最简单的方式,就是把如下的配置文件中的IP进行全文替换应该即可:192.168.163.131
[root@host131 shell]# ls install.cfg
install.cfg
[root@host131 shell]#
步骤4: 清空数据并安装
管理脚本的说明
目前的功能,稍微包了一下,参看如下usage即可知道:
[root@host131 shell]# sh all-k8s-mgnt.sh
Usage: all-k8s-mgnt.sh ACTION TYPE
ACTION:start|stop|restart|status|install|clear
TYPE:master|node|docker|ssl|apiserver|scheduler|controller
kubelet|kubeproxy|flannel|etcd
[root@host131 shell]#
主要是一行行的systemctl和执行各个脚本太繁琐,稍作简化。需要说明的是clear会删除所有的临时文件和设定文件,请各位执行之前务必确认不要删错
if [ _"$ACTION" = _"clear" ]; then
# in order to avoid rm -rf / : here hard coding for default dir
echo "## data dir clear operation begins..."
echo " # clear ssl dirs "
rm -rf /etc/ssl/{
ca,etcd,flannel,k8s}
echo " # clear etc dirs "
rm -rf /etc/{
docker,flannel,k8s,etcd,kubernetes}
echo " # clear log dirs "
rm -rf /var/log/kubernetes
echo " # clear working dirs or data dirs"
rm -rf /var/lib/kubelet /var/lib/k8s /var/lib/docker /var/lib/etcd
echo "## data dir clear operation ends ..."
exit 0
fi
之所以没有参数化是因为,rm -rf 太容易传错,万一产生了个/ xxx的错误参数传进,锅就大了,请诸君谨慎为之。
另外需要说明的是pause镜像。另外众所周知,需要使用到pause镜像,这个镜像本来在download的脚本中取得,配置化最为合适,但是不知道源,只能使用docker pull取下,而且这样需要download脚本安装docker,但是由于pause的源码很少,size也很小,所以将此镜像pull下来压缩之后放到了源码目录中,我也很绝望。
执行命令:
sh all-k8s-mgnt.sh stop all; sh all-k8s-mgnt.sh clear all; sh all-k8s-mgnt.sh install all
- 执行日志
[root@host131 shell]# sh all-k8s-mgnt.sh stop all; sh all-k8s-mgnt.sh clear all; sh all-k8s-mgnt.sh install all
## Fri Mar 29 05:57:32 CST 2019 ACTION: stop Service: ssl begins ...
## Fri Mar 29 05:57:32 CST 2019 ACTION: stop Service: ssl ends ...
## Fri Mar 29 05:57:32 CST 2019 ACTION: stop Service: etcd begins ...
## Fri Mar 29 05:57:32 CST 2019 ACTION: stop Service: etcd ends ...
## Fri Mar 29 05:57:32 CST 2019 ACTION: stop Service: apiserver begins ...
## Fri Mar 29 05:57:32 CST 2019 ACTION: stop Service: apiserver ends ...
## Fri Mar 29 05:57:32 CST 2019 ACTION: stop Service: scheduler begins ...
## Fri Mar 29 05:57:32 CST 2019 ACTION: stop Service: scheduler ends ...
## Fri Mar 29 05:57:32 CST 2019 ACTION: stop Service: controller begins ...
## Fri Mar 29 05:57:33 CST 2019 ACTION: stop Service: controller ends ...
## Fri Mar 29 05:57:33 CST 2019 ACTION: stop Service: flannel begins ...
## Fri Mar 29 05:57:33 CST 2019 ACTION: stop Service: flannel ends ...
## Fri Mar 29 05:57:33 CST 2019 ACTION: stop Service: docker begins ...
## Fri Mar 29 05:57:33 CST 2019 ACTION: stop Service: docker ends ...
## Fri Mar 29 05:57:33 CST 2019 ACTION: stop Service: kubelet begins ...
## Fri Mar 29 05:57:33 CST 2019 ACTION: stop Service: kubelet ends ...
## Fri Mar 29 05:57:33 CST 2019 ACTION: stop Service: kubeproxy begins ...
## Fri Mar 29 05:57:33 CST 2019 ACTION: stop Service: kubeproxy ends ...
## data dir clear operation begins...
# clear ssl dirs
# clear etc dirs
# clear log dirs
# clear working dirs or data dirs
## data dir clear operation ends ...
## Fri Mar 29 05:57:33 CST 2019 ACTION: install Service: ssl begins ...
2019/03/29 05:57:33 [INFO] generating a new CA key and certificate from CSR
2019/03/29 05:57:33 [INFO] generate received request
2019/03/29 05:57:33 [INFO] received CSR
2019/03/29 05:57:33 [INFO] generating key: rsa-2048
2019/03/29 05:57:34 [INFO] encoded CSR
2019/03/29 05:57:34 [INFO] signed certificate with serial number 585243779407386144618990056827689634538064257244
/etc/ssl/ca/ca-key.pem /etc/ssl/ca/ca.pem
2019/03/29 05:57:34 [INFO] generate received request
2019/03/29 05:57:34 [INFO] received CSR
2019/03/29 05:57:34 [INFO] generating key: rsa-2048
2019/03/29 05:57:34 [INFO] encoded CSR
2019/03/29 05:57:34 [INFO] signed certificate with serial number 708327339669302515990753380895187969493749436475
2019/03/29 05:57:34 [WARNING] This certificate lacks a "hosts" field. This makes it unsuitable for
webs