作者:尹珉。Sealos 開源社群 Ambassador,雲原生愛好者。
在當今快節奏的軟體交付環境中,容器化交付已經成為許多企業選擇的首選技術手段。在可以存取公網的環境下,容器化交付不僅能夠提高軟體開發和交付的效率,還能夠幫助企業實現快速迭代和持續交付。
然而,在離線環境中,容器化交付面臨著諸多挑戰,包括軟體包和映象的準備困難、設定繁瑣、部署時間長等。在本文中,我們將以運維的角度去探討基於離線環境下使用容器化交付的痛點,提出一些解決方案以幫助企業在離線環境中實現高效的容器化交付。
我司主要面向政企客戶,所交付的產品必須是部署在內網中。作為運維負責人,一直苦惱於如何在客戶離線環境中以容器化的方式交付業務系統。政企客戶 IDC 機房的環境特殊性,導致目前運維同學在使用容器化交付時效率不高,客戶滿意度不高的情況,為了解決這個問題,我們需要找到一個能夠在離線環境中快速部署和管理 Kubernetes 叢集的工具。
1. 學習和理解成本高
Kubernetes 是一個複雜的系統,需要進行一定的學習和理解才能熟練使用。這對於不是很精通這項技術的運維工程師來說是一個很大的難點。
2. 映象管理
在離線環境中,無法直接從網際網路下載 Kubernetes 的映象和依賴項。因此需要將所需的映象和依賴項提前下載到本地,並將其匯入到 Kubernetes 叢集中。這可能需要花費一定的時間和精力。
3. 環境設定
在離線環境中,需要手動設定 Kubernetes 所需的所有元件和依賴項,例如 etcd、kube-apiserver、kube-controller-manager、kube-scheduler、kubelet、kube-proxy 等等。這需要在部署時有較高的運維經驗來對環境初始化問題進行排查和解決。
4. 網路設定
Kubernetes 叢集需要正確設定網路設定,以便容器之間可以互相通訊。在離線環境中,網路設定可能會更加複雜,需要仔細設定才能確保正常執行。
基於以上常見的痛點,我們可以看出,在離線環境中用容器化技術進行交付還是存在較高的學習門檻和設定難度,達不到開箱即用閃電交付的效果。
Sealos 可以像 Docker 那樣把整個叢集製作成映象,實現分散式軟體的構建、交付、執行。
Sealos 專案地址:https://github.com/labring/sealos
$ wget https://github.com/labring/sealos/releases/download/v4.1.4/sealos_4.1.4_linux_amd64.tar.gz \
&& tar zxvf sealos_4.1.4_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin
說明:此處基於 Kubernetes1.24.0 封裝含有 Calico 的映象作為演示,實際的業務映象也可以基於此方式進行封裝即可。
FROM labring/kubernetes:v1.24.0-amd64
COPY cni ./cni
CMD ["kubectl apply -f cni/tigera-operator.yaml","kubectl apply -f cni/custom-resources.yaml"]
$ sealos build -t registry.cn-hangzhou.aliyuncs.com/flowyun/kubernetes-calico:latest -f Kubefile .
$ sealos save -o Kubernetes.tar registry.cn-hangzhou.aliyuncs.com/demo/Kubernetes-calico:latest
$ tar zxvf sealos_4.1.4_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin
$ sealos load -i Kubernetes.tar
$ sealos images
說明:以單機安裝為例,叢集安裝同理。
$ sealos run registry.cn-hangzhou.aliyuncs.com/demo/Kubernetes-calico:latest --single
$ kubectl get pod -A
部署服務名稱 | 傳統交付方式部署耗時 | Sealos 閃電交付方式部署耗時 |
---|---|---|
MariaDB資料庫 | 1'hour | 1'min |
中介軟體(redis、nacos) | 1'hour | 30'min |
Kubernetes搭建 | 4'hour | |
Kubernetes元件設定偵錯 | 2'hour | |
業務系統服務 | 2'hour | |
12'hour/人 | 31'min/人 |
Sealos 是一款功能強大、易於使用的工具,可以幫助企業在離線環境中實現高效的容器化交付。Sealos 可以快速部署和升級 Kubernetes 叢集,在離線環境下執行非常穩定和可靠,使用離線包,不需要從 Internet 下載軟體,因此不易受到網路攻擊和惡意軟體的影響,使用標準的 Kubernetes YAML 檔案來建立叢集,降低了學習和使用的門檻,提高了易用性。