日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

在基于ECS自建的Kubernetes集群中集成VNode以接入ECI服務

在阿里云ECS上自建了Kubernetes集群并需要接入ECI服務時,您需要在集群中部署虛擬節點(VNode)。本文介紹在同一VPC下,ECS上自建的Kubernetes集群如何快速接入VNode,以便使用ECI。

背景信息

ECI支持無縫集成Kubernetes,可以為Kubernetes提供一種層次化的解決方案:即ECI負責底層Pod容器資源的調度和管理工作,Kubernetes在ECI之上作為PaaS層來管理業務負載。如果您在阿里云ECS上自建了Kubernetes集群,可以通過部署虛擬節點(VNode)的方式來使用ECI。更多信息,請參見自建Kubernetes集群對接ECI

前提條件

  • 已在ECS上通過kubeadm自建了Kubernetes集群,且集群的版本屬于1.13~1.30版本。

  • 集群中已部署Flannel、Calico或Cilium網絡插件。

安裝VNodectl

為了能夠方便地接入和管理VNode,ECI提供了VNodectl命令行工具。建議您將VNodectl安裝在Kubernetes集群的master節點上。

  1. 連接集群。

  2. 下載安裝包。

    wget https://eci-docs.oss-cn-beijing.aliyuncs.com/vnode/vnodectl_0.0.4-beta_linux_amd64.tar.gz -O vnodectl.tar.gz 
  3. 解壓安裝包。

    tar xvf vnodectl.tar.gz 
  4. 復制vnodectl到指定目錄。

    cp vnodectl /usr/local/bin/vnode

配置~/.vnode/config文件

  1. 修改~/.vnode/config文件內容。

    vim ~/.vnode/config

    請根據實際修改~/.vnode/config文件內容,以下為示例:

    重要
    • kubeconfig需具有cluster-admin權限。如果您想要使用更小權限的kubeconfig,請參見配置集群

    • 請確保使用的kubeconfig文件中的apiserver地址能被Vnode訪問。

    kind: vnode
    contexts:
        - name: default                                          # context名稱
          region-id: cn-hangzhou                                 # 地域ID
          access-key-id: LTAI5tJbBkHcHBUmuP7C****                # AccessKey ID
          access-key-secret: 5PlpKJT6sgLcD4f9y5pACNDbEg****      # AccessKey Secret,
          vswitch-id: vsw-7xv2yk45qp5etidgf****                  # VNode所屬交換機ID
          security-group-id: sg-7xv5tcch4kjdr65t****             # VNode所屬安全組ID
          kubeconfig: /path/to/kubeconfig                        # 集群kubeconfig文件
    current-context: default
  2. 使VNode運行加載context下的配置。

    vnode config set-context <context-name>

創建Vnode

  1. 創建一個VNode。

    vnode create

    返回示例如下,其中VirtualNodeId的值即為生成的VNode的ID。

    {"RequestId":"AB772F9D-2FEF-5BFD-AAFB-DA3444851F29","VirtualNodeId":"vnd-7xvetkyase7gb62u****"}
  2. 查看節點信息。

    kubectl get node

    返回示例如下,可以看到集群中已接入VNode。

    NAME                                    STATUS     ROLES                  AGE    VERSION
    cn-hangzhou.vnd-7xvetkyase7gb62u****    Ready      agent                  174m   v1.20.6
    vnode-test001                           Ready      control-plane,master   23h    v1.20.6
    vnode-test002                           Ready      <none>                 22h    v1.20.6

配置反親和性策略

由于VNode不是真實節點,因此無法運行DaemonSet。創建VNode后,您需要修改kube-proxy的DaemonSet,配置nodeAffinity來禁止DaemonSet調度到VNode。

  1. 修改DaemonSet配置。

    kubectl -n kube-system edit ds kube-proxy
  2. 配置nodeAffinity。

    在spec>template>spec下添加以下YAML:

    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchExpressions:
            - key: type
              operator: NotIn
              values:
              - virtual-kubelet

后續操作

創建VNode后,您可以通過以下方式將Pod調度到VNode上,以使用ECI來運行Pod。

  • 手動調度

    通過配置nodeSelector和tolerations、指定nodeName的方式,可以手動將Pod調度到VNode。具體操作,請參見將Pod調度到VNode

  • 自動調度

    部署eci-profile組件后,可以自定義配置Selector,將滿足條件的Pod自動調度到VNode。具體操作,請參見使用eci-profile調度Pod到VNode

打通Pod網絡

調度到VNode上的ECI Pod將占用所屬VPC下交換機的一個彈性網卡資源,默認具備一個內網IP地址。

默認情況下,ECI Pod無法訪問自建集群Overlay網絡(Flannel、Calico或Cilium)中的Pod,但自建集群Overlay網絡中的Pod是可以訪問ECI Pod的。如果ECI Pod需要訪問自建集群Overlay網絡中的Pod,需要在所屬VPC的路由表中增加路由條目,使得從ECI Pod出去的數據包可以通過該路由條目,正確路由到自建集群對應的ECS節點上。

配置示例如下:

  • 示例場景

    假設集群中有2個Pod,1個運行在VNode上(test1 ),1個運行在ECS節點上(test2)。默認情況下,test2可以訪問test1,但test1無法訪問test2。

    NAME      READY     RESTARTS    AGE    IP                NODE                                   NOMINATED NODE   READINESS NODE
    test1     1/1       0           58s    192.168.0.245     cn-hangzhou.vnd-7xvetkyase7gb62u****   <none>           <none>
    test2     1/1       0           35s    10.88.1.4         vnode-test002                          <none>           <none>
  • 操作步驟

    1. 登錄專有網絡管理控制臺

    2. 在左側導航欄,單擊路由表

    3. 切換地域,找到Pod所屬VPC對應的路由表,單擊路由表ID。

    4. 路由條目列表頁簽下,單擊自定義路由條目頁簽。

    5. 單擊添加路由條目

    6. 在彈出的對話框中,配置路由條目,然后單擊確定

      以示例場景為例:

      • 目標網段:輸入ECS節點所在的交換機網段。例如10.88.1.0/24。

      • 下一跳類型:選擇ECS實例

      • ECS實例:選擇ECS節點。

  • 結果驗證

    通過kubectl exec命令進入test-pod-1的容器內執行ping命令,如果可以Ping通test2的IP,則表示已經打通Pod網絡,test1可以訪問test2。

相關文檔