全部产品
Search
文档中心

Container Service for Kubernetes:Akses Layanan Lintas Kluster Menggunakan Nama Domain

更新时间:Jul 02, 2025

Distributed Cloud Container Platform for Kubernetes (ACK One) menyediakan fitur Layanan multi-kluster (MCS) yang memungkinkan Anda mengakses layanan lintas kluster Kubernetes menggunakan nama domain. Fitur ini memungkinkan pengalihan lalu lintas layanan lintas kluster tanpa perlu memodifikasi kode bisnis atau mengubah bidang dnsConfig atau konfigurasi CoreDNS untuk pod bisnis.

Prasyarat

  • Fitur Manajemen Armada telah diaktifkan.

  • Dua kluster terhubung dengan instance Armada. Salah satu kluster berperan sebagai penyedia layanan, sedangkan kluster lainnya berperan sebagai konsumen layanan. Untuk informasi lebih lanjut, lihat Kelola Kluster Terkait.

  • Versi Kubernetes dari kluster terkait harus 1.22 atau lebih baru.

  • Pod di kluster penyedia layanan dan pod di kluster konsumen layanan dapat berkomunikasi satu sama lain. Untuk informasi lebih lanjut, lihat Ikhtisar MCS.

    Catatan

    Setelah mengaktifkan konektivitas CIDR pod antar kluster, pastikan grup keamanan untuk pool node kluster telah mengizinkan lalu lintas dari blok CIDR pod kluster yang saling terhubung.

  • File kubeconfig dari kluster penyedia layanan, kluster konsumen layanan, dan instance Armada diperoleh, serta kubectl digunakan untuk terhubung ke kluster dan instance tersebut. Untuk informasi lebih lanjut, lihat Dapatkan File kubeconfig Kluster dan Gunakan kubectl untuk Terhubung ke Kluster.

Arsitektur MCS

Untuk mengizinkan layanan di kluster penyedia layanan diakses oleh pod klien di kluster konsumen layanan, ikuti langkah-langkah berikut:

  1. Buat layanan bernama service1 dan pod aplikasi yang diekspos menggunakan layanan service1 di kluster penyedia layanan. Buat juga layanan bernama service1 di kluster konsumen layanan.

  2. Buat layanan multi-kluster bernama service1 pada instance Armada. Saat membuat layanan multi-kluster, atur nama layanan menjadi service1 dan namespace menjadi namespace dari layanan service1 di kluster penyedia layanan. Selain itu, tentukan nama kluster penyedia layanan dan kluster konsumen layanan dalam konfigurasi layanan multi-kluster.

  3. Buat pod klien di kluster konsumen layanan. Dengan cara ini, Anda dapat menggunakan pod klien untuk mengakses pod backend dari layanan service1 di kluster penyedia layanan menggunakan nama domain.

Catatan

Dalam topik ini, aplikasi dan layanan diterapkan menggunakan kubectl. Anda juga dapat menggunakan fitur GitOps dan distribusi aplikasi dari instance Armada untuk mendistribusikan sumber daya di atas ke kluster terkait.

Langkah 1: Buat Layanan bernama service1 di kluster penyedia Layanan

  1. Hubungkan ke kluster penyedia layanan menggunakan file kubeconfig-nya. Kemudian, gunakan blok kode berikut untuk membuat file bernama web-demo-svc-provider.yaml:

    apiVersion: v1
    kind: Service
    metadata:
      name: service1
      namespace: provider-ns
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 8080
      selector:
        app: web-demo
      sessionAffinity: None
      type: ClusterIP
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: web-demo
      namespace: provider-ns
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: web-demo
      template:
        metadata:
          creationTimestamp: null
          labels:
            app: web-demo
        spec:
          containers:
          - env:
            - name: ENV_NAME
              value: cluster-provider
            image: registry-cn-hangzhou.ack.aliyuncs.com/acs/web-demo:0.5.0
            imagePullPolicy: Always
            name: web-demo
          dnsPolicy: ClusterFirst
          restartPolicy: Always
          schedulerName: default-scheduler
  2. Jalankan perintah berikut untuk membuat layanan bernama service1 dan pod aplikasi yang diekspos menggunakan layanan:

    kubectl apply -f web-demo-svc-provider.yaml

Langkah 2: Buat Layanan bernama service1 di kluster konsumen Layanan

  1. Hubungkan ke kluster konsumen layanan menggunakan file kubeconfig-nya. Kemudian, gunakan blok kode berikut untuk membuat file bernama web-demo-svc-consumer.yaml:

    Catatan

    Pada langkah ini, Anda tidak perlu membuat pod aplikasi.

    apiVersion: v1
    kind: Service
    metadata:
      name: service1
      namespace: provider-ns
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 8080
      selector:
        app: web-demo
      sessionAffinity: None
      type: ClusterIP
  2. Jalankan perintah berikut untuk membuat layanan bernama service1:

    kubectl apply -f web-demo-svc-consumer.yaml

Langkah 3: Buat Layanan multi-kluster pada instance Armada

  1. Hubungkan ke instance Armada menggunakan file kubeconfig-nya. Kemudian, gunakan blok kode berikut untuk membuat file bernama multiclusterservice.yaml:

    Catatan
    • Ganti <your consumer cluster id> dan <your provider cluster id> dengan ID kluster sebenarnya.

    • name dan namespace dari layanan multi-kluster harus sama dengan nama dan namespace dari layanan service1 di kluster penyedia layanan.

    apiVersion: networking.one.alibabacloud.com/v1alpha1
    kind: MultiClusterService
    metadata:
       name: service1
       namespace: provider-ns
    spec:
      consumerClusters:
        - name: <your consumer cluster id>
      providerClusters:
        - name: <your provider cluster id>
  2. Jalankan perintah berikut untuk membuat layanan multi-kluster bernama service1 pada instance Armada:

    kubectl apply -f multiclusterservice.yaml

Langkah 4: Buat pod klien di kluster konsumen Layanan untuk mengakses Layanan service1 di kluster penyedia Layanan

  1. Hubungkan ke kluster konsumen layanan menggunakan file kubeconfig-nya. Kemudian, gunakan blok kode berikut untuk membuat file bernama client-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: curl-client
      namespace: customer-ns
    spec:
      containers:
      - name: curl-client
        image: registry-cn-hangzhou.ack.aliyuncs.com/dev/curl:8.11.1
        command: ["sh", "-c", "sleep 12000"]
  2. Jalankan perintah berikut untuk menerapkan pod klien di kluster konsumen layanan:

    kubectl apply -f client-pod.yaml
  3. Jalankan perintah berikut untuk masuk ke pod klien di kluster konsumen layanan dan mengakses layanan service1 di kluster penyedia layanan:

    kubectl exec -it -ncustomer-ns curl-client -- sh
    
    curl service1.provider-ns

    Keluaran yang diharapkan:

    This is cluster-provider!