这篇文章验证一下使用Easypack安装部署Kubernetes 1.19.2的情况,使用了一下一两年前写的一个小工具,发现还是可以用的,至少只是改一下kubernetes的版本就可以快速搭建起1.19.2的版本了。但是后续的参数调优之类的是需要继续整理的。
- 事前准备
- 下载离线安装包
- 安装部署
- 结果确认
- 总结
Easypack:https://github.com/liumiaocn/easypack
事前安装git,clone上述仓库,然后做如下安装准备:
- 安装ansible
- 设定ssh key
设定依赖版本,修改easypack的download/vars/main.yml 文件,比如此处将如下文件的var_ver_k8s从v1.17.2改为v1.19.2
2 # version and basic var info 3 var_type_os: linux 4 var_arch: amd64 5 var_ver_cfssl: R1.2 6 var_ver_k8s: v1.17.2 7 var_ver_etcd: v3.3.18 8 var_ver_docker: 19.03.5 9 var_ver_cni: v0.8.5 10 var_ver_flannel: v0.11.0 11 var_ver_pause: 3.1 12 var_ver_coredns: 1.6.7 13 var_ver_dashboard: v2.0.0-rc3 14 var_ver_prometheus: v2.15.1
并下载,执行如下命令即可:
执行命令:cd easypack/k8s/ansible/ && ansible-playbook download/tests/test.yml
注:如果没有修改设定的话,缺省会在/tmp下创建一个binary的目录并将相关的二进制文件和镜像全部下载至其中,目录结构如下所示:
[root@liumiaocn binary]# pwd /tmp/binary [root@liumiaocn binary]# tree . . |-- cfssl | |-- cfssl | |-- cfssl-certinfo | `-- cfssljson |-- cni | |-- bandwidth | |-- bridge | |-- dhcp | |-- firewall | |-- flannel | |-- host-device | |-- host-local | |-- ipvlan | |-- loopback | |-- macvlan | |-- portmap | |-- ptp | |-- sbr | |-- static | |-- tuning | `-- vlan |-- docker | |-- containerd | |-- containerd-shim | |-- ctr | |-- docker | |-- dockerd | |-- docker-init | |-- docker-proxy | `-- runc |-- etcd | |-- etcd | `-- etcdctl |-- flannel | |-- flanneld | `-- mk-docker-opts.sh |-- images | |-- coredns.tar | |-- dashboard.tar | |-- pause.tar | `-- prometheus.tar `-- kubernetes |-- kube-apiserver |-- kube-controller-manager |-- kubectl |-- kubelet |-- kube-proxy `-- kube-scheduler 7 directories, 41 files [root@liumiaocn binary]#安装部署
这里以单机版的安装为例(缺省使用我常用的ip:192.168.163.131),用户可根据需要修改如下文件easypack/k8s/ansible/hosts.all-in-one即可:
[root@liumiaocn ansible]# cat hosts.all-in-one # kubernetes : all-node [all-in-one] localhost var_master_host=192.168.163.131 var_etcd_host=192.168.163.131 var_node_host=192.168.163.131 var_master_node_flag=True [root@liumiaocn ansible]#
准备完成之后,执行如下命令即可一键安装:
执行命令:ansible-playbook 10.all-in-one.yml
注:由于修改了selinux,所以目前的版本在执行sysctl的时候有可能会停下来,这种情况下目前最简单的方法就重启机器然后再执行一遍就OK了
结果确认- 确认各组件状态
[root@liumiaocn ansible]# kubectl get cs Warning: v1 ComponentStatus is deprecated in v1.19+ NAME STATUS MESSAGE ERROR scheduler Healthy ok controller-manager Healthy ok etcd-0 Healthy {"health":"true"} [root@liumiaocn ansible]#
- 确认node状况
[root@liumiaocn ansible]# kubectl get nodes -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME 192.168.163.131 Ready63s v1.19.1 192.168.163.131CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://19.3.5 [root@liumiaocn ansible]#
- 确认所有pod的状况
[root@liumiaocn ansible]# kubectl get pods -o wide -A NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system coredns-846648b757-89qlx 1/1 Running 0 2m2s 172.17.0.2 192.168.163.131[root@liumiaocn ansible]#总结
使用Easypack的脚本,可以快速完成自己进行功能验证和学习的开发者所需要的环境搭建的需求,因为比较简单,所以可以根据自己的需要进行修改。