背景
隨着我國對信息安全的愈發重視,國產化的趨勢也越來越濃,包括國產操作系統、國產 CPU 等。由於 ARM 架構國產 CPU 在維持創新可信和先進性方面的潛在優勢,其應用也將會越來越廣泛。
KubeSphere 作為一款深受國內外開發者所喜愛的開源容器平台,也將積極參與並探索在 ARM 架構下的應用與創新。本文將主要介紹如何在 ARM64 環境下部署 Kubernetes 和 KubeSphere。
環境准備
節點
kubeSphere 支持的操作系統包括:
- Ubuntu 16.04, 18.04
- Debian Buster, Stretch
- CentOS/RHEL 7
- SUSE Linux Enterprise Server 15
- openEuler
這里以一台 openEuler 20.09 64bit 為例:
name | ip | role |
---|---|---|
node1 | 172.169.102.249 | etcd, master, worker |
確保機器已經安裝所需依賴軟件(sudo curl openssl ebtables socat ipset conntrack docker)
具體環境要求參見:https://github.com/kubesphere/kubekey/tree/release-1.0#requirements-and-recommendations
關於多節點安裝請參考 KubeSphere 官方文檔。
建議:可將安裝了所有依賴軟件的操作系統制作成系統鏡像使用,避免每台機器都安裝依賴軟件,即可提升交付部署效率,又可避免依賴問題的發生。
提示:如使用 centos7.x、ubuntu18.04,則可以選擇使用 kk 命令對機器進行初始化。
解壓安裝包,並創建好配置文件之后(創建方法請看下文),可執行如下命令對節點進行初始化:
./kk init os -s ./dependencies -f config-example.yaml
如使用該命令遇到依賴問題,可自行安裝相關依賴軟件。
鏡像倉庫
可使用 harbor 或其他第三方鏡像倉庫。
提示:可使用 kk 命令自動創建測試用自簽名鏡像倉庫。注意,請確保當前機器存在
registry:2
,如沒有,可從解壓包 kubesphere-images-v3.0.0/registry.tar 中導入,導入命令:docker load < registry.tar
。
創建測試用自簽名鏡像倉庫:
./kk init os -f config-example.yaml --add-images-repo
注意:由 kk 啟動的鏡像倉庫端口為443,請確保所有機器均可訪問當前機器443端口。鏡像數據存儲到本地/mnt/registry (建議單獨掛盤)。
安裝包下載:
提示:該安裝包僅包含 Kubernetes + KubeSphere-core 鏡像,如需更多組件 arm64 鏡像,可自行編譯構建。
# md5: 3ad57823faf2dfe945e2fe3dcfd4ace9
curl -Ok https://kubesphere-installer.pek3b.qingstor.com/offline/v3.0.0/kubesphere-core-v3.0.0-offline-linux-arm64.tar.gz
安裝步驟:
1. 創建集群配置文件
安裝包解壓后進入kubesphere-core-v3.0.0-offline-linux-arm64
./kk create config
根據實際環境信息修改生成的配置文件config-sample.yaml
,也可使用-f參數自定義配置文件路徑。kk 詳細用法可參考:https://github.com/kubesphere/kubekey
注意填寫正確的私有倉庫地址
privateRegistry
(如已准備好私有倉庫可設置為已有倉庫地址,若使用 kk 創建私有倉庫,則該參數設置為:dockerhub.kubekey.local)
apiVersion: kubekey.kubesphere.io/v1alpha1
kind: Cluster
metadata:
name: sample
spec:
hosts:
# 注意指定節點 arch 為 arm64
- {name: node1, address: 172.169.102.249, internalAddress: 172.169.102.249, password: Qcloud@123, arch: arm64}
roleGroups:
etcd:
- node1
master:
- node1
worker:
- node1
controlPlaneEndpoint:
domain: lb.kubesphere.local
address: ""
port: 6443
kubernetes:
version: v1.17.9
imageRepo: kubesphere
clusterName: cluster.local
network:
plugin: calico
kubePodsCIDR: 10.233.64.0/18
kubeServiceCIDR: 10.233.0.0/18
registry:
registryMirrors: []
insecureRegistries: []
privateRegistry: dockerhub.kubekey.local
addons: []
2. 導入鏡像
進入kubesphere-all-v3.0.0-offline-linux-arm64/kubesphere-images-v3.0.0
使用 offline-installation-tool.sh 將鏡像導入之前准備的倉庫中:
# 腳本后鏡像倉庫地址請填寫真實倉庫地址
./offline-installation-tool.sh -l images-list-v3.0.0.txt -d kubesphere-images -r dockerhub.kubekey.local
3. 執行安裝
# 以上准備工作完成且再次檢查配置文件無誤后,執行安裝。
./kk create cluster -f config-sample.yaml --with-kubesphere