混合叢集中的容器網路外掛程式包括本機資料中心中啟動並執行容器網路外掛程式和雲上計算節點上啟動並執行容器網路外掛程式兩部分。本文將介紹如何在混合叢集中部署和配置Terway網路外掛程式。
前提條件
對於情境二:本機資料中心容器網路模式為BGP網路及情境三:本機資料中心容器網路為Host網路,在建立註冊叢集時需要配置Terway網路的參數。
根據您的需要選擇是否選中IPvlan。
配置Pod虛擬交換器。
配置Service CIDR。
具體操作,請參見建立註冊叢集。
情境一:本機資料中心容器網路模式為覆蓋(Overlay)網路
若本機資料中心內的容器網路模式為覆蓋網路,則雲上計算節點也可以複用此網路模式,只需要保證雲上計算節點能夠正常拉取容器網路外掛程式守護進程集所使用的容器鏡像即可。
例如,常見的覆蓋網路模式有:
Flannel VXLAN模式。
Calico IPIP模式。
Cilium VXLAN模式。
情境二:本機資料中心容器網路模式為BGP網路
若本機資料中心內的容器網路模式為BGP網路,那麼雲上計算節點需要使用Terway網路。關於雲上雲下容器網路互連,請參見雲上邊界路由器的BGP配置。
在此情境下,需要保證以下條件:
雲下容器網路外掛程式(如Calico BGP路由反射模式)的守護進程集不要被調度到雲上計算節點。
同時也要保證Terway網路外掛程式的守護進程集不要被調度到雲下計算節點。
在註冊叢集中,通過註冊叢集節點池擴容的計算節點都會添加一個固定的節點標籤:alibabacloud.com/external=true
,可以作為區分雲上雲下節點的過濾條件。
例如,針對雲下Calico網路外掛程式,可以使用nodeAffinity
設定其不被調度到擁有標籤alibabacloud.com/external=true
的節點上。其他任何運行於雲下且不希望被調度到雲上的工作負載,都可以使用這種方式設定。執行以下命令更新Calico網路外掛程式。
cat <<EOF > calico-ds.pactch
spec:
template:
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: alibabacloud.com/external
operator: NotIn
values:
- "true"
EOF
kubectl -n kube-system patch ds calico-node -p "$(cat calico-ds.pactch)"
雲上Terway網路外掛程式預設只被調度到擁有標籤alibabacloud.com/external=true
的節點上。
情境三:本機資料中心容器網路為Host網路
由於本機資料中心內的容器網路使用的是Host網路,所以只需保證雲上Terway網路外掛程式的守護進程集不被調度到雲下即可。雲上Terway網路外掛程式預設只調度到擁有節點標籤為alibabacloud.com/external=true
的雲上節點。
安裝和配置Terway網路外掛程式
在情境二和情境三下,需要為混合叢集的雲上節點安裝和配置Terway網路外掛程式。
步驟一:為Terway外掛程式配置RAM許可權
通過控制台配置
建立RAM使用者並為其授予以下自訂權限原則。具體操作,請參見使用RAM授予叢集及雲資源存取權限。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在保密字典頁面,單擊使用YAML建立資源,填入以下樣本內容,建立一個名稱為alibaba-addon-secret的Secret。
說明組件會通過其中儲存的AccessKeyID和AccessKeySecret訪問雲上服務。若已存在alibaba-addon-secret,則忽略。
apiVersion: v1 kind: Secret metadata: name: alibaba-addon-secret namespace: kube-system type: Opaque stringData: access-key-id: <RAM使用者的AccessKeyID> access-key-secret: <RAM使用者的AccessKeySecret>
通過onectl配置
在本地安裝配置onectl。具體操作,請參見通過onectl管理註冊叢集。
執行以下命令,為Terway外掛程式配置RAM許可權。
onectl ram-user grant --addon terway-eniip
預期輸出:
Ram policy ack-one-registered-cluster-policy-terway-eniip granted to ram user ack-one-user-ce313528c3 successfully.
步驟二:安裝Terway外掛程式
通過控制台安裝
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在組件管理頁面單擊網路頁簽,在terway-eniip組件地區單擊安裝。
說明在安裝頁面可選擇是否啟用 NetworkPolicy,預設不開啟,若您啟用此功能,需進行額外配置。更多詳細資料,請參見開啟Terway組件的NetworkPolicy(可選)。
通過onectl安裝
執行以下命令,安裝Terway外掛程式。
onectl addon install terway-eniip
預期輸出:
Addon terway-eniip, version **** installed.
步驟三:配置Terway外掛程式
執行以下命令編輯ConfigMap eni-config並配置eni_conf.access_key
和eni_conf.access_secret
。
kubectl -n kube-system edit cm eni-config
eni-config的樣本如下所示。
kind: ConfigMap
apiVersion: v1
metadata:
name: eni-config
namespace: kube-system
data:
eni_conf: |
{
"version": "1",
"max_pool_size": 5,
"min_pool_size": 0,
"vswitches": {"AZoneID":["VswitchId"]},
"eni_tags": {"ack.aliyun.com":"{{.ClusterId}}"},
"service_cidr": "{{.ServiceCIDR}}",
"security_group": "{{.SecurityGroupId}}",
"access_key": "",
"access_secret": "",
"vswitch_selection_policy": "ordered"
}
10-terway.conf: |
{
"cniVersion": "0.3.0",
"name": "terway",
"type": "terway"
}
您可以使用KubeConfig串連註冊叢集並查看Terway網路外掛程式守護進程集,在混合叢集擴容雲上節點之前,它將不會被調度到任何一個雲下節點上。
執行以下命令查看Terway網路。
kubectl -nkube-system get ds |grep terway
預期輸出:
terway-eniip 0 0 0 0 0 alibabacloud.com/external=true 16s
開啟Terway組件的NetworkPolicy(可選)
在註冊叢集中Terway組件預設關閉NetworkPolicy。更多資訊,請參見在ACK叢集使用網路原則。
若您不需要開啟NetworkPolicy,請跳過該步驟。
若您已開啟NetworkPolicy,則需要根據自身環境確定是否安裝CRD,CRD資源樣本如下所示。
重要Terway組件的NetworkPolicy功能依賴Calico CRD。若您的叢集已經使用了Calico容器網路外掛程式,開啟Terway的NetworkPolicy功能時可能導致已有Calico容器網路異常。若有問題,請提交工單諮詢。