Tüm Ürünler
Search
Belge Merkezi

Container Service for Kubernetes:Get started with application distribution

Son Güncelleme:Oct 06, 2026

ACK One Fleet uygulama dağıtımını kullanarak uygulamaları ilişkili kümelere PropagationPolicy ile dağıtın — Git depoları gerekmez.

Şunları yapacaksınız:

  • Bir Fleet örneğinde uygulama oluşturun

  • Çoklu küme dağıtımı için bir PropagationPolicy tanımlayın

  • (İsteğe bağlı) Küme başına özelleştirme için OverridePolicy uygulayın

  • Dağıtılan kaynakları doğrulayın, güncelleyin ve temizleyin

Ön koşullar

Aşağıdakilerin hazır olduğundan emin olun:

(İsteğe bağlı) 1. Adım: Fleet örneğinde ad alanı oluşturma

Fleet örneğinde yoksa ad alanını oluşturun.

demo adlı bir ad alanı oluşturun:

kubectl create namespace demo

2. Adım: Fleet örneğinde uygulama oluşturma

Fleet; ConfigMap'leri, Deployment'ları ve Service'leri dağıtır. Bu örnekte bir NGINX Deployment kullanılır.

  1. Aşağıdaki içeriğe sahip web-demo.yaml dosyasını oluşturun:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      namespace: demo
      name: web-demo
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: web-demo
      template:
        metadata:
          labels:
            app: web-demo
        spec:
          containers:
          - name: nginx
            image: registry-cn-hangzhou.ack.aliyuncs.com/acs/web-demo:0.5.0
            ports:
            - containerPort: 80
  2. Uygulamayı dağıtın:

    kubectl apply -f web-demo.yaml

3. Adım: Uygulamayı dağıtmak için PropagationPolicy oluşturma

PropagationPolicy, hangi kaynakların hangi kümelere dağıtılacağını tanımlar. Uygulandığında denetleyici, eşleşen kaynakları hedef kümelere otomatik olarak iter.

Bu örnekte Deployment iki kümeye Duplicated modunda dağıtılır; her küme üç çoğaltmayı bağımsız olarak çalıştırır.

  1. Üye küme kimliklerini alın:

    kubectl get mcl

    Çıktı şuna benzer:

    NAME                                HUB ACCEPTED   MANAGED CLUSTER URLS   JOINED   AVAILABLE   AGE
    cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx   true                                  True     True        3d23h
    cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx   true                                  True     True        5d21h
  2. Aşağıdaki içeriğe sahip propagationpolicy.yaml dosyasını oluşturun. ${cluster1-id} ve ${cluster2-id} değerlerini küme kimliklerinizle değiştirin.

    ClusterPropagationPolicy küme kapsamındaki kaynakları (örneğin Namespaces) dağıtır. PropagationPolicy ise ad alanı kapsamındaki kaynakları dağıtır ve yalnızca kendi ad alanı içinde seçim yapar.
    apiVersion: policy.one.alibabacloud.com/v1alpha1
    kind: ClusterPropagationPolicy
    metadata:
      name: web-demo
    spec:
      resourceSelectors:
      - apiVersion: v1
        kind: Namespace
        name: demo
      placement:
        clusterAffinity:
          clusterNames:
          - ${cluster1-id} # The ID of your cluster.
          - ${cluster2-id} # The ID of your cluster.
        replicaScheduling:
          replicaSchedulingType: Duplicated
    ---
    apiVersion: policy.one.alibabacloud.com/v1alpha1
    kind: PropagationPolicy
    metadata:
      name: web-demo
      namespace: demo
    spec:
      preserveResourcesOnDeletion: true # When true, deleting resources from the Fleet instance keeps them in the member cluster. Set to false to delete them together.
      resourceSelectors:
      - apiVersion: apps/v1
        kind: Deployment
        name: web-demo
        namespace: demo
      placement:
        clusterAffinity:
          clusterNames:
          - ${cluster1-id} # The ID of your cluster.
          - ${cluster2-id} # The ID of your cluster.
        replicaScheduling:
          replicaSchedulingType: Duplicated

    Temel parametreler aşağıda listelenmiştir. Parametrelerin tamamı için bkz. PropagationPolicy.

    Parametre Açıklama Örnek
    resourceSelectors Dağıtılacak kaynaklar. apiVersion, kind, name, namespace veya labelSelector ile eşleştirin. demo ad alanındaki web-demo Deployment'ını seçin.
    placement.clusterAffinity Dağıtım için hedef kümeler. Küme adları yerine küme kimliklerini girin. ${cluster1-id}, ${cluster2-id}
    replicaScheduling.replicaSchedulingType Zamanlama modu. Duplicated, tam çoğaltma sayısını (spec.replicas tarafından tanımlanan) her kümeye kopyalar. Duplicated
  3. PropagationPolicy'yi uygulayın:

    kubectl apply -f propagationpolicy.yaml

(İsteğe bağlı) 4. Adım: Küme başına yapılandırmayı özelleştirmek için OverridePolicy oluşturma

OverridePolicy, dağıtımdan önce kaynak yapılandırmasını değiştirerek ayarları tek tek kümelere göre uyarlamaya olanak tanır.

Bu örnek ${cluster2-id} için iki değişiklik uygular:

  • replicas değerini 3 değerinden 1 değerine düşürür

  • Görüntüye kayıt defteri ön eki ekler

