在 通過 Vagrant 一鍵初始化 K8S 集群 之后,發(fā)現(xiàn) VirtualBox 只支持 X86 芯片,對(duì) Apple M1 不支持。加之 CentOS 的支持也將近尾聲。而我在搗鼓 Provisioner 腳本的時(shí)候總要花大量的時(shí)間測(cè)試 CentOS 的兼容性哩簿,很耗時(shí)間。
偶然發(fā)現(xiàn) Multipass 可以支持在 Apple M1 虛擬 Ubuntu 實(shí)例,效果還不錯(cuò)妒穴。所以將 Provisioner 的腳本進(jìn)行了移植,并基于 Multipass 進(jìn)行了一層封裝以管理整個(gè) k8s 集群摊崭。所以花了兩周的業(yè)余時(shí)間調(diào)整了一下讼油。
本文就介紹一下 k8s-multipass
,項(xiàng)目地址:https://github.com/wizardbyron/k8s-multipass呢簸,歡迎PR矮台。
當(dāng)前功能介紹
- 一個(gè) Multipass 的包裝器(wrapper),管理本地 k8s 集群生命周期阔墩。
- 創(chuàng)建一個(gè)控制面節(jié)點(diǎn)嘿架,并啟用 NFS 和本地 DNS 服務(wù)(Bind9),通過 NFS 服務(wù)共享加入腳本啸箫。并采用 Calico 初始化 Pod 網(wǎng)絡(luò)耸彪。
- 創(chuàng)建兩個(gè)工作節(jié)點(diǎn),并通過 NFS 自動(dòng)加入控制面忘苛。
- 通過 docker 在控制面上新建 LDAP 服務(wù)蝉娜。
使用方法
- 下載 Multipass。
- 克隆本項(xiàng)目:
git clone git@github.com:wizardbyron/provisioners.git
- 你可以在
k8sctl
命令中調(diào)整配置扎唾。未來(lái)我考慮增加一個(gè)讀取配置的模塊召川。 - 進(jìn)入項(xiàng)目目錄,通過
./k8sctl create
命令一鍵創(chuàng)建具有兩個(gè)工作節(jié)點(diǎn)的 K8S 集群胸遇。 - 通過
./k8sctl login
登錄到控制面進(jìn)行管理荧呐。
命令介紹
k8sctl
是管理集群的工具,它包含如下子命令:
-
./k8sctl create
: 創(chuàng)建一個(gè)新的本地 k8s 集群纸镊,默認(rèn)包含一個(gè)控制面和兩個(gè)工作節(jié)點(diǎn)倍阐。 -
./k8sctl start
: 啟動(dòng)已停止的本地 k8s 集群上的所有節(jié)點(diǎn)。 -
./k8sctl stop
: 停止的本地 k8s 集群上的所有節(jié)點(diǎn)逗威。 -
./k8sctl restart
: 重啟本地 k8s 集群上的所有節(jié)點(diǎn)峰搪。 -
./k8sctl destroy [節(jié)點(diǎn)名]
: 銷毀本地 k8s 集群上的所有節(jié)點(diǎn)或指定節(jié)點(diǎn)。 -
./k8sctl check
: 檢查 k8s 集群上各節(jié)點(diǎn)和 Pod 的狀態(tài)凯旭。 -
./k8sctl status
: 檢查 k8s 集群上各節(jié)點(diǎn)虛擬機(jī)工作狀態(tài)概耻。 -
./k8sctl login
: 登陸控制面進(jìn)行操作使套。
項(xiàng)目目錄介紹
k8s-multipass
├── k8sctl # 主控制文件
├── scripts # 各服務(wù)腳本目錄
│ ├── dns # DNS 服務(wù)端和客戶端安裝和配置腳本
│ │ ├── client.sh
│ │ └── server.sh
│ ├── init.sh # 虛擬機(jī)初始化腳本目錄
│ ├── k8s
│ │ ├── install.sh # K8S 安裝腳本
│ │ ├── setup-control-plane.sh # 控制面配置腳本。
│ │ └── setup-worker-node.sh # 工作節(jié)點(diǎn)配置腳本鞠柄。
│ ├── nfs # NFS 服務(wù)端和客戶端安裝和配置腳本
│ │ ├── client.sh
│ │ └── server.sh
│ └── openldap # LDAP 服務(wù)端配置腳本
│ └── server.sh
└── share # 和虛擬機(jī)之間交換文件的共享目錄
未來(lái)的計(jì)劃
這個(gè)項(xiàng)目和 MicroK8S 以及 MiniKube 不同侦高。這個(gè)項(xiàng)目和 Provisioner 一樣,用于產(chǎn)生一個(gè)最小的可驗(yàn)證功能的虛擬 K8S 集群環(huán)境春锋。隨著我的學(xué)習(xí)和總結(jié)矫膨,這個(gè)項(xiàng)目也會(huì)不斷完善。