本文由 KubeSphere 社區貢獻者 天行1st 編寫。本文為作者實踐總結。本文記錄了在信創環境中基于混合架構(x86 與 ARM64)部署 Kubernetes
和 KubeSphere
的實踐過程,覆蓋多種國產 CPU 和操作系統,具有一定的參考價值。
環境涉及軟件版本信息
- 服務器芯片: 鯤鵬/飛騰2500(arm64)+海光/兆芯(x86)
- 操作系統:銀河麒麟V10+openEuler+麒麟信安+龍蜥
- Containerd: 1.7.13
- Kubernetes:v1.32.5
- KubeSphere:v4.1.3
- KubeKey: v3.1.10(二開版)
服務器基本信息
主機名 | 架構 | OS | CPU | IP |
---|---|---|---|---|
master1 | arm64 | 麒麟信安 3 | Kunpeng-920 | 192.168.0.219 |
master2 | x86_64 | 歐拉 20.03 | Hygon C86 3350 | 192.168.0.87 |
master3 | arm64 | 麒麟V10 sp1 | Phytium,FT-2500 | 192.168.0.120 |
node1 | x86_64 | 龍蜥 8.6 | KX-5000 | 192.168.0.158 |
node2 | arm64 | UOS | Kunpeng-920 | 192.168.0.89 |
1.說明
作者使用K8s
和KubeSphere
過程中已適配芯片和操作系統如下:
- CPU芯片:
- 鯤鵬
- 飛騰
- 海光
- 兆芯
- 國際芯片:intel、ARM等
- 操作系統
- 銀河麒麟V10
- 麒麟國防版
- 麒麟信安
- 中標麒麟V7
- 統信 UOS
- 華為歐拉 openEuler、移動大云
- 阿里龍蜥 Anolis OS
- 騰訊 TencentOS
- 國際操作系統:CentOS、Ubuntu、Debian等
關于 kt
kt
是基于Kubekey
二次開發的產物,具備Kubekey
的所有功能,二開主要為適配信創國產化環境、簡化ARM
部署過程和國產化環境離線部署。支持ARM64
和AMD64
架構國產操作系統,已適配芯片+操作系統如上。
2.環境準備
將對應架構 kt_**.tar.gz 上傳至每個節點
2.1 系統初始化
解壓kt
文件后執行./kt init-os
已適配操作系統和架構見1.說明
該命令kk
會自動判斷操作系統和架構以安裝依賴項和進行必要的初始化配置。
3 創建 Kubernetes 集群
以下操作默認在master1
執行
3.1 創建安裝目錄
home目錄下創建ks目錄,用于安裝部署 K8s+ KubeSphere 。
此處之所以在/home目錄下安裝,是有些客戶自帶操作系統而且默認根目錄下只有50G空間,而更大的空間在/home目錄下。筆者所在公司可能需要到用戶提供的服務器和操作系統安裝集群,為避免空間占用不足,直接到/home下新建。
mkdir -p /home/ks
cd /home/ks
3.2 上傳kt
將kt
移動至/home/ks
目錄下
3.3 創建集群配置文件
主要修改相關節點和harbor信息
./kt create config --with-kubernetes v1.32.5
3.4 修改配置文件
根據實際服務器信息,配置到生成的config-sample.yaml
中
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:name: sample
spec:hosts:- {name: master1, address: 192.168.0.219, internalAddress: 192.168.0.219, user: root, password: "123@213", arch: arm64}- {name: master2, address: 192.168.0.87, internalAddress: 192.168.0.87, user: root, password: "123@213"}- {name: master3, address: 192.168.0.120, internalAddress: 192.168.0.120, user: root, password: "123r@213", arch: arm64}- {name: node1, address: 192.168.0.158, internalAddress: 192.168.0.158, user: root, password: "123@213"}- {name: node2, address: 192.168.0.89, internalAddress: 192.168.0.89, user: root, password: "123@213", arch: "arm64"}roleGroups:etcd:- master1- master2- master3control-plane: - master1- master2- master3worker:- node1- node2controlPlaneEndpoint:## Internal loadbalancer for apiservers internalLoadbalancer: haproxydomain: lb.kubesphere.localaddress: ""port: 6443kubernetes:version: v1.32.5clusterName: cluster.localautoRenewCerts: truecontainerManager: containerdetcd:type: kubekeynetwork:plugin: calicokubePodsCIDR: 10.233.64.0/18kubeServiceCIDR: 10.233.0.0/18## multus support. https://github.com/k8snetworkplumbingwg/multus-cnimultusCNI:enabled: falseregistry:privateRegistry: ""namespaceOverride: ""registryMirrors: []insecureRegistries: []addons: []
說明: 具體參數含義可查看官方文檔:在 Linux 上安裝 Kubernetes 和 KubeSphere,這里寫一下注意事項
config-sample.yaml
配置文件的 spec:hosts 參數
官方介紹
- address 服務器的 SSH 登錄 IP 地址。
- internalAddress 服務器在子網內部的 IP 地址。
注:若部署的服務器在同一區域,內網IP可以互通,address 和internalAddress 都使用內網IP。之前遇到過有的小伙伴買的云服務器做測試,address使用公網IP,由于部署過程通信拷貝文件走了address,公網帶寬又低。導致創建集群時異常的慢。
3.5 創建 K8s 集群
export KKZONE=cn./kt create cluster -f config-sample.yaml
執行后會有如下提示,輸入 yes/y
繼續執行
等待一段時間,看到輸入成功的消息
3.6 驗證
- 查看節點狀態
kubectl get nodes -o wide
[root@master1 ~]# kubectl get nodes -owide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master1 Ready control-plane 3m10s v1.32.5 192.168.0.219 <none> KylinSecOS Linux 3 (Core) 4.19.90-2003.4.0.0036.ky3.kb13.aarch64 containerd://1.7.13
master2 Ready control-plane 2m28s v1.32.5 192.168.0.87 <none> openEuler 20.03 (LTS) 4.19.90-2003.4.0.0036.oe1.x86_64 containerd://1.7.13
master3 Ready control-plane 2m58s v1.32.5 192.168.0.120 <none> Kylin Linux Advanced Server V10 (Tercel) 4.19.90-17.5.ky10.aarch64 containerd://1.7.13
node1 Ready worker 2m27s v1.32.5 192.168.0.158 <none> Anolis OS 8.6 4.19.91-26.an8.x86_64 containerd://1.7.13
node2 Ready worker 2m27s v1.32.5 192.168.0.89 <none> UOS Server Euler 20 4.19.90-2005.2.0.0039.uel20.aarch64 containerd://1.7.13
[root@master1 ~]#
- 查看pod狀態
kubectl get pod -A -o wide
4.安裝 KubeSphere
helm upgrade --install -n kubesphere-system --create-namespace ks-core https://charts.kubesphere.io/main/ks-core-1.1.5.tgz \--set global.imageRegistry=swr.cn-south-1.myhuaweicloud.com/gjing1st \--set extension.imageRegistry=swr.cn-south-1.myhuaweicloud.com/gjing1st \--set ksExtensionRepository.image.tag=v1.1.6 \--debug \--wait
若有x86
鏡像錯誤,可至所在節點進行x86
鏡像拉取重命名,類似:
#拉取x86鏡像
crictl pull swr.cn-southwest-2.myhuaweicloud.com/ks/kubesphere/ks-controller-manager:v4.1.3
#打tag
ctr -n=k8s.io image tag --force \swr.cn-southwest-2.myhuaweicloud.com/ks/kubesphere/ks-controller-manager:v4.1.3 \swr.cn-south-1.myhuaweicloud.com/gjing1st/kubesphere/ks-controller-manager:v4.1.3
等待一段時間看到成功消息
查看pod列表
5.驗證
- 登錄頁面
初次登錄需要換密碼,如果不想換也可以繼續填寫P@88w0rd
,不過建議更換
- 首頁
- 集群管理信息
- 節點信息
- 節點詳細
- master1
- master2
- master3
6.總結
本次技術實踐成功在信創環境下完成混合架構云原生平臺部署,具體涵蓋 x86(海光/兆芯)和 ARM64(飛騰/鯤鵬)兩大架構的多款國產芯片,適配UOS、麒麟、歐拉等主流國產操作系統,最終實現Kubernetes
和KubeSphere
的穩定運行。該實踐為國產化技術棧的云原生發展提供了可行性驗證和技術積累,歡迎更多開發者參與國產化云原生生態的共建與探索。如您在實踐中遇到問題,歡迎通過社區論壇交流討論。