將靜態路徑新增至工作者節點
為您的工作節點建立靜態路由,方法是啟用適用於 IBM Cloud® Kubernetes Service 叢集的靜態路由附加元件。
關於靜態路由
當您配置叢集網路以透過專用網路與其他網路進行通訊時,可能需要在工作者節點上新增自訂靜態路徑。 靜態路徑可讓工作者節點透過 VPN 或閘道應用裝置,將回應封包從叢集順利重新遞送至內部部署資料中心的 IP 位址。
例如,您可以使用 VPN,透過專用網路將叢集連接至內部部署資料中心。 此外,您的專用 VPN 連線會在叢集與資料中心之間的要求中保留來源 IP 位址。
當內部部署服務將要求傳送至叢集裡的應用程式時,應用程式 Pod 所在的工作者節點會因反向路徑過濾 (RPF) 而捨棄回應。 RPF 是 Linux 核心功能,可捨棄對工作者節點遞送表中未列出之 IP 位址的任何回應。 已捨棄回應,因為工作者節點無法遞送要求中所保留的內部部署 IP 位址。
在此情況下,您可以建立靜態路徑,以便當來自要求的來源 IP 位址來自其中一個內部部署子網路時,會改為將回應傳送至 VPN 閘道 IP 位址。 透過將此靜態路徑新增至工作者節點的遞送表,您可以確保下列各項:
- 由於 RPF,未捨棄回應封包,因為存在指向內部部署 IP 位址的遞送規則。
- 回應封包會先透過 VPN 閘道 IP 位址順利遞送,然後重新遞送至內部部署 IP 位址。
靜態路由叢集附加程式只能用來套用及管理靜態路由。 您需自行負責設定與管理您的VPN、閘道設備或 IBM Cloud® Direct Link 連線。
啟用靜態路由附加程式
要在 IBM Cloud Kubernetes Service 中開始使用靜態路由,請啟用靜態路由附加元件。
開始之前
從主控台啟用靜態路由附加程式
若要使用「IBM Cloud」主控台,請依照以下步驟操作。
- 在您的 叢集儀表板中,點選您要安裝「靜態路由附加元件」的叢集名稱。
- 在「靜態路由」卡上,按一下 安裝。
- 再按一下安裝。
- 在「靜態路由」卡片上,請確認該附加元件是否已列出。
使用 CLI 啟用靜態路由附加程式
若要使用 CLI,請依照以下步驟操作。
-
將「
container-service」外掛程式更新至最新版本。ibmcloud update && ibmcloud plugin update container-service -
啟用「
static-route」附加元件。ibmcloud ks cluster addon enable static-route --cluster CLUSTER_NAME_OR_ID -
驗證靜態路由附加程式的狀態為
Addon Ready。ibmcloud ks cluster addon ls --cluster CLUSTER_NAME_OR_ID輸出範例
Name Version Health State Health Status static-route 1.0.0 normal Addon Ready
建立靜態路由
啟用靜態路由附加程式 之後,您可以為自訂路由建立並套用資源。
-
建立靜態路徑資源的 YAML 檔。
apiVersion: static-route.ibm.com/v1 kind: StaticRoute metadata: name: <route_name> spec: subnet: "<subnet_CIDR>" gateway: "<gateway_IP>" selectors: - key: "<label_key>" values: - "<label_value>" operator: In範例
apiVersion: static-route.ibm.com/v1 kind: StaticRoute metadata: name: mystaticroute spec: subnet: "192.168.0.0/24" gateway: "10.0.0.1" selectors: - key: "kubernetes.io/arch" values: - "amd64" operator: Insubnet- 指定外部子網路的 CIDR,以從中傳送對工作者節點的要求,例如內部部署網路中的子網路。 外部子網不能位於以下保留範圍內。 允許裝置交互連接範圍
198.18.0.0/15。10.0.0.0/8172.16.0.0/16172.18.0.0/16172.19.0.0/16172.20.0.0/16
gateway- 如果閘道 IP 位址存在於與工作者節點相同的子網路上,請指定閘道 IP 位址。 如果您的閘道 IP 位址存在於 IBM Cloud 專用網路中的另一個子網路上,請不要包含此欄位。 在此情況下,工作者節點會將回應傳送至專用網路的後端路由器,而路由器會將回應傳送至另一個子網路上的閘道。 建立靜態路徑時,會自動將
10.0.0.0/8範圍內後端路由器的 IP 位址指派為預設閘道。 selectors- 若要僅根據工作者節點標籤在特定工作者節點上建立靜態路徑,請包含
key及values作為標籤。
-
將 YAML 檔案套用至叢集,以建立靜態路徑。
kubectl apply -f <route_name>.yaml -
驗證已建立靜態路徑。 在輸出中,針對您在其中建立靜態路徑的每一個工作者節點,檢查
node_status。kubectl get staticroute <route_name> -o yaml輸出範例
apiVersion: static-route.ibm.com/v1 kind: StaticRoute metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"static-route.ibm.com/v1","kind":"StaticRoute","metadata":{"annotations":{},"name":"mystaticroute"},"spec":{"selectors":[{"key":"kubernetes.io/arch","operator":"In","values":["amd64"]}],"subnet":"10.94.227.46/24"}} creationTimestamp: "2020-05-20T16:43:12Z" finalizers: - finalizer.static-route.ibm.com generation: 1 name: mystaticroute resourceVersion: "3753886" selfLink: /apis/static-route.ibm.com/v1/staticroutes/mystaticroute uid: f284359f-9d13-4e27-9d3a-8fb38cbc7a5c spec: selectors: - key: kubernetes.io/arch operator: In values: - amd64 subnet: 10.94.227.46/24 status: nodeStatus: - error: "" hostname: 10.94.227.19 state: gateway: 10.94.227.1 selectors: - key: kubernetes.io/arch operator: In values: - amd64 subnet: 10.94.227.46/24 - error: "" hostname: 10.94.227.22 state: gateway: 10.94.227.1 selectors: - key: kubernetes.io/arch operator: In values: - amd64 subnet: 10.94.227.46/24