??在我們云原生俱樂部的暑期學習中,我們了解并學習了需要關于云原生的技術,其中在應用層面上最重要的就是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的集群搭建,將我們云原生的核心技術棧都使用了一遍,對于我們的個人成長起到了不小的作用,感謝云原生俱樂部為我們提供了成長的平臺。