OverridePolicy uygulanmadan önce, ${cluster2-id} üzerindeki Deployment şu özelliklere sahiptir:

spec:
  replicas: 3
  ...
  containers:
    - image: registry-cn-hangzhou.ack.aliyuncs.com/acs/web-demo:0.5.0

OverridePolicy uygulandıktan sonra, ${cluster2-id} üzerindeki Deployment şu hale gelir:

spec:
  replicas: 1
  ...
  containers:
    - image: {{Registry}}/registry-cn-hangzhou.ack.aliyuncs.com/acs/web-demo:0.5.0
  1. Aşağıdaki içeriğe sahip overridepolicy.yaml dosyasını oluşturun:

    apiVersion: policy.one.alibabacloud.com/v1alpha1
    kind: OverridePolicy
    metadata:
      name: example
      namespace: demo
    spec:
      resourceSelectors:
        - apiVersion: apps/v1
          kind: Deployment
          name: web-demo
      overrideRules:
        - targetCluster:
            clusterNames:
              - ${cluster2-id}
          overriders:
            plaintext:
              - operator: replace
                path: /spec/replicas
                value: 1
            imageOverrider:
              - component: Registry
                operator: add
                value: {{Registry}}

    Temel parametreler aşağıda listelenmiştir. Parametrelerin tamamı için bkz. OverridePolicy.

    Parametre Açıklama Örnek
    resourceSelectors Geçersiz kılınacak kaynaklar. apiVersion, kind, name, namespace veya labelSelector ile eşleştirin. web-demo Deployment'ını seçin.
    overrideRules.plaintext Kaynak alanlarını JSONPatch ile geçersiz kılın. operator, path ve value değerlerini ayarlayın. spec.replicas değerini 1 olarak değiştirin.
    overrideRules.imageOverrider Görüntü bileşenlerini geçersiz kılın: Registry, Repository veya Version. Görüntüye kayıt defteri ön eki ekleyin.
  2. OverridePolicy'yi uygulayın:

    kubectl apply -f overridepolicy.yaml

5. Adım: Dağıtım durumunu görüntüleme

Uygulamanın tüm üye kümelere dağıtılıp dağıtılmadığını kontrol edin:

kubectl amc get deploy -ndemo -M

Çıktı şuna benzer:

NAME       CLUSTER          READY   UP-TO-DATE   AVAILABLE   AGE    ADOPTION
web-demo   cxxxxxxxxxxxxx   3/3     3            3           3d4h   Y
web-demo   cxxxxxxxxxxxxx   3/3     3            3           3d4h   Y

READY: 3/3 ve ADOPTION: Y değerleri, uygulamanın her kümede çalıştığını doğrular.

6. Adım: Uygulamayı güncelleme

  1. replicas değerini 4 olarak artırmak için web-demo.yaml dosyasını güncelleyin:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      namespace: demo
      name: web-demo
    spec:
      replicas: 4
      selector:
        matchLabels:
          app: web-demo
      template:
        metadata:
          labels:
            app: web-demo
        spec:
          containers:
          - name: nginx
            image: registry-cn-hangzhou.ack.aliyuncs.com/acs/web-demo:0.5.0
            ports:
            - containerPort: 80
  2. Güncellenen bildirimi uygulayın:

    kubectl apply -f web-demo.yaml
  3. Yayılımın tüm kümelere gerçekleştiğini doğrulayın:

    kubectl amc get deploy -ndemo -M

    Çıktı şuna benzer:

    NAME       CLUSTER          READY   UP-TO-DATE   AVAILABLE   AGE    ADOPTION
    web-demo   cxxxxxxxxxxxxx   4/4     4            4           3d4h   Y
    web-demo   cxxxxxxxxxxxxx   4/4     4            4           3d4h   Y

    READY: 4/4 değeri, her iki kümenin de güncellendiğini doğrular.

7. Adım: Uygulama kaynaklarını silme

Varsayılan olarak, bir uygulamayı veya PropagationPolicy'yi Fleet örneğinden kaldırmak, kaynakları üye kümelerden silmez.

Kaynakları üye kümelerden silmek için:

  1. ClusterPropagationPolicy içinde preserveResourcesOnDeletion değerini false olarak ayarlayın:

    apiVersion: policy.one.alibabacloud.com/v1alpha1
    kind: ClusterPropagationPolicy
    metadata:
      name: web-demo
    spec:
      preserveResourcesOnDeletion: false
      resourceSelectors:
      - apiVersion: apps/v1
        kind: Deployment
        name: web-demo
      - apiVersion: v1
        kind: Namespace
        name: demo
      placement:
        clusterAffinity:
          clusterNames:
          - ${cluster1-id} # The ID of your cluster.
          - ${cluster2-id} # The ID of your cluster.
        replicaScheduling:
          replicaSchedulingType: Duplicated
  2. Güncellenen ilkeyi uygulayın:

    kubectl apply -f propagationpolicy.yaml
  3. Uygulama kaynaklarını silin:

    kubectl delete -f web-demo.yaml
  4. Üye kümelerden kaldırıldığını doğrulayın:

    kubectl amc get deploy -ndemo -M

    Çıktı şuna benzer:

    cluster(cxxxxxxxxxxxxx): deployments.apps "web-demo" not found
    cluster(cxxxxxxxxxxxxx): deployments.apps "web-demo" not found

Başvurular