Laman ini menunjukkan bagaimana cara menggunakan kubectl exec
untuk mendapatkan shell untuk masuk ke dalam Container yang sedang berjalan.
Kamu harus memiliki klaster Kubernetes, dan perangkat baris perintah kubectl juga harus dikonfigurasikan untuk berkomunikasi dengan klastermu. Jika kamu belum memiliki klaster, kamu dapat membuatnya dengan menggunakan minikube, atau kamu juga dapat menggunakan salah satu dari tempat mencoba Kubernetes berikut ini:
Untuk melihat versi, tekan kubectl version
.
Dalam latihan ini, kamu perlu membuat Pod yang hanya memiliki satu Container saja. Container tersebut menjalankan image nginx. Berikut ini adalah berkas konfigurasi untuk Pod tersebut:
apiVersion:v1kind:Podmetadata:name:shell-demospec:volumes:- name:shared-dataemptyDir:{}containers:- name:nginximage:nginxvolumeMounts:- name:shared-datamountPath:/usr/share/nginx/htmlhostNetwork:truednsPolicy:Default
Buatlah Pod tersebut:
kubectl apply -f https://k8s.io/examples/application/shell-demo.yaml
Pastikan bahwa Container dalam Pod berjalan:
kubectl get pod shell-demo
Dapatkan shell untuk masuk ke dalam Container:
kubectl exec -it shell-demo -- /bin/bash
Di dalam shell kamu, perlihatkan isi dari direktori root:
root@shell-demo:/# ls /
Di dalam shell kamu, cobalah perintah-perintah yang lainnya. Berikut beberapa contohnya:
root@shell-demo:/# ls / root@shell-demo:/# cat /proc/mounts root@shell-demo:/# cat /proc/1/maps root@shell-demo:/# apt-get update root@shell-demo:/# apt-get install -y tcpdump root@shell-demo:/# tcpdump root@shell-demo:/# apt-get install -y lsof root@shell-demo:/# lsof root@shell-demo:/# apt-get install -y procps root@shell-demo:/# ps aux root@shell-demo:/# ps aux | grep nginx
Lihat kembali berkas konfigurasi untuk Pod kamu. Pod memiliki volume emptyDir
, dan Container melakukan pemasangan (mounting) untuk volume tersebut pada /usr/share/nginx/html
.
Pada shell kamu, buatlah berkas index.html
dalam direktori /usr/share/nginx/html
:
root@shell-demo:/# echo Hello shell demo > /usr/share/nginx/html/index.html
Pada shell kamu, kirimkan sebuah permintaan (request) GET ke server nginx.
root@shell-demo:/# apt-get update root@shell-demo:/# apt-get install curl root@shell-demo:/# curl localhost
Keluarannya akan menunjukkan teks yang kamu tulis pada berkas index.html
.
Hello shell demo
Setelah kamu selesai dengan shell kamu, ketiklah exit
.
Pada jendela (window) perintah biasa, bukan pada shell kamu di dalam Container, lihatlah daftar variabel lingkungan (environment variable) pada Container yang sedang berjalan:
kubectl exec shell-demo -- env
Cobalah dengan menjalankan perintah lainnya. Berikut beberapa contohnya:
kubectl exec shell-demo ps aux kubectl exec shell-demo ls / kubectl exec shell-demo cat /proc/1/mounts
Jika sebuah Pod memiliki lebih dari satu Container, gunakanlah --container
atau -c
untuk menentukan Container yang dimaksud pada perintah kubectl exec
. Sebagai contoh, misalkan kamu memiliki Pod yang bernama my-pod, dan Pod tersebut memiliki dua Container yang bernama main-app dan helper-app. Perintah berikut ini akan membuka sebuah shell ke Container dengan nama main-app.
kubectl exec -it my-pod --container main-app -- /bin/bash