全部产品
Search
文档中心

Container Compute Service:Konfigurasikan acs-profile untuk menyuntikkan konfigurasi pod secara otomatis

更新时间:Jul 02, 2025

Untuk meminimalkan perubahan pada file YAML, Alibaba Cloud Container Compute Service (ACS) menyediakan fitur acs-profile. Fitur ini memberikan tampilan sumber daya di tingkat kluster. Topik ini menjelaskan cara mengonfigurasi acs-profile.

Deskripsi Fitur

acs-profile dapat menyuntikkan konfigurasi pod secara otomatis, mencakup vSwitch, grup keamanan, dan mode resolusi nama domain. Anda dapat memperbarui konfigurasi sesuai dengan kebutuhan bisnis Anda.

  • Tidak diperlukan restart komponen acs-virtual-node untuk memperbarui konfigurasi.

  • Konfigurasi yang diperbarui segera diterapkan ke pod ACS baru, tetapi hanya berlaku untuk pod ACS yang sudah ada setelah rolling releases dilakukan.

Prosedur

Saat sistem membuat pod, sistem membaca file konfigurasi acs-profile (ConfigMap bernama acs-profile) di namespace kube-system. Kemudian, sistem membuat pod berdasarkan konfigurasi dalam file tersebut. Anda dapat menjalankan perintah berikut untuk melihat file YAML dari acs-profile:

kubectl get cm -n kube-system acs-profile -o yaml

Contoh kode dalam format YAML adalah sebagai berikut:

apiVersion: v1
kind: ConfigMap
metadata:
  name: acs-profile
  namespace: kube-system
data:
  enablePrivateZone: "false"
  securityGroupId: sg-2zeeyaaxlkq9sppl****
  vSwitchIds: vsw-2ze23nqzig8inprou****,vsw-2ze94pjtfuj9vaymf****
  vpcId: vpc-2zeghwzptn5zii0w7****
  selectors: ""

Anda dapat menggunakan salah satu metode berikut untuk memodifikasi acs-profile:

  • Jalankan perintah kubectl edit

    kubectl edit configmap acs-profile -n kube-system
  • Gunakan Konsol ACS

    1. Masuk ke Konsol ACS.

    2. Di halaman Clusters, klik nama klaster untuk membuka halaman pengelolaan klaster.

    3. Di panel navigasi kiri halaman manajemen kluster, pilih Configurations > ConfigMaps.

    4. Pilih kube-system dari daftar drop-down Namespace.

    5. Temukan acs-profile dan klik Edit YAML.

Catatan

Jika terdapat kesalahan format dalam file setelah Anda memodifikasi konfigurasi di acs-profile, konfigurasi tersebut tidak akan berlaku. Informasi kesalahan disimpan dalam event. Anda dapat melihat informasi kesalahan menggunakan perintah kubectl berikut:

kubectl -n kube-system get event --field-selector involvedObject.namespace=kube-system,involvedObject.name=acs-profile

Perbarui parameter kluster

acs-profile berisi parameter kluster. Misalnya, parameter vpcId menentukan virtual private cloud (VPC) tempat pod diterapkan, sedangkan parameter vSwitchIds menentukan vSwitches yang terkait dengan pod. Anda dapat memperbarui parameter yang diperlukan sesuai dengan kebutuhan bisnis Anda. Konfigurasi yang diperbarui segera berlaku. Tabel berikut menjelaskan parameter yang dapat diperbarui.

Parameter

Contoh

Deskripsi

securityGroupId

sg-2ze0b9o8pjjzts4h****

Grup keamanan tempat pod ACS termasuk.

vSwitchIds

vsw-2zeet2ksvw7f14ryz****

ID vSwitches yang terkait dengan pod ACS. Pisahkan ID vSwitch dengan koma (,).

vpcId

vpc-2zeghwzptn5zii0w7****

ID VPC tempat pod ACS diterapkan.

enablePrivateZone

"false"

Menentukan apakah akan menggunakan PrivateZone untuk menyelesaikan nama domain.

Catatan

Parameter sebelumnya merupakan konfigurasi default tingkat kluster. Jika Anda tidak memodifikasi atau menimpa parameter saat membuat pod ACS, sistem akan menggunakan konfigurasi default bawaan yang ditentukan dalam acs-profile.

Konfigurasikan pemilih

Saat sistem membuat pod, sistem mencocokkan pod berdasarkan pemilih. Jika pod memiliki label yang sesuai dalam pemilih, anotasi dan label yang ditentukan ditambahkan ke pod untuk membuat fitur pod ACS berlaku.

