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 yamlContoh 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-systemGunakan Konsol ACS
Masuk ke Konsol ACS.
Di halaman Clusters, klik nama klaster untuk membuka halaman pengelolaan klaster.
Di panel navigasi kiri halaman manajemen kluster, pilih Configurations > ConfigMaps.
Pilih kube-system dari daftar drop-down Namespace.
Temukan acs-profile dan klik Edit YAML.
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-profilePerbarui 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 |
|
| Grup keamanan tempat pod ACS termasuk. |
|
| ID vSwitches yang terkait dengan pod ACS. Pisahkan ID vSwitch dengan koma (,). |
|
| ID VPC tempat pod ACS diterapkan. |
|
| Menentukan apakah akan menggunakan PrivateZone untuk menyelesaikan nama domain. |
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 |
| Nama pemilih. Parameter ini wajib. |
| Filter pod menggunakan label namespace. |
| Aturan pencocokan dijelaskan dalam format |
| Jelaskan aturan pencocokan menggunakan daftar persyaratan pemilih pod. Operator yang valid termasuk |
| Filter pod menggunakan label pod. |
| Aturan pencocokan dijelaskan dalam format |
| Jelaskan aturan pencocokan menggunakan daftar persyaratan pemilih pod. Operator yang valid termasuk |
| 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.
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
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: 80Setelah Anda membuat Deployment, informasi pod ditampilkan seperti yang ditunjukkan pada gambar berikut:
