çŸåšè¡šç€ºããŠããã®ã¯ã次ã®ããŒãžã§ã³åãã®ããã¥ã¡ã³ãã§ããKubernetesããŒãžã§ã³: v1.33
Kubernetes v1.33 ã®ããã¥ã¡ã³ãã¯ç©æ¥µçã«ã¡ã³ããã³ã¹ãããŠããŸãããçŸåšè¡šç€ºãããŠããããŒãžã§ã³ã¯ã¹ãããã·ã§ããã§ããææ°ã®ããã¥ã¡ã³ãã¯ãã¡ãã§ã: ææ°ããŒãžã§ã³
å®è¡äžã®ã³ã³ãããžã®ã·ã§ã«ãååŸãã
ãã®ããŒãžã¯kubectl exec
ã䜿çšããŠå®è¡äžã®ã³ã³ãããžã®ã·ã§ã«ãååŸããæ¹æ³ã説æããŸãã
å§ããåã«
Kubernetesã¯ã©ã¹ã¿ãŒãå¿ èŠããã€ãã®ã¯ã©ã¹ã¿ãŒãšéä¿¡ããããã«kubectlã³ãã³ãã©ã€ã³ããŒã«ãèšå®ãããŠããå¿ èŠããããŸãã ãã®ãã¥ãŒããªã¢ã«ã¯ãã³ã³ãããŒã«ãã¬ãŒã³ã®ãã¹ããšããŠåäœããŠããªãå°ãªããšã2ã€ã®ããŒããæã€ã¯ã©ã¹ã¿ãŒã§å®è¡ããããšãããããããŸãã ãŸã ã¯ã©ã¹ã¿ãŒããªãå Žåãminikubeã䜿ã£ãŠäœæãããã 以äžã®ããããã®Kubernetesãã¬ã€ã°ã©ãŠã³ãã䜿çšã§ããŸã:
ã³ã³ãããžã®ã·ã§ã«ã®ååŸ
ãã®ãšã¯ãµãµã€ãºã§ã¯ã1ã€ã®ã³ã³ãããæã€PodãäœæããŸãã ã³ã³ããã¯nginxã®ã€ã¡ãŒãžãå®è¡ããŸãã以äžããã®Podã®èšå®ãã¡ã€ã«ã§ã:
apiVersion: v1
kind: Pod
metadata:
name: shell-demo
spec:
volumes:
- name: shared-data
emptyDir: {}
containers:
- name: nginx
image: nginx
volumeMounts:
- name: shared-data
mountPath: /usr/share/nginx/html
PodãäœæããŸã:
kubectl apply -f https://k8s.io/examples/application/shell-demo.yaml
ã³ã³ãããå®è¡äžã§ããããšã確èªããŸã:
kubectl get pod shell-demo
å®è¡äžã®ã³ã³ãããžã®ã·ã§ã«ãååŸããŸã:
kubectl exec --stdin --tty shell-demo -- /bin/bash
åè:
ããã«ããã·ã¥(--
)ã®ã»ãã¬ãŒã¿ãŒã¯ãã³ãã³ãã«æž¡ãåŒæ°ãškubectlã®åŒæ°ãåé¢ããŸããã·ã§ã«å ã§ãã«ãŒããã£ã¬ã¯ããªãŒã®ãã¡ã€ã«äžèЧã衚瀺ããŸã:
# ãã®ã³ãã³ããã³ã³ããå
ã§å®è¡ããŸã
ls /
ã·ã§ã«å ã§ãä»ã®ã³ãã³ãã詊ããŸãããã以äžãããã€ãã®äŸã§ã:
# ãããã®ãµã³ãã«ã³ãã³ããã³ã³ããå
ã§å®è¡ããããšãã§ããŸã
ls /
cat /proc/mounts
cat /proc/1/maps
apt-get update
apt-get install -y tcpdump
tcpdump
apt-get install -y lsof
lsof
apt-get install -y procps
ps aux
ps aux | grep nginx
nginxã®ã«ãŒãããŒãžãžã®æžã蟌ã¿
Podã®èšå®ãã¡ã€ã«ãå床確èªããŸããPodã¯emptyDir
ããªã¥ãŒã ãæã¡ã
ã³ã³ããã¯/usr/share/nginx/html
ããªã¥ãŒã ãããŠã³ãããŸãã
ã·ã§ã«å
ã§ã/usr/share/nginx/html
ãã£ã¬ã¯ããªã«index.html
ãäœæããŸãã
# ãã®ã³ãã³ããã³ã³ããå
ã§å®è¡ããŸã
echo 'Hello shell demo' > /usr/share/nginx/html/index.html
ã·ã§ã«å ã§ãnginxãµãŒããŒã«GETãªã¯ãšã¹ããéä¿¡ããŸã:
# ãããã®ã³ãã³ããã³ã³ããå
ã®ã·ã§ã«ã§å®è¡ããŸã
apt-get update
apt-get install curl
curl http://localhost/
åºåã«index.html
ãã¡ã€ã«ã«æžã蟌ãã æååã衚瀺ãããŸã:
Hello shell demo
ã·ã§ã«ãçµäºããå Žåãexit
ãå
¥åããŸãã
exit # ã³ã³ããå
ã®ã·ã§ã«ãçµäºãã
ã³ã³ããå ã§ã®åã³ãã³ãã®å®è¡
ã·ã§ã«ã§ã¯ãªãéåžžã®ã³ãã³ããŠã€ã³ããŠå ã§ãå®è¡äžã®ã³ã³ããã®ç°å¢å€æ°ã®äžèЧã衚瀺ããŸã:
kubectl exec shell-demo -- env
ä»ã®ã³ãã³ãã詊ããŸãã以äžãããã€ãã®äŸã§ã:
kubectl exec shell-demo -- ps aux
kubectl exec shell-demo -- ls /
kubectl exec shell-demo -- cat /proc/1/mounts
Podã1ã€ä»¥äžã®ã³ã³ãããæã€å Žåã«ã·ã§ã«ãéã
Podã1ã€ä»¥äžã®ã³ã³ãããæã€å Žåã--container
ã-c
ã䜿çšããŠãkubectl exec
ã³ãã³ãå
ã§ã³ã³ãããæå®ããŸãã
äŸãã°ãmy-podãšããååã®Podãããããã®Podã main-app ãš helper-app ãšãã2ã€ã®ã³ã³ãããæã€ãšããŸãã
以äžã®ã³ãã³ã㯠main-app ã®ã³ã³ãããžã®ã·ã§ã«ãéããŸãã
kubectl exec -i -t my-pod --container main-app -- /bin/bash
åè:
ã·ã§ãŒããªãã·ã§ã³ã®-i
ãš-t
ã¯ããã³ã°ãªãã·ã§ã³ã®--stdin
ãš--tty
ãšåæ§ã§ããæ¬¡ã®é ç®
- kubectl execã«ã€ããŠèªã