Tüm Ürünler
Search
Belge Merkezi

Elastic Container Instance:Integrate a VNode with a self-managed Kubernetes cluster on ECS

Son Güncelleme:Oct 06, 2026

ECS üzerinde çalışan kendi yönettiğiniz Kubernetes kümenizde sanal bir düğüm (VNode) dağıtarak aynı VPC içindeki Elastic Container Instance (ECI) üzerinden podları zamanlayabilirsiniz.

Arka plan

ECI, altyapı katmanında pod zamanlamasını ve kaynak yönetimini üstlenir; Kubernetes ise bunun üzerinde iş yükü yönetimini sağlar. ECI kullanmak için ECS üzerindeki kendi yönettiğiniz kümenize bir VNode ekleyin. Kendi yönettiğiniz Kubernetes kümesini ECI'ye bağlama konusu, entegrasyon sürecinin tamamını kapsar.

Ön koşullar

  • kubeadm ile oluşturulmuş, ECS üzerinde çalışan kendi yönettiğiniz bir Kubernetes kümesi (v1.13–1.30).

  • Kümede Flannel, Calico veya Cilium ağ eklentisinin dağıtılmış olması.

vnodectl yükleme

ECI, VNode'ları bağlamak ve yönetmek için vnodectl aracını sağlar. Bu aracı, kümenizin kontrol düzlemi düğümlerinden birine yüklemeniz önerilir.

  1. Kubernetes kümenize bağlanın.

  2. VNodectl paketini indirin.

    wget https://eci-docs.oss-cn-beijing.aliyuncs.com/vnode/vnodectl_0.0.5-beta_linux_amd64.tar.gz -O vnodectl.tar.gz
  3. Paketi çıkarın.

    tar xvf vnodectl.tar.gz
  4. İkili dosyayı PATH değişkeninizdeki bir dizine taşıyın.

    cp vnodectl /usr/local/bin/vnode

~/.vnode/config dosyasını yapılandırma

  1. ~/.vnode/config dosyasını düzenleyin.

    vim ~/.vnode/config

    Yapılandırmanızı ekleyin. Örnek:

    Önemli
    • kubeconfig dosyasının cluster-admin izinlerine sahip olması gerekir. Sınırlı izinlere sahip alternatif yaklaşımlar için Küme yapılandırması konusuna bakın.

    • VNode'un, kubeconfig içindeki API sunucu adresine erişebilmesi gerekir.

    kind: vnode
    contexts:
        - name: default                                          # The name of the context.
          region-id: cn-hangzhou                                 # The region ID.
          access-key-id: <yourAccessKeyID>                       # The AccessKey ID.
          access-key-secret: <yourAccessKeySecret>               # The AccessKey secret.
          vswitch-id: vsw-7xv2yk45qp5etidgf****                  # The ID of the vSwitch to which the VNode belongs.
          security-group-id: sg-7xv5tcch4kjdr65t****             # The ID of the security group to which the VNode belongs.
          kubeconfig: /path/to/kubeconfig                        # The path to the cluster's kubeconfig file.
    current-context: default
  2. Aktif bağlamı ayarlayın.

    vnode config set-context <context-name>

VNode oluşturma

  1. Bir VNode oluşturun.

    vnode create

    Çıktı, VirtualNodeId değerini içerir:

    {"RequestId":"AB772F9D-2FEF-5BFD-AAFB-DA3444851F29","VirtualNodeId":"vnd-7xvetkyase7gb62u****"}
  2. Düğümü doğrulayın.

    kubectl get node

    VNode, STATUS Ready durumuyla listelenir:

    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

DaemonSet'in VNode'a zamanlanmasını engelleme

VNode sanal bir düğümdür ve DaemonSet'leri çalıştıramaz. Bir VNode oluşturduktan sonra, DaemonSet'lerin VNode'a zamanlanmasını önlemek için kube-proxy DaemonSet'ine bir nodeAffinity eklemeniz gerekir.

  1. DaemonSet yapılandırmasını düzenleyin.

    kubectl -n kube-system edit ds kube-proxy
  2. nodeAffinity yapılandırmasını ekleyin.

    Aşağıdaki YAML bloğunu spec.template.spec bölümüne ekleyin:

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

Podları VNode'a zamanlama

Bir VNode oluşturduktan sonra, podları VNode üzerinde ECI örnekleri olarak çalışacak şekilde zamanlamak için aşağıdaki yöntemleri kullanabilirsiniz.

  • Manuel zamanlama

    nodeSelector ve tolerations yapılandırarak veya nodeName belirterek podları manuel olarak bir VNode'a zamanlayabilirsiniz. Daha fazla bilgi için Podları VNode'a zamanlama konusuna bakın.

  • Otomatik zamanlama

    eci-profile bileşenini dağıttıktan sonra, eşleşen podları otomatik olarak VNode'a zamanlamak için özel bir seçici yapılandırabilirsiniz. Daha fazla bilgi için eci-profile kullanarak podları VNode'a zamanlama konusuna bakın.

Pod ağ bağlantısını kurma

VNode üzerindeki podlar, VPC vSwitch'ten bir ENI ve bir iç IP adresi alır.

Varsayılan olarak, VNode podları küme overlay ağındaki (Flannel, Calico veya Cilium) podlara ulaşamaz; ancak tersi mümkündür. VNode podlarının giden trafiğini doğru ECS düğümlerine yönlendirmek için VPC yönlendirme tablosuna bir rota girişi ekleyin.

Örnek rota yapılandırması:

  • Örnek senaryo

    Bu örnekte test1 VNode üzerinde, test2 ise bir ECS düğümünde çalışır. Varsayılan olarak test2, test1'e ulaşabilir; ancak test1, test2'ye ulaşamaz.

    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>
  • Yordam

    1. VPC konsolu üzerinden oturum açın.

    2. Sol gezinme bölmesinde Route Tables seçeneğine tıklayın.

    3. Kümenizin bulunduğu bölgeye geçin, VPC yönlendirme tablosunu bulun ve kimliğine tıklayın.

    4. Route Entry List sekmesinde Custom Route sekmesine tıklayın.

    5. Add Route Entry seçeneğine tıklayın.

    6. Rota girişi ekleme panelinde rotayı yapılandırın ve OK seçeneğine tıklayın.

      Örnek yapılandırma:

      • Destination CIDR Block: Hedef ECS düğümündeki podlar için CIDR bloğunu girin (örneğin, 10.88.1.0/24).

      • Next Hop Type: ECS Instance seçeneğini belirleyin.

      • ECS Instance: Hedef ECS düğümünü seçin.

  • Sonucu doğrulama

    test1 podunda bir kabuk açmak ve test2'yi ping etmek için kubectl exec komutunu çalıştırın. Başarılı bir yanıt, test1'in artık test2'ye erişebildiğini gösterir.

İlgili belgeler