从零到一:使用anisble自动化搭建kubernetes集群
在我们云原生俱乐部的暑期学习中,我们了解并学习了需要关于云原生的技术,其中在应用层面上最重要的就是shell编程和ansible,而想要掌握这两项技术离不开的就是实践,而kubernetes是我们云原生技术栈的核心技术,在生产实际中存在部署k8s环境的需求,所以我们不妨用ansible来实现k8s的部署,在实践中了解并掌握ansible,同时感受到自动化运维的魅力。
我们准备了三台主机,cka-matser是我们的控制节点,cka-worker1和cka-worker2是我们的工作节点
这三台主机在未运行setup.sh脚本之前是不互通的,同时也未安装ansible以及所需工具的软件包,我们当然可以手动配置,但是我们不妨写个setup.sh脚本来对cka-master进行自动化配置,再用ansible同步到工作节点,以下是set.up关键的内容:
配置软件仓库:
安装ansible和所需的工具
配置anisble(注:在Ubuntu22.04.5中不会自动创建/etc/ansible目录
分发密钥,配置互信
这样我们就配置好了控制节点的ansible,接下来就是编写k8s.yaml的playbook来完成kubernetes的集群搭建。
我们都知道ansible采用的是声明式编程的理念,简单说就是我们只需要使用ansible对应的模块来声明我们需要的状态,ansible就可以帮助我们实现。
在k8s.yaml这个playbook中我们定义了四个task,分别是deploy docker、deploy k8s、init cluster、work join and label,这四个任务完成了docker、cri-docker、kubelet、kubectl、kubeadm的下载和配置,同时配置CNI的通信配置,最后初始化集群并让cka-worker1、cka-worker2加入集群,打上工作节点的标签,以下是关键步骤的playbook片段:
安装docker并配置镜像仓库
安装cri-docker并配置socket实现通信
关闭交换分区,允许br_netfilter桥接流量
下载kubelet、kubeadm、kubectl
初始化集群
配置calico网络插件
加入集群、打上标签
附上环境搭建成功的验证
总结:在本次ansible的应用中,我们手动的编写了setup.sh的shell脚本和k8s.yaml的playbook,我们在编写的过程中不仅精进了shell脚本的使用,而且我们熟悉了playbook的编写流程,当然我们也复习到了k8s的集群搭建,将我们云原生的核心技术栈都使用了一遍,对于我们的个人成长起到了不小的作用,感谢云原生俱乐部为我们提供了成长的平台。