Anda dapat mengonfigurasi beberapa pemilih untuk parameter pemilih. Anda harus menentukan nama setiap pemilih. Contoh:

Parameter

Deskripsi

name

Nama pemilih. Parameter ini wajib.

namespaceSelector

Filter pod menggunakan label namespace.

namespaceSelector.matchLabels

Aturan pencocokan dijelaskan dalam format {key,value}.

namespaceSelector.matchExpressions

Jelaskan aturan pencocokan menggunakan daftar persyaratan pemilih pod.

Operator yang valid termasuk In, NotIn, Exists, dan DoesNotExist. Nilai yang Anda tentukan untuk operator In dan NotIn harus tidak kosong.

objectSelector

Filter pod menggunakan label pod.

objectSelector.matchLabels

Aturan pencocokan dijelaskan dalam format {key,value}.

objectSelector.matchExpressions

Jelaskan aturan pencocokan menggunakan daftar persyaratan pemilih pod.

Operator yang valid termasuk In, NotIn, Exists, dan DoesNotExist. Nilai yang Anda tentukan untuk operator In dan NotIn harus tidak kosong.

effect

Anotasi dan label yang ingin Anda tambahkan secara dinamis ke pod.

Template konfigurasi pemilih:

apiVersion: v1
kind: ConfigMap
metadata:
  name: acs-profile
  namespace: kube-system
data:
  selectors: |
    [
      {
        "name": "selector-demo1",
        "namespaceSelector": {
          "matchLabels": {
            "kubernetes.io/metadata.name": "dev-ns"
          }
        },
        "objectSelector": {
          "matchLabels": {
            "acs": "true"
          },
          "matchExpressions": [
            {
              "key": "usage",
              "operator": "In",
              "values": ["testing"]
            }
          ]
        },
        "effect": {
          "annotations": {
            "network.alibabacloud.com/custom-dnsconfig": "{\"servers\":[\"114.114.114.114\",\"8.8.8.8\"],\"searches\":[\"xx.com\",\"yy.com\"],\"options\":[\"ndots:2\",\"edns0\"]}"
          },
          "labels": {
            "created-by-acs": "true"
          }
        }
      }
    ]

Dalam template sebelumnya, pemilih bernama selector-demo1 memberikan kemampuan berikut:

Jika namespace pod adalah dev-ns dan pod berisi label acs=true serta usage=testing, maka anotasi network.alibabacloud.com/custom-dnsconfig="{\"servers\":[\"114.114.114.114\",\"8.8.8.8\"],\"searches\":[\"xx.com\",\"yy.com\"],\"options\":[\"ndots:2\",\"edns0\"]}" dan label created-by-acs=true secara otomatis ditambahkan ke pod.

Penting

Untuk memastikan kecocokan yang tepat, kami sarankan Anda mengonfigurasi setidaknya salah satu parameter namespaceSelector atau objectSelector untuk setiap pemilih. Jika kedua namespaceSelector dan objectSelector dikonfigurasi, pod harus cocok dengan nilai kedua parameter tersebut. Jika tidak ada yang dikonfigurasi tetapi parameter effect dikonfigurasi, pengaturan effect diterapkan ke semua pod ACS, yang mungkin menyebabkan dampak yang tidak diinginkan.

Jika Anda mengonfigurasi beberapa pemilih, pemilih tersebut dicocokkan oleh ACS secara berurutan. Setelah pod dicocokkan, anotasi dan label yang ditentukan dalam pengaturan effect secara otomatis ditambahkan ke pod. Anotasi dan label ini tidak menimpa anotasi dan label yang sudah ada pada pod. Jika terdapat anotasi atau label duplikat, prioritas anotasi atau label tersebut adalah sebagai berikut:

Anotasi dan label yang sudah ada pada pod.

Anotasi dan label yang ditentukan dalam pengaturan effect dari pemilih pertama yang cocok.

Anotasi dan label yang ditentukan dalam pengaturan effect dari pemilih selanjutnya yang cocok.

Contoh

  1. Gunakan konten berikut untuk membuat Deployment yang memenuhi kondisi selector-demo1. Untuk informasi lebih lanjut, lihat Gunakan Template YAML untuk Membuat Aplikasi.

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
      namespace: dev-ns
      labels:
        acs: "true"
        usage: "testing"
    spec:
      containers:
      - name: nginx
        image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
        command: ["sleep", "infinity"]
        ports:
        - containerPort: 80
  2. Setelah Anda membuat Deployment, informasi pod ditampilkan seperti yang ditunjukkan pada gambar berikut:

    image