AMC adalah plug-in kubectl untuk Distributed Cloud Container Platform for Kubernetes (ACK One). Plug-in ini memperluas fungsionalitas kubectl sehingga memungkinkan pengelolaan lintas beberapa kluster yang dikelola oleh instans Fleet, sehingga Anda dapat melakukan kueri dan memeriksa resource di kluster mana pun yang dikelola tanpa perlu mengganti file kubeconfig.
Dengan AMC, Anda dapat:
-
Menggunakan AMC dengan cara yang sama seperti menggunakan kubectl
-
Terhubung ke instans Fleet dan mengelola Deployments, Services, dan Ingresses di kluster mana pun yang dikelolanya
-
Menanyakan status resource Kubernetes (Pods, Services) di kluster tertentu atau di semua kluster yang dikelola secara bersamaan
-
Menampilkan log tugas untuk beban kerja yang dijadwalkan ke kluster yang dikelola
-
Memeriksa topologi lengkap dan status aplikasi beserta resource terkaitnya di seluruh kluster yang dikelola
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
Instans ACK One Fleet dengan setidaknya satu kluster terkait
-
File kubeconfig dari instans Fleet
-
wget(Linux) ataucurl(macOS) yang telah diinstal
Instal AMC
Unduh binari AMC sesuai platform dan arsitektur Anda, jadikan dapat dieksekusi, lalu pindahkan ke /usr/local/bin.
Linux
| Architecture | Command |
|---|---|
| amd64 | wget http://ack-one.oss-cn-hangzhou.aliyuncs.com/kubectl-amc-linux-amd64 && chmod +x kubectl-amc-linux-amd64 && mv kubectl-amc-linux-amd64 /usr/local/bin/kubectl-amc |
| arm64 | wget http://ack-one.oss-cn-hangzhou.aliyuncs.com/kubectl-amc-linux-arm64 && chmod +x kubectl-amc-linux-arm64 && mv kubectl-amc-linux-arm64 /usr/local/bin/kubectl-amc |
macOS
| Architecture | Command |
|---|---|
| amd64 | curl -LO http://ack-one.oss-cn-hangzhou.aliyuncs.com/kubectl-amc-mac-amd64 && chmod +x kubectl-amc-mac-amd64 && mv kubectl-amc-mac-amd64 /usr/local/bin/kubectl-amc |
| arm64 | curl -LO http://ack-one.oss-cn-hangzhou.aliyuncs.com/kubectl-amc-mac-arm64 && chmod +x kubectl-amc-mac-arm64 && mv kubectl-amc-mac-arm64 /usr/local/bin/kubectl-amc |
Verifikasi instalasi
Jalankan kubectl amc -h untuk memastikan AMC telah terinstal dan melihat output bantuannya:
kubectl amc -h
Daftar kluster yang dikelola dan aliasnya
Jalankan kubectl amc get managedcluster untuk menampilkan semua kluster yang terkait dengan instans Fleet beserta aliasnya:
kubectl amc get managedcluster
Output yang diharapkan:
Name Alias HubAccepted
managedcluster-c**** cluster1 true
managedcluster-c**** cluster2 true
managedcluster-c**** cluster3 true
Kluster yang sebelumnya terkait dengan ACK One akan menampilkan none pada kolom Alias.
Tetapkan alias kluster
Untuk menetapkan alias pada kluster yang terkait:
kubectl annotate managedcluster <managedcluster name> ackone.aliyun.com/cluster-alias=<cluster-alias>
Untuk memperbarui alias yang sudah ada, tambahkan --overwrite:
kubectl annotate managedcluster <managedcluster name> ackone.aliyun.com/cluster-alias=<cluster-alias> --overwrite
Lakukan kueri resource di kluster yang dikelola
Gunakan flag -m untuk menargetkan kluster tertentu berdasarkan nama, atau gunakan -m all untuk melakukan kueri ke semua kluster terkait sekaligus.
| Flag | Description |
|---|---|
-n <namespace> |
Namespace yang akan dikueri |
-m <cluster-name> |
Nama kluster yang dikelola sebagai target; gunakan all untuk semua kluster |
Lakukan kueri pada kluster tertentu
kubectl amc get deployment -n demo -m managedcluster-c****
Ganti managedcluster-c**** dengan nama kluster yang ingin Anda periksa.
Output yang diharapkan:
Run on ManagedCluster managedcluster-c**** (cluster-alias-****)
NAME READY UP-TO-DATE AVAILABLE AGE
web-demo 1/1 1 1 42h
Query all related clusters
kubectl amc get deployment -n demo -m all
Output yang diharapkan:
Run on ManagedCluster managedcluster-c**** (cluster1)
NAME READY UP-TO-DATE AVAILABLE AGE
web-demo 1/1 1 1 42h
Run on ManagedCluster managedcluster-c**** (cluster2)
NAME READY UP-TO-DATE AVAILABLE AGE
web-demo 3/3 3 3 42h
Run on ManagedCluster managedcluster-c**** (cluster3)
NAME READY UP-TO-DATE AVAILABLE AGE
web-demo 5/5 5 5 42h
Periksa topologi aplikasi
Gunakan appstatus dengan --tree dan --detail untuk menampilkan topologi lengkap suatu aplikasi dan status semua resource terkaitnya di seluruh kluster yang dikelola.
| Flag | Description |
|---|---|
--tree |
Menampilkan resource dalam struktur pohon yang menunjukkan hubungan induk-anak |
--detail |
Menyertakan informasi status detail untuk setiap resource |
kubectl amc appstatus demo -n demo --tree --detail
Output yang diharapkan:
CLUSTER NAMESPACE RESOURCE STATUS APPLY_TIME DETAIL
managedcluster-c****─── demo ─┬─ Deployment/demo updated 2022-05-27 06:48:13 Ready: 4/4 Up-to-date: 4 Available: 4 Age: 8m2s
├─ Ingress/demo updated 2022-05-27 06:48:13 Class: <none> Hosts: app.demo.example.com Address:
│ Ports: 80 Age: 8m2s
├─ ConfigMap/demo updated 2022-05-27 14:48:13 Data: 4 Age: 8m2s
└─ Service/demo updated 2022-05-27 06:48:13 Type: ClusterIP Cluster-IP: 192.168.9.178
External-IP: <none> Port(s): 82/TCP Age: 8m2s
managedcluster-c****─── demo ─┬─ Deployment/demo updated 2022-05-27 06:48:16 Ready: 2/2 Up-to-date: 2 Available: 2 Age: 7m59s
├─ Ingress/demo updated 2022-05-27 06:48:15 Class: <none> Hosts: app.demo.example.com Address:
│ Ports: 80 Age: 7m59s
├─ ConfigMap/demo updated 2022-05-27 14:48:17 Data: 4 Age: 7m58s
└─ Service/demo updated 2022-05-27 06:48:15 Type: ClusterIP Cluster-IP: 192.168.199.111
External-IP: <none> Port(s): 82/TCP Age: 7m59s