Cloud Assistant memungkinkan Anda menjalankan perintah langsung di dalam kontainer Kubernetes pada Instance ECS Linux tanpa harus login ke instans atau menggunakan jump server. Saat memanggil RunCommand atau InvokeCommand, tentukan ContainerId atau ContainerName.
Prasyarat
-
Instans berada dalam status Running.
-
Cloud Assistant Agent versi 2.2.3.344 atau lebih baru telah diinstal pada instans.
Batasan
-
Cloud Assistant hanya mendukung kontainer Kubernetes yang dikelola oleh CRI dan berjalan di atas Docker, containerd, atau CRI-O.
-
CRI menerapkan batasan berikut saat Anda menjalankan perintah di dalam kontainer.
Batasan
Workaround
Hanya pengguna default kontainer yang dapat menjalankan perintah.
-
Saat
ContainerIdatauContainerNameditentukan, parameterUsernameakan diabaikan. Perintah dijalankan sebagai pengguna default kontainer. -
Untuk beralih pengguna, jalankan
sudodi dalam kontainer. Pastikan gambar kontainer mendukung pergantian pengguna.
Perintah hanya dijalankan di direktori kerja default.
-
Saat
ContainerIdatauContainerNameditentukan, parameterWorkingDirakan diabaikan. -
Untuk mengubah direktori kerja, tambahkan perintah
cddi awal skrip.
Hanya skrip shell yang didukung. Baris shebang seperti
#!/usr/bin/pythontidak dikenali.-
Saat
ContainerIdatauContainerNameditentukan, skrip dijalankan dengan/bin/shdi dalam kontainer. Direktif shebang#!diabaikan. -
Untuk menjalankan skrip non-shell, panggil interpreter secara langsung. Contohnya, tambahkan
/usr/bin/python -c 'import sys; print(sys.version_info)'untuk memanggil interpreter Python.
-
Prosedur
-
Dapatkan ID dan nama kontainer Kubernetes.
Metode 1: Gunakan kubectl untuk mendapatkan ID dan nama kontainer
Jalankan
kubectl --namespace <namespace yang ditentukan> describe pod <pod yang ditentukan>untuk melihatContainerIdsuatu kontainer, atau kueriKubernetes apiserveruntuk mendapatkan ID dan nama kontainer.-
Sambungkan ke instans.
Lihat Menghubungkan ke instans Linux menggunakan kata sandi atau kunci.
-
Kueri ID kontainer:
kubectl --namespace <namespace yang ditentukan> describe pod <pod yang ditentukan>Pada contoh ini, namespace adalah kube-system dan pod adalah kube-proxy-h4slq. Contoh output:
[test@localhost ~]# kubectl --namespace kube-system describe pod kube-proxy-h4slq Name: kube-proxy-h4slq Namespace: kube-system Priority: 2000001000 Priority Class Name: system-node-critical Node: master1/192.168.1.11 Start Time: Thu, 11 Aug 2022 16:33:04 +0800 Labels: controller-revision-hash=9c5d7**** k8s-app=kube-proxy pod-template-generation=1 Annotations: <none> Status: Running IP: 192.168.1.11 IPs: IP: 192.168.1.11 Controlled By: DaemonSet/kube-proxy Containers: kube-proxy: Container ID: docker://fe17ab0409739e63f526aed7c79e87989e90d19f0429******************** Image: k8s.gcr.io/kube-proxy:v1.23.9 Image ID: docker://sha256:9e6a540eeeb62a64450dad488760cc3769b23d19fc21******************** Port: <none> Host Port: <none> Command: /usr/local/bin/kube-proxy --config=/var/lib/kube-proxy/config.conf --hostname-override=$(NODE_NAME) State: Running Started: Thu, 11 Aug 2022 16:33:06 +0800 Ready: True Restart Count: 0 Environment: NODE_NAME: (v1:spec.nodeName) Mounts: /lib/modules from lib-modules (ro) /run/xtables.lock from xtables-lock (rw) /var/lib/kube-proxy from kube-proxy (rw) /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-69g97 (ro)Pada bagian
Containers,Container IDdari kontainerkube-proxyadalahdocker://fe17ab0409739e63f526aed7c79e87989e90d19f0429********************. Ini menunjukkan runtime Docker dengan ID kontainerfe17ab0409739e63f526aed7c79e87989e90d19f0429********************. Nama kontainer yang dikelola CRI adalah kube-proxy. -
(Opsional) Lihat jenis dan versi runtime kontainer pada setiap node:
kubectl get nodes -o wideContoh output:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME node1 Ready <none> 17h v1.23.6 192.168.1.101 <none> Ubuntu 20.04.4 LTS 5.4.0-123-generic containerd://1.6.7 node2 Ready <none> 17h v1.23.6 192.168.1.102 <none> openSUSE Leap 15.4 5.14.21-150400.24.11-default cri-o://1.22.0 master1 Ready control-plane,master 18h v1.23.6 192.168.1.11 <none> CentOS Linux 7 (Core) 3.10.0-1160.71.1.el7.x86_64 docker://20.10.17 node3 Ready <none> 17h v1.23.6 192.168.1.103 <none> Debian GNU/Linux 11 (bullseye) 5.10.0-16-amd64 docker://20.10.17Kolom
CONTAINER-RUNTIMEmenampilkan runtime kontainer pada setiap node.
Metode 2: Gunakan Cloud Assistant Agent untuk mendapatkan ID dan nama kontainer
Cloud Assistant Agent pada instans Linux dapat mencantumkan kontainer Kubernetes yang dikelola CRI yang berjalan di Docker, containerd, atau CRI-O tanpa memerlukan kubectl.
Subperintah
list-containersmencantumkan kontainer pada instans. Contoh:-
Jalankan
aliyun-service list-containers --source cri.Parameter
--source crihanya mencantumkan kontainer berjalan yang dikelola CRI. Contoh output:[test@localhost ~]# aliyun-service list-containers --source cri Container Id Container Name Pod Name Runtime State Data Source 4f14883f30580007b2b386be16c743048d7b7b6a6522******************** etcd etcd-izbp199sm5j54********** docker RUNNING CRI 60775315aa50765de7332764322f7697ded2783e4860******************** kube-apiserver kube-apiserver-izbp199sm5j54********** docker RUNNING CRI 8d8dd01f09f451109285a0094eef0c144bdfdef6913e******************** coredns coredns-64897********** docker RUNNING CRI aee068814a7b10419186bb944832e65df2a8b3cab32b******************** kube-scheduler kube-scheduler-izbp199sm5j54********** docker RUNNING CRI b06609d4246be717c324b366d4e6c392fcf226ecbc4b******************** kube-flannel kube-flanne********** docker RUNNING CRI c0992c3401ad52b3fce105ce5188026f28db7d5fe202******************** kube-controller-manager kube-controller-manager-izbp199sm5j54********** docker RUNNING CRI d1add169bb596f53d31030f84d69e494e7b23135acd2******************** coredns coredns-64897********** docker RUNNING CRI fe17ab0409739e63f526aed7c79e87989e90d19f0429******************** kube-proxy kube-proxy-***** docker RUNNING CRIGunakan nilai
Container IddanContainer Nameuntuk parameterContainerIddanContainerName. KolomPod Namemenampilkan pod Kubernetes yang sesuai. -
Jalankan
aliyun-service list-containers --source cri --all.Parameter
--allmenyertakan kontainer dalam semua status (termasuk exited). Contoh output:[test@localhost ~]# aliyun-service list-containers --source cri --all Container Id Container Name Pod Name Runtime State Data Source 240246ecbb7b4bfc3e0fd1bad51a76d43603c9cdee6a******************** install-cni kube-flannel-ds-***** docker EXITED CRI 4f14883f30580007b2b386be16c743048d7b7b6a6522******************** etcd etcd-izbp199sm5j************ docker RUNNING CRI 60775315aa50765de7332764322f7697ded2783e4860******************** kube-apiserver kube-apiserver-izbp199sm5j************ docker RUNNING CRI 8d8dd01f09f451109285a0094eef0c144bdfdef6913e******************** coredns coredns-64897985d-8qz25 docker RUNNING CRI aee068814a7b10419186bb944832e65df2a8b3cab32b******************** kube-scheduler kube-scheduler-izbp199sm5j************ docker RUNNING CRI b06609d4246be717c324b366d4e6c392fcf226ecbc4b******************** kube-flannel kube-flannel-ds-***** docker RUNNING CRI bdf9a2aff47a6858897d5c734c481535f7bb70321c8b******************** install-cni-plugin kube-flannel-ds-***** docker EXITED CRI c0992c3401ad52b3fce105ce5188026f28db7d5fe202******************** kube-controller-manager kube-controller-manager-izbp199sm53************ docker RUNNING CRI d1add169bb596f53d31030f84d69e494e7b23135acd2******************** coredns coredns-*************** docker RUNNING CRI fe17ab0409739e63f526aed7c79e87989e90d19f0429******************** kube-proxy kube-proxy-***** docker RUNNING CRI -
Jalankan
aliyun-service list-containers.Tanpa
--source, perintah ini mencantumkan kontainer yang dikelola CRI maupun kontainer Docker non-CRI. Contoh output:PentingPerintah hanya dapat dijalankan di kontainer yang dikelola CRI. Kontainer Docker non-CRI tidak didukung.
[test@localhost ~]# aliyun-service list-containers Container Id Container Name Pod Name Runtime State Data Source 4f14883f30580007b2b386be16c743048d7b7b6a6522******************** etcd etcd-izbp199sm5j************ docker RUNNING CRI 60775315aa50765de7332764322f7697ded2783e4860******************** kube-apiserver kube-apiserver-izbp199sm5j************ docker RUNNING CRI 8d8dd01f09f451109285a0094eef0c144bdfdef6913e******************** coredns coredns-648************ docker RUNNING CRI aee068814a7b10419186bb944832e65df2a8b3cab32b******************** kube-scheduler kube-scheduler-izbp199sm5j************ docker RUNNING CRI b06609d4246be717c324b366d4e6c392fcf226ecbc4b******************** kube-flannel kube-flannel-******** docker RUNNING CRI c0992c3401ad52b3fce105ce5188026f28db7d5fe202******************** kube-controller-manager kube-controller-manager-izbp199sm5j************ docker RUNNING CRI d1add169bb596f53d31030f84d69e494e7b23135acd2******************** coredns coredns-648************ docker RUNNING CRI fe17ab0409739e63f526aed7c79e87989e90d19f0429******************** kube-proxy kube-proxy-***** docker RUNNING CRI b6864279148b3cef6e72c983f7ffa041dfe7ab5e2c57******************** k8s_POD_coredns-64897985d-8qz25_kube-system_5422418e****************************** docker RUNNING docker fa99eaa067927e47f4e30795ad45065383efc8669687******************** k8s_POD_coredns-64897985d-cxvdq_kube-system_f59766f0****************************** docker RUNNING docker 3236c0f21b4a8f15fadeaaf813afb21d59889163056c******************** k8s_POD_kube-flannel-ds-qwf9p_kube-flannel_66c0205******************************* docker RUNNING docker 016bd6794042da8d4eb3b8f5f90594bad104b360670d******************** k8s_POD_kube-proxy-h4slq_kube-system_e2ce593******************************* docker RUNNING docker ae30393668288624472d1a594be2cb45996798d6b750******************** k8s_POD_kube-scheduler-izbp199sm5j54yl36as4h9z_kube-system_f77f****************************** docker RUNNING docker c2ced280d972f54aab32fda8de1f74f8799237cc51e2******************** k8s_POD_kube-controller-manager-izbp199sm5j54yl36as4h9z_kube-system_5c6******************************* docker RUNNING docker c92bce6b84d133b807d0310d215423870101d730ede2******************** k8s_POD_kube-apiserver-izbp199sm5j54yl36as4h9z_kube-system_7f6f****************************** docker RUNNING docker 4a5fe93977ad8eb945889cffe29f9d99d1540e870e69******************** k8s_POD_etcd-izbp199sm5j54yl36as4h9z_kube-system_4a85****************************** docker RUNNING docker a87c87c7dc162e99749cb78f8f270765e90f3df921d2******************** modest_bose docker RUNNING dockerNilai kolom
Data Source:-
CRI: Kontainer Kubernetes yang dikelola CRI. -
docker: Kontainer Docker non-CRI.
-
-
Jalankan
aliyun-service list-containers --source cri --json.Parameter
--jsonmenghasilkan informasi kontainer dalam format JSON. Anda dapat menggunakan Cloud Assistant untuk mengkueri dan mengurai data kontainer guna otomatisasi O&M.[test@localhost ~]# aliyun-service list-containers --source cri --json [{"id":"4f14883f30580007b2b386be16c743048d7b7b6a6522********************","name":"etcd","podId":"4a5fe93977ad8eb945889cffe29f9d99d1540e870e6*********************","podName":"etcd-izbp199sm5j54**********","runtimeName":"docker","state":"RUNNING","dataSource":"CRI"},{"id":"60775315aa50765de7332764322f7697ded2783e4860********************","name":"kube-apiserver","podId":"c92bce6b84d133b807d0310d215423870101d730ede2********************","podName":"kube-apiserver-izbp199sm5j54**********","runtimeName":"docker","state":"RUNNING","dataSource":"CRI"},{"id":"8d8dd01f09f451109285a0094eef0c144bdfdef6913e********************","name":"coredns","podId":"b6864279148b3cef6e72c983f7ffa041dfe7ab5e2c57********************","podName":"coredns-64897**********","runtimeName":"docker","state":"RUNNING","dataSource":"CRI"},{"id":"aee068814a7b10419186bb944832e65df2a8b3cab32b********************","name":"kube-scheduler","podId":"ae30393668288624472d1a594be2cb45996798d6b750********************","podName":"kube-scheduler-izbp199sm5j54**********","runtimeName":"docker","state":"RUNNING","dataSource":"CRI"},{"id":"b06609d4246be717c324b366d4e6c392fcf226ecbc4b********************","name":"kube-flannel","podId":"3236c0f21b4a8f15fadeaaf813afb21d59889163056c********************","podName":"kube-flannel-ds-*****","runtimeName":"docker","state":"RUNNING","dataSource":"CRI"},{"id":"c0992c3401ad52b3fce105ce5188026f28db7d5fe202********************","name":"kube-controller-manager","podId":"c2ced280d972f54aab32fda8de1f74f8799237cc51e2********************","podName":"kube-controller-manager-izbp199sm5j54**********","runtimeName":"docker","state":"RUNNING","dataSource":"CRI"},{"id":"d1add169bb596f53d31030f84d69e494e7b23135acd2********************","name":"coredns","podId":"fa99eaa067927e47f4e30795ad45065383efc8669687********************","podName":"coredns-64897**********","runtimeName":"docker","state":"RUNNING","dataSource":"CRI"},{"id":"fe17ab0409739e63f526aed7c79e87989e90d19f0429********************","name":"kube-proxy","podId":"016bd6794042da8d4eb3b8f5f90594bad104b360670d********************","podName":"kube-proxy-*****","runtimeName":"docker","state":"RUNNING","dataSource":"CRI"}]
-
-
Jalankan perintah di dalam kontainer dengan Cloud Assistant.
Anda hanya dapat menjalankan perintah di kontainer tertentu dengan memanggil operasi API. Saat memanggil RunCommand atau InvokeCommand, tentukan
ContainerId,ContainerName, atau keduanya.CatatanUntuk batasan perintah Cloud Assistant, lihat bagian "Prasyarat" dan "Informasi latar belakang" dalam Use the immediate execution feature.
Hasil
Panggil DescribeInvocations atau DescribeInvocationResults untuk mengkueri status eksekusi atau hasilnya. Tanggapan mencakup nilai ContainerId dan ContainerName.