Rainbond 是一個雲原生應用管理平台,使用簡單,不需要懂容器、Kubernetes 和底層複雜技術,支援管理多個 Kubernetes 叢集,和管理企業應用全生命周期。主要功能包括應用開發環境、應用市場、微服務架構、應用傳遞、應用運維、應用級多雲管理等。
龍蜥雲原生套件 Anolis Cloud Native Suite(ACNS)是由龍蜥社群雲原生 SIG (Special Interest Group)推出的基于 Kubernetes 發行版本為基礎而內建的套件能力,可以提供一鍵式部署、開箱即用,以及豐富的雲原生基礎能力,主要包括:
- Kubernetes 基于 ACK-D , 作為開源的發行版以及 ACK 的下遊,ACK-D 經過大規模的生産的驗證,保證了元件的穩定性、可靠性;同時在網絡插件上支援 Calico、Hybirdnet,可同時支援網絡的 Overlay 與 Underlay,除了 Overlay 滿足容器網絡的同時,可以部署成 Underlay 模式是使得 POD IP 直接被外部通路,同時提供比較好的性能;存儲插件上支援本地存儲 Open-Local、利用 LVM 提供了靈活的本地磁盤能力,以及共享存儲 Minio。
- Runtime 同時支援 runC、runD 和 Kata,以及 runE (未來版本),滿足各種對共享、隔離以及安全場景下使用。
- 鏡像管理上提供了開箱即用的 Nydus + Dragonfly,使用 Nydus 可以在叢集内部使鏡像按需加載,可以大大提高叢集的動态彈性的能力;Dragonfly 則是提供鏡像在叢集的 P2P 的能力,這兩個能力主要面向 Kubernetes 叢集提供 Serverless 服務,以及動态彈性的場景,AI 大資料鏡像資料叢集内分發的場景等。
部署 ACNS 與 Rainbond
伺服器資訊:
作業系統 | IP |
Anolis OS 8.6 ANCK | 172.31.98.243 |
Anolis OS 8.6 ANCK | 172.31.98.242 |
部署龍蜥 ACNS
在任意節點上下載下傳 sealer 可執行檔案:
wget -c https://cloud-native.oss-cn-shanghai.aliyuncs.com/bin/amd64/sealer-latest-linux-amd64.tar.gz && tar -xvf sealer-latest-linux-amd64.tar.gz -C /usr/bin
使用 sealer 下載下傳叢集鏡像 :
sealer pull cloud-native-registry.cn-shanghai.cr.aliyuncs.com/kubernetes/anoliscluster:v1.0
定義 Clusterfile 檔案,Clusterfile 用于定義叢集相關資訊,例如:節點 IP、參數等,通過 Clusterfile 一鍵式部署叢集。
$ vim Clusterfile
apiVersion: sealer.cloud/v2
kind: Cluster
metadata:
name: my-cluster # 自定義叢集名稱
spec:
image: cloud-native-registry.cn-shanghai.cr.aliyuncs.com/kubernetes/anoliscluster:v1.0
env:
- ContainerRuntime=containerd # 使用 containerd 運作時
- SkipPreflight=true
- SupportKata=true # 使用 Kata 容器
- SupportNydus=true # 使用 Nydus
- SupportDragonfly=true # 使用 Dragonfly
- YodaDevice=/dev/vdb # Node 節點未使用的磁盤,用于 Dragonfly 存儲資料
ssh:
passwd: xxxx # 節點 root ssh 密碼
hosts:
- ips: [ 172.31.98.243 ] # master IPS
roles: [ master ]
- ips: [ 172.31.98.242 ] # node IPS
roles: [ node ]
開始部署 ACNS
sealer apply -f Clusterfile
配置 Dragonfly
等待部署完成後,在 Node 節點上配置 Containerd 使用 Dragonfly,在 Containerd 中配置鏡像的 Mirror,如下:
$ vim /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".registry]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["http://127.0.0.1:65001","https://registry-1.docker.io"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."sea.hub:5000"]
endpoint = ["http://127.0.0.1:65001","https://sea.hub:5000"]
[plugins."io.containerd.grpc.v1.cri".registry.configs."sea.hub:5000".tls]
insecure_skip_verify = true
配置完成後重新開機 Containerd 生效。
systemctl restart containerd
在 ACNS 上部署 Rainbond
修改叢集的 Coredns 配置,讓 sea.hub 可在叢集中使用。
$ kubectl edit cm coredns -n kube-system
apiVersion: v1
data:
Corefile: |
.:53 {
hosts {
172.31.98.243 sea.hub
fallthrough
}
}
# 重新開機 Coredns POD
$ kubectl delete pod -l k8s-app=kube-dns -n kube-system
使用 Helm 部署 Rainbond
建立 rbd-system 命名空間。
kubectl create namespace rbd-system
添加 Rainbond Helm 倉庫。
helm repo add rainbond https://openchart.goodrain.com/goodrain/rainbond
執行 Helm 指令安裝 Rainbond 并指定鏡像倉庫資訊,複用 sealer 的 registry。
helm install rainbond rainbond/rainbond-cluster -n rbd-system \
--set Cluster.imageHub.enable=true \
--set Cluster.imageHub.domain=sea.hub:5000 \
--set Cluster.imageHub.namespace=rainbond \
--set Cluster.imageHub.username=sealer \
--set Cluster.imageHub.password=sealer
當名稱包含 rbd-app-ui 的 POD 為 Running 狀态時即安裝成功。POD rbd-app-ui-669bb7c74b-7bmlf 為 Running 狀态時,表示 Rainbond 安裝成功。
複制如下指令,在叢集中執行,可以擷取到平台通路位址。如果有多個網關節點,則任意一個位址均可通路到控制台。
kubectl get rainbondcluster rainbondcluster -n rbd-system -o go-template --template='{{range.spec.gatewayIngressIPs}}{{.}}:7070{{printf "\n"}}{{end}}'
最後
龍蜥雲原生套件 ACNS 提供一鍵部署叢集的能力,Rainbond 提供一鍵部署應用的能力,Rainbond 與龍蜥雲原生套件 ACNS 結合提供一站式的雲原生體驗:
- 基礎設施:Anolis OS 是龍蜥社群推出的完全開源、中立、開放的發行版,它支援多計算架構,也面向雲端場景優化,相容 CentOS 軟體生态。
- 容器層:龍蜥 ACNS 提供了經過大規模生産驗證的 ACK-D 叢集,同時也提供了 Kata、Dragonfly、Nydus。
- 應用層:Rainbond 是一個雲原生應用管理平台,使用簡單,不需要懂容器、Kubernetes 和底層複雜技術。
—— 完 ——