一文搞定完整的雲原生邊緣基礎設施堆棧

作者簡介

Janakiram MSV是Janakiram & Associates的首席分析師,也是國際信息技術學院的兼職教師。他也是Google Qualified Developer、亞馬遜認證解決方案架構師、亞馬遜認證開發者、亞馬遜認證SysOps管理員和微軟認證Azure專業人員。

Janakiram是雲原生計算基金會的大使,也是首批Kubernetes認證管理員和Kubernetes認證應用開發者之一。他曾在微軟、AWS、Gigaom Research等知名公司工作。

在之前的文章中,我們瞭解了雲原生邊緣計算堆棧的核心構件:K3s、Project Calico和Portworx。

本篇教程將帶你瞭解在邊緣集羣上安裝和配置這一軟件,該集羣是一組運行Ubuntu 18.04的英特爾NUC迷你電腦。這種基礎設施可用於在邊緣運行可靠、可擴展和安全的AI和IoT工作負載。

爲Calico自定義K3s安裝

默認情況下,K3s使用Flannel作爲容器網絡接口(CNI)運行,使用VXLAN作爲默認後端。在本文中,我們將用Calico代替它。

要將K3s與網絡堆棧Calico集成起來,我們需要自定義安裝以啓動CNI支持。

請注意在邊緣你至少需要3個節點運行在K3s集羣上以保證高可用。

在第一個指定爲服務器的節點上,運行以下命令:

 export K3S_TOKEN="secret_edgecluster_token"
export INSTALL_K3S_EXEC="--flannel-backend=none --disable=traefik --cluster-cidr=172.16.2.0/24 --cluster-init"
curl -sfL https://get.k3s.io | sh -

如果在你的網絡中172.16.2.0/24已經被佔用,那麼你必須選擇一個不同的pod網絡CIDR來代替上述命令中的172.16.2.0/24。

在其餘server節點上,運行以下命令。請注意,我們在安裝程序中添加--server開關,將其指向第一個節點的IP地址。

export K3S_TOKEN="secret_edgecluster_token"
export INSTALL_K3S_EXEC="--flannel-backend=none --disable=traefik --cluster-cidr=172.16.2.0/24 --server https://10.0.0.60:6443"
curl -sfL https://get.k3s.io | sh -

運行以下命令配置worker節點或agent:

export K3S_URL=https://10.0.0.60:6443
export K3S_TOKEN="secret_edgecluster_token"
curl -sfL https://get.k3s.io | sh -

使用K3s server的IP地址代替K3S_URL

這一步結束之後,你應該擁有一個帶有4個節點的集羣。

由於網絡尚未配置,因此沒有一個節點是ready的。只要我們將Calico specs應用到集羣,這些節點的狀態將會變成ready。

圖片

在進行下一步之前,先從其中一個server節點複製/etc/rancher/k3s/k3s.yaml到你的本地工作站並將KUBECONFIG環境變量指向它。別忘了在YAML文件中更新master URL。這提供了通過kubectl CLI對K3s集羣的遠程訪問。

在多節點K3s集羣上安裝Calico

我們將通過下載Calico manifests並修改它們來啓動:

wget https://docs.projectcalico.org/manifests/tigera-operator.yaml
wget https://docs.projectcalico.org/manifests/custom-resources.yaml

在K3s安裝過程中,打開custom-resources.yaml文件並更改CIDR到與上文提到的相同的IP地址段。

應用兩個manifest爲K3s集羣配置Calico網絡

kubectl create -f tigera-operator.yaml
kubectl create -f custom-resources.yaml

幾分鐘內,集羣狀態將變爲ready

圖片

最後,在calico-system命名空間中修改cni-config configmap以啓用IP轉發:

kubectl edit cm cni-config -n calico-system

改變以下所示的值,啓用IP轉發:

"container_settings": {
              "allow_ip_forwarding": true
          }

驗證Calico是否啓動並使用以下命令運行:

kubectl get pods -n calico-system

在這裏插入圖片描述

在K3s上安裝Portworx

Portworx 2.6及以上版本支持K3s,安裝流程與其他Kubernetes發行版並無差異。如果你不太瞭解,可以根據以下鏈接中的教程安裝Portworx:

https://thenewstack.io/tutorial-install-and-configure-portworx-on-a-bare-metal-kubernetes-cluster/

如果你手邊沒有etcd集羣,你可以在PX-Central安裝嚮導中選擇內置的KVDB。

圖片

我選擇了附加到每個主機的NVMe磁盤作爲存儲選項。你可以根據你的存儲配置進行修改。

圖片

K3s最重要的前提條件之一是支持CSI,所以請確保你在最後一步選擇了Enable CSI選項。

在這裏插入圖片描述

複製規範並將其應用到你的集羣中

圖片

幾分鐘內,在K3s上的Portworx集羣將會啓動並運行:

kubectl get pods -l name=portworx -n kube-system

在這裏插入圖片描述

CSI驅動作爲一個sidecar連接到DaemonSet中的每一個Pod,這就是爲什麼我們在Pod中看到兩個容器。

SSH進入其中一個節點,用下面的命令檢查Portworx集羣狀態。

sudo /opt/pwx/bin/pxctl status

圖片

我們現在已經擁有了一個基於K3s、Calico和Portworx的邊緣基礎設施,並且配置完整。在下一篇文章中,我們將部署一個運行在邊緣的AIoT工作負載。保持關注喲

原文鏈接:

https://thenewstack.io/tutorial-configure-cloud-native-edge-infrastructure-with-k3s-calico-portworx/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章