ํด๋น ๋ฌธ์์ ์ฟ ๋ฒ๋คํฐ์ค ๋ฒ์ : v1.31
Kubernetes v1.31 ๋ฌธ์๋ ๋ ์ด์ ์ ๊ทน์ ์ผ๋ก ๊ด๋ฆฌ๋์ง ์์. ํ์ฌ ๋ณด๊ณ ์๋ ๋ฌธ์๋ ์ ์ ์ค๋ ์ท์. ์ต์ ๋ฌธ์๋ฅผ ์ํด์๋, ๋ค์์ ์ฐธ๊ณ . ์ต์ ๋ฒ์ .
๋์์ค์ธ ์ปจํ ์ด๋์ ์ ธ์ ์ ๊ทผํ๊ธฐ
์ด ํ์ด์ง๋ ๋์์ค์ธ ์ปจํ
์ด๋์ ์ ๊ทผํ๊ธฐ ์ํด kubectl exec
์ ์ฌ์ฉํ๋
๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช
ํ๋ค.
์์ํ๊ธฐ ์ ์
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๊ฐ ํ์ํ๊ณ , kubectl ์ปค๋งจ๋-๋ผ์ธ ํด์ด ํด๋ฌ์คํฐ์ ํต์ ํ ์ ์๋๋ก ์ค์ ๋์ด ์์ด์ผ ํ๋ค. ์ด ํํ ๋ฆฌ์ผ์ ์ปจํธ๋กค ํ๋ ์ธ ํธ์คํธ๊ฐ ์๋ ๋ ธ๋๊ฐ ์ ์ด๋ 2๊ฐ ํฌํจ๋ ํด๋ฌ์คํฐ์์ ์คํํ๋ ๊ฒ์ ์ถ์ฒํ๋ค. ๋ง์ฝ, ์์ง ํด๋ฌ์คํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋ค๋ฉด, minikube๋ฅผ ์ฌ์ฉํด์ ์์ฑํ๊ฑฐ๋ ๋ค์ ์ฟ ๋ฒ๋คํฐ์ค ํ๋ ์ด๊ทธ๋ผ์ด๋ ์ค ํ๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์ปจํ ์ด๋์ ์ ธ์ ์ ๊ทผํ๊ธฐ
์ด ์์์์๋ ํ๋์ ์ปจํ ์ด๋๋ฅผ ๊ฐ์ง ํ๋๋ฅผ ์์ฑํ ๊ฒ์ด๋ค. ์ด ์ปจํ ์ด๋๋ nginx ์ด๋ฏธ์ง๋ฅผ ์คํํ๋ค. ํด๋น ํ๋์ ๋ํ ์ค์ ํ์ผ์ ๋ค์๊ณผ ๊ฐ๋ค.
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
hostNetwork: true
dnsPolicy: Default
ํ๋๋ฅผ ์์ฑํ๋ค.
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 ๋ช ๋ น์ด ์ธ์์ ์ฌ์ฉํ๊ณ ์ ํ๋ ๋ช ๋ น์ด์ ์ธ์๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด์๋ ์ด์ค ๋์(--
)๋ฅผ ์ฌ์ฉํ ์ ์๋ค.์ ธ์ ์ ๊ทผํด์ ๋ค์์ฒ๋ผ ๋ฃจํธ ๋๋ ํ ๋ฆฌ๋ฅผ ํ์ธํด ๋ณผ ์ ์๋ค.
# Run this inside the container
ls /
์ ๊ทผํ ์ ธ์์ ๋ค๋ฅธ ๋ช ๋ น์ด๋ ํ๋ฒ ์คํํด ๋ณด์๋ผ. ๋ค์์ ์คํํด ๋ณผ ๋ช ๋ น์ ์์์ด๋ค.
# You can run these example commands inside the container
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์ ์ต์๋จ ํ์ด์ง ์์ฑํ๊ธฐ
์์์ ์์ฑํ ํ๋์ ๋ํ ์ค์ ์ ์ดํด๋ณด์๋ผ. ํ๋์๋
emptyDir
๋ณผ๋ฅจ์ด ์ฌ์ฉ๋์๊ณ , ์ด ์ปจํ
์ด๋๋ ํด๋น ๋ณผ๋ฅจ์
/usr/share/nginx/html
๊ฒฝ๋ก์ ๋ง์ดํธํ์๋ค.
์ ๊ทผํ ์
ธ ํ๊ฒฝ์์ /usr/share/nginx/html
๋๋ ํฐ๋ฆฌ์ index.html
ํ์ผ์
์์ฑํด ๋ณด์๋ผ.
# Run this inside the container
echo 'Hello shell demo' > /usr/share/nginx/html/index.html
์ ธ ํ๊ฒฝ์์ nginx ์๋ฒ์ GET ์์ฒญ์ ์๋ํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
# Run this in the shell inside your container
apt-get update
apt-get install curl
curl http://localhost/
์ถ๋ ฅ ๊ฒฐ๊ณผ๋ ์ฌ๋ฌ๋ถ์ด index.html
ํ์ผ์ ์์ฑํ ํ
์คํธ๋ฅผ ์ถ๋ ฅํ ๊ฒ์ด๋ค.
Hello shell demo
์
ธ ์ฌ์ฉ์ด ๋ชจ๋ ๋๋ฌ๋ค๋ฉด exit
์ ์
๋ ฅํด ์ข
๋ฃํ๋ผ.
exit # To quit the shell in the container
์ปจํ ์ด๋์์ ๊ฐ๋ณ ๋ช ๋ น์ด ์คํํ๊ธฐ
์ ธ์ด ์๋ ์ผ๋ฐ์ ์ธ ์ปค๋งจ๋ ํ๊ฒฝ์์ ๋ค์์ฒ๋ผ ๋์์ค์ธ ์ปจํ ์ด๋์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ถ๋ ฅํ ์ ์๋ค.
kubectl exec shell-demo env
๋ค๋ฅธ ๋ช ๋ น์ด๋ ํ๋ฒ ์คํํด ๋ณด์๋ผ. ๋ค์์ ์คํํด ๋ณผ ๋ช ๋ น์ ์์์ด๋ค.
kubectl exec shell-demo -- ps aux
kubectl exec shell-demo -- ls /
kubectl exec shell-demo -- cat /proc/1/mounts
ํ๋์ ํ ๊ฐ ์ด์์ ์ปจํ ์ด๋๊ฐ ์์ ๊ฒฝ์ฐ ์ ธ์ ์ ๊ทผํ๊ธฐ
๋ง์ผ ํ๋์ ํ ๊ฐ ์ด์์ ์ปจํ
์ด๋๊ฐ ์์ ๊ฒฝ์ฐ, kubectl exec
๋ช
๋ น์ด์
--container
ํน์ -c
์ต์
์ ์ฌ์ฉํด์ ์ปจํ
์ด๋๋ฅผ ์ง์ ํ๋ผ. ์๋ฅผ ๋ค์ด,
์ฌ๋ฌ๋ถ์ด my-pod๋ผ๋ ์ด๋ฆ์ ํ๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด์. ์ด ํ๋์๋ main-app ๊ณผ
helper-app ์ด๋ผ๋ ์ด๋ฆ์ ๋ ์ปจํ
์ด๋๊ฐ ์๋ค. ๋ค์ ๋ช
๋ น์ด๋ main-app
์ปจํ
์ด๋์ ๋ํ ์
ธ์ ์ ๊ทผํ ๊ฒ์ด๋ค.
kubectl exec -i -t my-pod --container main-app -- /bin/bash
์ฐธ๊ณ :
์ถ์ฝํ ์ต์ ์ธ-i
์ -t
๋ ๊ฐ๊ฐ --stdin
์ --tty
์ต์
์ ๋์๋๋ค.๋ค์ ๋ด์ฉ
- kubectl exec๋ฅผ ์ฐธ๊ณ ํ๋ค.