[k8s] crictl
crictl์ k8s์์ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ปจํ
์ด๋ ๋ฐํ์ ์ ์ด ๋๊ตฌ๋ค.
์ด๊ฑธ ์ฌ์ฉํ๋ฉด ์กฐ๊ธ ๋ ๋ฎ์ ์์ค์์ pod์ ์ปจํ
์ด๋ ๋ฑ์ ์กฐ์ํ๊ฑฐ๋ ๋๋ฒ๊น
ํ ์ ์๋ค.
k8s ํด๋ฌ์คํฐ๋ฅผ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌ์ฑํ๋ค๋ฉด ์ถ๊ฐ ์ค์ ์์ด๋ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ค.

๋ฒ์ ๊ณผ ์ํ ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ด ํ์ธํ ์ ์๋ค.
์ปจํ
์ด๋ ๋ฐํ์์ cri-o๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค.
์ด์ธ์๋ docker์ containerd๊ฐ ๋ค์ด๊ฐ ์ ์์ ๊ฒ์ด๋ค.
ํ์ฌ ์ํ๋ค. ๋ค ์ค๋น์๋ฃ๋ค.
์ด๋ฏธ์ง
crictl์ k8s์ ์กฐ๊ธ ๋ ๋ฎ์ ์ธํฐํ์ด์ค์ผ ๋ฟ์ด๋ค.
์ฟ ๋ฒ์ ๋น์ทํ ํํ๋ก docker ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ฐ๊ฑฐ๋ ์กฐํํ๋ ๋ฑ ์ํธ์์ฉ์ ํ ์ ์๋ค.
sudo crictl pull nginx
์ด๋ ๊ฒ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ฐ์ ์ ์๊ณ
์ด๋ฏธ์ง ๋ชฉ๋ก๋ ๊ทธ๋ฅ ์กฐํํ ์ ์๋ค.
Pod
kubectl์ ์ฌ์ฉํด์ ๊ฐ๋จํ ๋จ์ผ ์๋ฒ์ฉ pod๋ฅผ ํ๋ฒ ๋์๋ณด๊ฒ ๋ค.
vi single-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: server-name
labels:
app: server-name
spec:
containers:
- name: server-name
image: myyrakle/node-server-for-test

๊ทธ๋ผ ์ด๋ ๊ฒ ์ ๋ฐ ๊ฒ์ธ๋ฐ
์ด๊ฒ์ crictl์ ํตํด์๋ ์กฐํํ๊ฑฐ๋ ๋ญ๊ฐ๋ฅผ ์ดํด๋ณผ ์๋ ์๋ค.
inspectp์ pod id๋ฅผ ๋ฃ์ผ๋ฉด pod์ ์์ธํ ์ ๋ณด๋ฅผ ์กฐํํ ์ ์๊ณ


์ปจํ ์ด๋์ ๋ฆฌ์คํธ์ ์ ps, ์ปจํ ์ด๋์ ์์ธ์ ๋ณด ์กฐํ๋ inspect๋ก ์ํํ ์ ์๋ค.

์ด๋ฏธ์ง๋ ์ข๋ ์ดํด๋ณด๋๊ฒ ๊ฐ๋ฅํ๋ค. inspecti๋ฅผ ์ฐ๋ฉด

์ปค๋งจ๋ ํ์คํ ๋ฆฌ ๊ฐ์ ๊ฒ๋ค๊น์ง๋ ํ์ธ ๊ฐ๋ฅํ๋ค.
crictl๋ก ์ง์ pod ๋์๋ณด๊ธฐ
k8s์์ pod๋ฅผ ๋์ธ๋๋ ๋ณดํต ๋จ์ผ yaml์ ๋ง๋ค์ด์ apply๋ก ๋ ๋ค ๋์๋ฒ๋ฆฌ๊ณค ํ๋๋ฐ, ์ฌ์ค ๋ด๋ถ์ ์ผ๋ก๋ ๊ฝค๋ ๊ท์ฐฎ์ ๋์์ ๊ฑฐ์น๋ค.
์ ๋ฆฌํ๋ฉด ๋๋ต ์ด๋ ๋ค.
- ๊ฒฉ๋ฆฌ๊ณต๊ฐ ๋ง๋ จ์ ์ํด Pod Sandbox๋ฅผ ์์ฑํ๋ค.
- Pod์ ์ปจํ ์ด๋๋ฅผ ๊ตฌ์ฑํ๊ณ ์์ฑํ๋ค.
- ์ปจํ ์ด๋๋ฅผ ์์ํ๋ค.
๋ค์ ์ฝ๋๋ ์๋๋ฐ์ค ์์ฑ์ ์ํ ๊ฐ๋จํ ์์ ๊ตฌ์ฑ์ด๋ค.
vi sandbox.json
{
"metadata": {
"name": "nginx-sandbox",
"namespace": "default",
"attempt": 1,
"uid": "hdishd83djaidwnduwk28bcsb"
},
"log_directory": "/tmp",
"linux": {
}
}
sudo crictl runp sandbox.json
runp ๋ช
๋ น์ ํตํด ์์ฑํ ์ ์๋ค.
์ด๊ฑด ๊ทธ๋ฅ ๊ป๋ฐ๊ธฐ์ผ ๋ฟ์ด๋ผ์ ํน๋ณํ ๋์์ ํ์ง๋ ์๋๋ค. ์ฌ๊ธฐ์ ๋ฐํ๋๋ ์๋๋ฐ์ค ID๋ ์ฌ์ฉ์ ์ํด ๋ณด๊ดํด๋๋ค.
๊ทธ ๋ค์์๋ pod ๊ตฌ์ฑ์ ํด์ค๋ค. ์ด ์์ฒด๋ก๋ ์ปจํ ์ด๋๋ฅผ ๋ฌถ์ด์ฃผ๋ ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ์ง ์ค์ ๊ฐ์ ๊ฑด ์๋ค.
vi pod.json
{
"metadata": {
"name": "nginx-pod",
"namespace": "default",
"attempt": 1,
"uid": "aewi4aeThua7ooShohbo1phoj"
},
"log_directory": "/tmp",
"linux": {
}
}

๊ทธ ๋ค์์๋ ์ปจํ ์ด๋๋ก ์ค์ง์ ์ธ ์คํ ํ๊ฒฝ์ ์ ์ํ๋ค.
vi container.json
{
"metadata": {
"name": "nginx-container",
"namespace": "default",
"attempt": 1
},
"image":{
"image": "nginx"
},
"command": [
"top"
],
"log_path":"nginx.log",
"linux": {
}
}

๊ทธ๋ผ crictl create ๋ช ๋ น์ ํตํด pod์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ ์ ์๋ค.
sudo crictl create ์๋๋ฐ์คID container.json pod.json
์ปจํ
์ด๋๊ฐ ์์ฑ๋๋ฉด ์ปจํ
์ด๋ ID๊ฐ ๋ฐํ๋ ํ
๋ฐ, ์ด ์ํ์์๋ ์๋ฌด๋ฐ ๋์๋ ํ์ง ์๋๋ค.
์ปจํ
์ด๋๋ฅผ ์์ํ๋ ค๋ฉด crictl start ๋ช
๋ น์ ์ฌ์ฉํ๋ฉด ๋๋ค.
sudo crictl start ์ปจํ
์ด๋ID์ฐธ์กฐ
https://github.com/containerd/cri/blob/master/docs/crictl.md#run-a-pod-sandbox-using-a-config-file
https://kubernetes.io/docs/tasks/debug/debug-cluster/crictl/
https://kubernetes.io/docs/tasks/debug/debug-cluster/crictl/