Kubernetes๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ kubectl์ ์๋ง๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์ ํธ๋ฆฌํฐ ์ค ํ๋์ผ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ํน์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์
ํ๋ ๋ฐ ๋ง์ ์๊ฐ์ ๋ณด๋ผ ๋๋ง๋ค ํด๋น ๋๊ตฌ๋ฅผ ์ ์ฐ๊ตฌํ๊ณ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํ
์ ์์ ๋ฐ๋ฅด๋ฉด ์ด ๊ธฐ์ฌ์ ๋ชฉํ๋ Kubernetes๋ฅผ ์ฌ์ฉํ์ฌ ์ผ์์ ์ธ ์์
์ ๋ ํจ์จ์ ์ผ ๋ฟ๋ง ์๋๋ผ ๋ ์ฆ๊ฒ๊ฒ ๋ง๋๋ ๊ฒ์
๋๋ค!
์๊ฐ: kubectl์ด๋?
kubectl์ ๋ณด๋ค ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๋ ค๋ฉด kubectl์ด ๋ฌด์์ธ์ง, ์ด๋ป๊ฒ ์๋ํ๋์ง ๊ธฐ๋ณธ์ ์ผ๋ก ์ดํดํด์ผ ํฉ๋๋ค.
์ฌ์ฉ์ ๊ด์ ์์ kubectl์ Kubernetes ์์ ์ ์ํํ ์ ์๋ ์ ์ดํ์ ๋๋ค.
๊ธฐ์ ์ ์ผ๋ก ๋งํ๋ฉด, kubectl์ Kubernetes API ํด๋ผ์ด์ธํธ์ ๋๋ค.
Kubernetes API๋ HTTP REST API์ ๋๋ค. ์ด API๋ ์์ ํ ์ ์ด๋๋ ์ง์ ํ Kubernetes ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๋๋ค. ์ด๋ ๋ชจ๋ Kubernetes ์์ ์ด API ์๋ํฌ์ธํธ๋ก ๋ ธ์ถ๋๊ณ ํด๋น ์๋ํฌ์ธํธ์ ๋ํ HTTP ์์ฒญ์ ํตํด ์ด๋ฃจ์ด์ง ์ ์์์ ์๋ฏธํฉ๋๋ค.
๋ฐ๋ผ์ kubectl์ ์ฃผ์ ์์ ์ Kubernetes API์ HTTP ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ์ ๋๋ค.
Kubernetes๋ ์์ ํ ๋ฆฌ์์ค ์งํฅ์ ์ธ ์์คํ
์
๋๋ค. ์ด๋ ๋ฆฌ์์ค์ ๋ด๋ถ ์ํ๋ฅผ ์ ์งํ๊ณ ๋ชจ๋ Kubernetes ์์
์ด CRUD ์์
์์ ์๋ฏธํฉ๋๋ค.
์ด๋ฌํ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ์ฌ Kubernetes๋ฅผ ์๋ฒฝํ๊ฒ ์ ์ดํ ์ ์์ผ๋ฉฐ, Kubernetes๋ ๋ฆฌ์์ค์ ํ์ฌ ์ํ์ ๋ฐ๋ผ ์ํํ ์์ ์ ํ์ ํฉ๋๋ค. ์ด๋ฌํ ์ด์ ๋ก Kubernetes API ์ฐธ์กฐ๋ ๊ด๋ จ ์์ ๊ณผ ํจ๊ป ๋ฆฌ์์ค ์ ํ ๋ชฉ๋ก์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
์๋ฅผ ์ดํด ๋ณด๊ฒ ์ต๋๋ค..
ReplicaSet ๋ฆฌ์์ค๋ฅผ ์์ฑํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ฅผ ์ํํ๋ ค๋ฉด ํ์ผ์ ReplicaSet๋ฅผ ์ด๋ฆ์ผ๋ก ์ค๋ช
ํฉ๋๋ค. replicaset.yaml
, ๋ค์ ๋ช
๋ น์ ์คํํฉ๋๋ค.
$ kubectl create -f replicaset.yaml
๊ทธ๋ฌ๋ฉด ReplicaSet ๋ฆฌ์์ค๊ฐ ์์ฑ๋ฉ๋๋ค. ํ์ง๋ง ๋ค์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋ ๊ฑธ๊น์?
Kubernetes์๋ ReplicaSet ์์ฑ ์์ ์ด ์์ต๋๋ค. ๋ค๋ฅธ ์์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก API ์๋ํฌ์ธํธ๋ก ๋ ธ์ถ๋ฉ๋๋ค. ์ด ์์ ์ ๋ํ ํน์ API ์๋ํฌ์ธํธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
POST /apis/apps/v1/namespaces/{namespace}/replicasets
๋ชจ๋ Kubernetes ์์
์ ๋ํ API ์๋ํฌ์ธํธ๋ ๋ค์์์ ์ฐพ์ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ ๋ช
๋ น์ ์คํํ๋ฉด kubectl์ ์ API ์๋ํฌ์ธํธ์ HTTP POST ์์ฒญ์ ๋ณด๋
๋๋ค. ํ์ผ์ ์ ๊ณตํ ReplicaSet ์ ์ replicaset.yaml
, ์์ฒญ ๋ณธ๋ฌธ์ ์ ์ก๋ฉ๋๋ค.
์ด๋ Kubernetes ํด๋ฌ์คํฐ์ ์ํธ ์์ฉํ๋ ๋ชจ๋ ๋ช ๋ น์ ๋ํด kubectl์ด ์๋ํ๋ ๋ฐฉ์์ ๋๋ค. ์ด ๋ชจ๋ ๊ฒฝ์ฐ์ kubectl์ ์ ์ ํ Kubernetes API ์๋ํฌ์ธํธ์ HTTP ์์ฒญ์ ๋ณด๋ ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ Kubernetes๋ฅผ ์์ ํ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. curl
Kubernetes API์ HTTP ์์ฒญ์ ์๋์ผ๋ก ๋ณด๋
๋๋ค. Kubectl์ ์ฌ์ฉํ๋ฉด Kubernetes API๋ฅผ ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๊ฒ์ด kubectl์ด ๋ฌด์์ธ์ง, ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ๊ธฐ๋ณธ ์ฌํญ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ kubectl ์ฌ์ฉ์๊ฐ ์์์ผ ํ Kubernetes API์ ๊ดํ ๋ ๋ค๋ฅธ ์ฌํญ์ด ์์ต๋๋ค. Kubernetes์ ๋ด๋ถ ์ธ๊ณ๋ฅผ ๊ฐ๋จํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Kubernetes์ ๋ด๋ถ ์ธ๊ณ
Kubernetes๋ ํด๋ฌ์คํฐ ๋ ธ๋์์ ๋ณ๋์ ํ๋ก์ธ์ค๋ก ์คํ๋๋ ๋ ๋ฆฝ ๊ตฌ์ฑ ์์ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ผ๋ถ ๊ตฌ์ฑ ์์๋ ๋ง์คํฐ ๋ ธ๋์์ ์คํ๋๊ณ ๋ค๋ฅธ ๊ตฌ์ฑ ์์๋ ์์ ์ ๋ ธ๋์์ ์คํ๋๋ฉฐ ๊ฐ ๊ตฌ์ฑ ์์๋ ๊ณ ์ ํ ํน์ ์์ ์ ์ํํฉ๋๋ค.
๊ธฐ๋ณธ ๋ ธ๋์ ๊ฐ์ฅ ์ค์ํ ๊ตฌ์ฑ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ฅ๊ทผ ์ฒ์ฅ - ๋ฆฌ์์ค ์ ์๋ฅผ ์ ์ฅํฉ๋๋ค(
์ผ๋ฐ์ ์ผ๋ก etcd์ ๋๋ค ). - API ์๋ฒ โ API๋ฅผ ์ ๊ณตํ๊ณ ์คํ ๋ฆฌ์ง๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- ์ปจํธ๋กค๋ฌ ๊ด๋ฆฌ์ โ ๋ฆฌ์์ค ์ํ๊ฐ ์ฌ์์ ์ค์ํ๋์ง ํ์ธํฉ๋๋ค.
- ์ค์ผ์ค๋ฌ โ ์์ ์ ๋ ธ๋์์ ํฌ๋๋ฅผ ์์ฝํฉ๋๋ค.
์์ ์ ๋ ธ๋์ ๊ฐ์ฅ ์ค์ํ ๊ตฌ์ฑ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฟ ๋ฒจ๋ โ ์์ ๋ ธ๋์์ ์ปจํ ์ด๋ ์์์ ๊ด๋ฆฌํฉ๋๋ค.
์ด๋ฌํ ๊ตฌ์ฑ ์์๊ฐ ์ด๋ป๊ฒ ํจ๊ป ์๋ํ๋์ง ์ดํดํ๊ธฐ ์ํด ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฐฉ๊ธ ์๋ฃํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. kubectl create -f replicaset.yaml
, ๊ทธ ํ kubectl์ HTTP POST ์์ฒญ์ ์ํํ์ต๋๋ค.
ํด๋ฌ์คํฐ์์๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์?
- ํ ํ
kubectl create -f replicaset.yaml
API ์๋ฒ๋ ReplicaSet ๋ฆฌ์์ค ์ ์๋ฅผ ์คํ ๋ฆฌ์ง์ ์ ์ฅํฉ๋๋ค. - ๋ค์์ผ๋ก, ReplicaSet ๋ฆฌ์์ค์ ์์ฑ, ์์ ๋ฐ ์ญ์ ๋ฅผ ์ฒ๋ฆฌํ๋ ReplicaSet ์ปจํธ๋กค๋ฌ๊ฐ ์ปจํธ๋กค๋ฌ ๊ด๋ฆฌ์์์ ์คํ๋ฉ๋๋ค.
- ReplicaSet ์ปจํธ๋กค๋ฌ๋ ReplicaSet ์ ์์ ํฌ๋ ํ ํ๋ฆฟ์ ๋ฐ๋ผ ๊ฐ ReplicaSet ๋ณต์ ๋ณธ์ ๋ํ ํฌ๋ ์ ์๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ์คํ ๋ฆฌ์ง์ ์ ์ฅํฉ๋๋ค.
- ์ค์ผ์ค๋ฌ๊ฐ ์์๋์ด ์์ง ์์ ์ ๋ ธ๋์ ํ ๋น๋์ง ์์ Pod๋ฅผ ์ถ์ ํฉ๋๋ค.
- ์ค์ผ์ค๋ฌ๋ ๊ฐ Pod์ ์ ํฉํ ์์ ์ ๋ ธ๋๋ฅผ ์ ํํ๊ณ ์ด ์ ๋ณด๋ฅผ ์ ์ฅ์์ Pod ์ ์์ ์ถ๊ฐํฉ๋๋ค.
- Pod๊ฐ ํ ๋น๋ ์์ ์ ๋ ธ๋์์ Kubelet์ด ์์๋๊ณ ์ด ๋ ธ๋์ ํ ๋น๋ Pod๋ฅผ ์ถ์ ํฉ๋๋ค.
- Kubelet์ ์คํ ๋ฆฌ์ง์์ ํฌ๋ ์ ์๋ฅผ ์ฝ๊ณ Docker์ ๊ฐ์ ์ปจํ ์ด๋ ๋ฐํ์์ ๋ ธ๋์์ ์ปจํ ์ด๋๋ฅผ ์์ํ๋๋ก ์ง์ํฉ๋๋ค.
์๋๋ ์ด ์ค๋ช ์ ํ ์คํธ ๋ฒ์ ์ ๋๋ค.
ReplicaSet ์์ฑ ์๋ํฌ์ธํธ์ ๋ํ API ์์ฒญ์ API ์๋ฒ์์ ์ฒ๋ฆฌ๋ฉ๋๋ค. API ์๋ฒ๋ ์์ฒญ์ ์ธ์ฆํ๊ณ ReplicaSet ๋ฆฌ์์ค ์ ์๋ฅผ ์คํ ๋ฆฌ์ง์ ์ ์ฅํฉ๋๋ค.
์ด ์ด๋ฒคํธ๋ ์ปจํธ๋กค๋ฌ ๊ด๋ฆฌ์์ ํ์ ํ๋ก์ธ์ค์ธ ReplicaSet ์ปจํธ๋กค๋ฌ๋ฅผ ์์ํฉ๋๋ค. ReplicaSet ์ปจํธ๋กค๋ฌ๋ ์ ์ฅ์์์ ReplicaSet ๋ฆฌ์์ค์ ์์ฑ, ์ ๋ฐ์ดํธ ๋ฐ ์ญ์ ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ์ด๋ฌํ ์ผ์ด ๋ฐ์ํ๋ฉด ์ด๋ฒคํธ ์๋ฆผ์ ๋ฐ์ต๋๋ค.
ReplicaSet ์ปจํธ๋กค๋ฌ์ ์๋ฌด๋ ํ์ํ ์์ ReplicaSet ํฌ๋๊ฐ ์กด์ฌํ๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค. ์ด ์์์๋ ์์ง ํฌ๋๊ฐ ์์ผ๋ฏ๋ก ReplicaSet ์ปจํธ๋กค๋ฌ๋ ์ด๋ฌํ ํฌ๋ ์ ์๋ฅผ ์์ฑํ๊ณ (ReplicaSet ์ ์์ ํฌ๋ ํ ํ๋ฆฟ์ ๋ฐ๋ผ) ์ด๋ฅผ ์คํ ๋ฆฌ์ง์ ์ ์ฅํฉ๋๋ค.
์ Pod ์์ฑ์ ์์ง ์์ ์ ๋ ธ๋์ ๋ํด ์์ฝ๋์ง ์์ Pod ์ ์๋ฅผ ์ถ์ ํ๋ ์ค์ผ์ค๋ฌ์ ์ํด ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค. ์ค์ผ์ค๋ฌ๋ ๊ฐ Pod์ ์ ํฉํ ์์ ์ ๋ ธ๋๋ฅผ ์ ํํ๊ณ ์ ์ฅ์์ Pod ์ ์๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
์ด ์์ ๊น์ง๋ ํด๋ฌ์คํฐ ์ด๋์์๋ ์ํฌ๋ก๋ ์ฝ๋๊ฐ ์คํ๋์ง ์์์ต๋๋ค. ์ง๊ธ๊น์ง ํ ๋ชจ๋ ์ผ์ - ์ด๋ ๋ง์คํฐ ๋ ธ๋์ ์ ์ฅ์์์ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ณ ์ ๋ฐ์ดํธํ๋ ๊ฒ์ ๋๋ค.
๋ง์ง๋ง ์ด๋ฒคํธ๋ ์์ ์ ๋ ธ๋์ ๋ํด ์์ฝ๋ Pod๋ฅผ ๋ชจ๋ํฐ๋งํ๋ Kubelets๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค. ReplicaSet Pod๊ฐ ์ค์น๋ ์์ ์ ๋ ธ๋์ Kubelet์ Docker์ ๊ฐ์ ์ปจํ ์ด๋ ๋ฐํ์์ ํ์ํ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์คํํ๋๋ก ์ง์ํด์ผ ํฉ๋๋ค.
์ด ์์ ์์ ReplicaSet ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ง์นจ๋ด ์คํ๋ฉ๋๋ค!
Kubernetes API์ ์ญํ
์ด์ ์์์ ๋ณธ ๊ฒ์ฒ๋ผ Kubernetes ๊ตฌ์ฑ ์์(API ์๋ฒ ๋ฐ ์คํ ๋ฆฌ์ง ์ ์ธ)๋ ์คํ ๋ฆฌ์ง์ ๋ฆฌ์์ค ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์ํ๊ณ ์คํ ๋ฆฌ์ง์ ๋ฆฌ์์ค์ ๋ํ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
๋ฌผ๋ก ์ด๋ฌํ ๊ตฌ์ฑ ์์๋ ์คํ ๋ฆฌ์ง์ ์ง์ ์ํธ ์์ฉํ์ง ์๊ณ Kubernetes API๋ฅผ ํตํด์๋ง ์ํธ ์์ฉํฉ๋๋ค.
๋ค์ ์๋ฅผ ๊ณ ๋ คํ์ญ์์ค.:
- ReplicaSet ์ปจํธ๋กค๋ฌ๋ API ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ReplicaSet ๋์ด ๋งค๊ฐ๋ณ์ ํฌํจwatch
ReplicaSet ๋ฆฌ์์ค์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ชจ๋ํฐ๋งํฉ๋๋ค. - ReplicaSet ์ปจํธ๋กค๋ฌ๋ API ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํฌ๋ ์์ฑ (ํฌ๋ ์์ฑ) ํฌ๋๋ฅผ ์์ฑํฉ๋๋ค. - ์ค์ผ์ค๋ฌ๋ API ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํจ์น ํฌ๋ (ํฌ๋ ํธ์ง) ์ ํํ ์์ ์ ๋ ธ๋์ ๋ํ ์ ๋ณด๋ก ํฌ๋๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
๋ณด์๋ค์ํผ ์ด๋ kubectl์ด ์ก์ธ์คํ๋ ๊ฒ๊ณผ ๋์ผํ API์ ๋๋ค. ๋ด๋ถ ๊ตฌ์ฑ ์์์ ์ธ๋ถ ์ฌ์ฉ์์ ๋์ผํ API๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ Kubernetes ์ค๊ณ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ๋๋ค.
์ด์ Kubernetes์ ์๋ ๋ฐฉ์์ ์์ฝํ ์ ์์ต๋๋ค.
- ์คํ ๋ฆฌ์ง๋ ์ํ, ์ฆ Kubernetes ๋ฆฌ์์ค๋ฅผ ์ ์ฅํฉ๋๋ค.
- API ์๋ฒ๋ Kubernetes API ํ์์ผ๋ก ์คํ ๋ฆฌ์ง์ ๋ํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋ค๋ฅธ ๋ชจ๋ Kubernetes ๊ตฌ์ฑ ์์์ ์ฌ์ฉ์๋ API๋ฅผ ํตํด Kubernetes ์ํ(๋ฆฌ์์ค)๋ฅผ ์ฝ๊ณ ๊ด์ฐฐํ๊ณ ์กฐ์ํฉ๋๋ค.
์ด๋ฌํ ๊ฐ๋ ์ ์๋ ๊ฒ์ kubectl์ ๋ ์ ์ดํดํ๊ณ ์ต๋ํ ํ์ฉํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ด์ kubectl์ ์ฌ์ฉํ์ฌ ์์ฐ์ฑ์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋๋ ๋ช ๊ฐ์ง ๊ตฌ์ฒด์ ์ธ ํ๊ณผ ์๋ น์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. ๋ช ๋ น์์ฑ์ ์ด์ฉํ ์ ๋ ฅ์๋ ํฅ์
kubectl์ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๊ฐ์ฅ ์ ์ฉํ์ง๋ง ์ข ์ข ๊ฐ๊ณผ๋๋ ๊ธฐ์ ์ค ํ๋๋ ๋ช ๋ น ์์ฑ์ ๋๋ค.
๋ช ๋ น ์์ฑ์ ์ฌ์ฉํ๋ฉด Tab ํค๋ฅผ ์ฌ์ฉํ์ฌ kubectl ๋ช ๋ น์ ์ผ๋ถ๋ฅผ ์๋์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ ๋ฆฌ์์ค ์ด๋ฆ๊ณผ ๊ฐ์ ๋ณต์กํ ํญ๋ชฉ์ ํฌํจํ์ฌ ํ์ ๋ช ๋ น, ์ต์ ๋ฐ ์ธ์์ ๋ํด ์๋ํฉ๋๋ค.
kubectl ๋ช ๋ น ์์ฑ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ํ์ธํ์ธ์.
๋ช
๋ น ์์ฑ์ Bash ๋ฐ Zsh ์
ธ์์ ์๋ํฉ๋๋ค.
๋ช ๋ น ์์ฑ ์๋ ๋ฐฉ์
๋ช ๋ น ์์ฑ์ ์์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํ๋ ์ ธ ๊ธฐ๋ฅ์ ๋๋ค. ํ์ฅ ์คํฌ๋ฆฝํธ๋ ํน์ ๋ช ๋ น์ ๋ํ ํ์ฅ ๋์์ ์ ์ํ๋ ์ ธ ์คํฌ๋ฆฝํธ์ ๋๋ค.
Kubectl์ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ Bash ๋ฐ Zsh์ฉ ํ์ฅ ์คํฌ๋ฆฝํธ๋ฅผ ์๋์ผ๋ก ์์ฑํ๊ณ ์ถ๋ ฅํฉ๋๋ค.
$ kubectl completion bash
ะะปะธ :
$ kubectl completion zsh
์ด๋ก ์ ์ผ๋ก๋ kubectl์ด ๋ช ๋ น์ ๋ณด์ํ ์ ์๋๋ก ์ด๋ฌํ ๋ช ๋ น์ ์ถ๋ ฅ์ ์ ์ ํ ๋ช ๋ น ์ ธ์ ์ฐ๊ฒฐํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค.
์ค์ ๋ก Bash(Linux์ MacOS์ ์ฐจ์ด์ ํฌํจ)์ Zsh์ ์ฐ๊ฒฐ ๋ฐฉ๋ฒ์ ๋ค๋ฆ ๋๋ค. ์๋์์๋ ์ด๋ฌํ ๋ชจ๋ ์ต์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฆฌ๋ ์ค์์์ ๋ฐฐ์ฌ
Bash ์์ฑ ์คํฌ๋ฆฝํธ๋ bash-completion ํจํค์ง์ ๋ฐ๋ผ ๋ค๋ฅด๋ฏ๋ก ๋จผ์ ์ค์นํด์ผ ํฉ๋๋ค.
$ sudo apt-get install bash-completion
ะะปะธ :
$ yum install bash-completion
๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ํจํค์ง๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ค์น๋์๋์ง ํ ์คํธํ ์ ์์ต๋๋ค.
$ type _init_completion
์ ํจ์ ์ฝ๋๊ฐ ์ถ๋ ฅ๋๋ฉด bash-completion์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ค์น๋ ๊ฒ์
๋๋ค. ๋ช
๋ น์์ "์ฐพ์ ์ ์์" ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ํ์ผ์ ๋ค์ ์ค์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ~ / .bashrc
:
$ source /usr/share/bash-completion/bash_completion
์ด ์ค์ ํ์ผ์ ์ถ๊ฐํด์ผ ํฉ๋๊น? ~ / .bashrc
bash-completion์ ์ค์นํ๋ ๋ฐ ์ฌ์ฉํ ํจํค์ง ๊ด๋ฆฌ์์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค. ์ด๋ APT์๋ ํ์ํ์ง๋ง YUM์๋ ํ์ํ์ง ์์ต๋๋ค.
bash-completion์ ์ค์นํ ํ์๋ kubectl ์์ฑ ์คํฌ๋ฆฝํธ๊ฐ ๋ชจ๋ ์ ธ ์ธ์ ์์ ํ์ฑํ๋๋๋ก ๋ชจ๋ ๊ฒ์ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
์ด๋ฅผ ์ํํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ํ์ผ์ ๋ค์ ์ค์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค. ~ / .bashrc
:
source <(kubectl completion bash)
๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ kubectl ํ์ฅ ์คํฌ๋ฆฝํธ๋ฅผ ๋๋ ํฐ๋ฆฌ์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค. /etc/bash_completion.d
(์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ์์ฑ):
$ kubectl completion bash >/etc/bash_completion.d/kubectl
์นดํ๋ก๊ทธ์ ๋ชจ๋ ์ถ๊ฐ ๊ธฐ๋ฅ ์คํฌ๋ฆฝํธ /etc/bash_completion.d
bash ์์ฑ์ ์๋์ผ๋ก ํฌํจ๋ฉ๋๋ค.
๋ ์ต์ ๋ชจ๋ ๋์ผํ๊ฒ ์ ์ฉ๋ฉ๋๋ค.
์ ธ์ ๋ค์ ์์ํ๋ฉด kubectl ๋ช ๋ น ์์ฑ์ด ์๋ํฉ๋๋ค.
MacOS์ ๋ฐฐ์
MacOS์์๋ ์ค์ ์ด ์ข ๋ ๋ณต์กํฉ๋๋ค. ์ฌ์ค MacOS๋ ๊ธฐ๋ณธ์ ์ผ๋ก Bash ๋ฒ์ 3.2๋ฅผ ์ฌ์ฉํ๋ฉฐ kubectl ์๋ ์์ฑ ์คํฌ๋ฆฝํธ์๋ Bash ๋ฒ์ 4.1 ์ด์์ด ํ์ํ๋ฉฐ Bash 3.2์์๋ ์๋ํ์ง ์์ต๋๋ค.
MacOS์์ ์ค๋๋ ๋ฒ์ ์ Bash๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ ๋ผ์ด์ผ์ค ๋ฌธ์ ๊ฐ ์์ต๋๋ค. Bash ๋ฒ์ 4๋ Apple์์ ์ง์ํ์ง ์๋ GPLv3์ ๋ฐ๋ผ ๋ผ์ด์ผ์ค๊ฐ ๋ถ์ฌ๋ฉ๋๋ค.
MacOS์์ kubectl ์๋ ์์ฑ์ ๊ตฌ์ฑํ๋ ค๋ฉด ์ต์ ๋ฒ์ ์ Bash๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค. ์
๋ฐ์ดํธ๋ Bash๋ฅผ ๊ธฐ๋ณธ ์
ธ๋ก ์ค์ ํ ์๋ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋์ค์ ๋ง์ ๋ฌธ์ ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค. ์ด๋ ต์ง ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ธฐ์ฌ์ ๋์ ์์ต๋๋ค.
๊ณ์ํ๊ธฐ ์ ์ ์ต์ ๋ฒ์ ์ Bash๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํ์ธ์(์ถ๋ ฅ์ ํ์ธํ์ธ์). bash --version
).
Bash ์๋ฃ ์คํฌ๋ฆฝํธ๋ ํ๋ก์ ํธ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค.
๋ค์์ ์ฌ์ฉํ์ฌ bash ์์ฑ์ ์ค์นํ ์ ์์ต๋๋ค.
$ brew install bash-completion@2
์ฌ๊ธฐ์ @2
bash-completion ๋ฒ์ 2๋ฅผ ์๋ฏธํฉ๋๋ค. kubectl ์๋ ์์ฑ์๋ bash-completion v2๊ฐ ํ์ํ๊ณ bash-completion v2์๋ ์ต์ Bash ๋ฒ์ 4.1์ด ํ์ํฉ๋๋ค.
๋ช
๋ น ์ถ๋ ฅ brew-install
ํ์ผ์ ์ถ๊ฐํด์ผ ํ ์ฌํญ์ ์ง์ ํ๋ ์ฃผ์ ์ฌํญ ์น์
์ด ํฌํจ๋์ด ์์ต๋๋ค. ~/.bash_profile
:
export BASH_COMPLETION_COMPAT_DIR=/usr/local/etc/bash_completion.d
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && .
"/usr/local/etc/profile.d/bash_completion.sh"
๊ทธ๋ฌ๋ ๋ค์ ์ค์ ์ถ๊ฐํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ~/.bash_profile
, ๋ฐ c ~/.bashrc
. ์ด ๊ฒฝ์ฐ ๊ธฐ๋ณธ ๋ช
๋ น ์
ธ๋ฟ๋ง ์๋๋ผ ํ์ ๋ช
๋ น ์
ธ์์๋ ์๋ ์์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ช ๋ น ์ ธ์ ๋ค์ ์์ํ ํ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ค์น๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ ์ ์์ต๋๋ค.
$ type _init_completion
์ถ๋ ฅ์ ์ ธ ๊ธฐ๋ฅ์ด ํ์๋๋ฉด ๋ชจ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋ ๊ฒ์ ๋๋ค.
์ด์ ๋ชจ๋ ์ธ์ ์์ kubectl ์๋ ์์ฑ์ด ํ์ฑํ๋์ด ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ค์ ์ค์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค. ~/.bashrc
:
source <(kubectl completion bash)
๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ํด๋์ ์๋ ์์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค. /usr/local/etc/bash_completion.d
:
$ kubectl completion bash
>/usr/local/etc/bash_completion.d/kubectl
์ด ๋ฐฉ๋ฒ์ Homebrew๋ฅผ ์ฌ์ฉํ์ฌ bash ์์ฑ์ ์ค์นํ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ bash-completion์ ์ด ๋๋ ํฐ๋ฆฌ์์ ๋ชจ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํฉ๋๋ค.
์ค์นํ ๊ฒฝ์ฐ /usr/local/etc/bash_completion.d
์ค์น ์ค. ์ด ๊ฒฝ์ฐ bash-completion์ ์ค์นํ์๋ง์ kubectl ์๋ ์์ฑ์ด ์๋ํ๊ธฐ ์์ํฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์ด๋ฌํ ์ต์ ์ ๋ชจ๋ ๋์ผํฉ๋๋ค.
Zsh
Zsh์ฉ ์๋ ์์ฑ ์คํฌ๋ฆฝํธ์๋ ์ข ์์ฑ์ด ํ์ํ์ง ์์ต๋๋ค. ๋ช ๋ น ์ ธ์ ๋ก๋ํ ๋ ์ด๋ฅผ ํ์ฑํํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ด ์์
์ ~/.zshrc
ํ์ผ:
source <(kubectl completion zsh)
์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ not found: compdef
์์ ๋ค์ ์์ํ ํ ๋ด์ฅ ๊ธฐ๋ฅ์ ํ์ฑํํด์ผ ํฉ๋๋ค compdef
. ํ์ผ ์์ ๋ถ๋ถ์ ์ถ๊ฐํ์ฌ ํ์ฑํํ ์ ์์ต๋๋ค. ~/.zshrc
๋ค์ :
autoload -Uz compinit
compinit
2. ๋ฆฌ์์ค ์ฌ์์ ๋น ๋ฅด๊ฒ ํ์ธํ์ธ์
YAML ๋ฆฌ์์ค ์ ์๋ฅผ ์์ฑํ ๋ ํด๋น ๋ฆฌ์์ค์ ๋ํ ํ๋์ ํด๋น ์๋ฏธ๋ฅผ ์์์ผ ํฉ๋๋ค. ์ด ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์๋ ํ ๊ณณ์ ๋ชจ๋ ๋ฆฌ์์ค์ ๋ํ ์ ์ฒด ์ฌ์์ด ํฌํจ๋ API ์ฐธ์กฐ์ ๋๋ค.
ํ์ง๋ง ๋ฌด์ธ๊ฐ๋ฅผ ๊ฒ์ํด์ผ ํ ๋๋ง๋ค ์น ๋ธ๋ผ์ฐ์ ๋ก ์ ํํ๋ ๊ฒ์ ๋ถํธํฉ๋๋ค. ๋ฐ๋ผ์ kubectl์ ๋ค์ ๋ช
๋ น์ ์ ๊ณตํฉ๋๋ค. kubectl explain
, ํฐ๋ฏธ๋์ ์๋ ๋ชจ๋ ๋ฆฌ์์ค์ ์ฌ์์ ๋ณด์ฌ์ค๋๋ค.
๋ช ๋ น ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$ kubectl explain resource[.field]...
์ด ๋ช ๋ น์ ์์ฒญ๋ ๋ฆฌ์์ค ๋๋ ํ๋์ ์ฌ์์ ์ถ๋ ฅํฉ๋๋ค. ํ์๋๋ ์ ๋ณด๋ API ๋งค๋ด์ผ์ ํฌํจ๋ ์ ๋ณด์ ๋์ผํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก kubectl explain
ํ๋ ์ค์ฒฉ์ ์ฒซ ๋ฒ์งธ ์์ค๋ง ํ์ํฉ๋๋ค.
์ด๋ป๊ฒ ์๊ฒผ๋์ง ํ์ธํ์ธ์
์ต์
์ ์ถ๊ฐํ๋ฉด ์ ์ฒด ํธ๋ฆฌ๋ฅผ ํ์ํ ์ ์์ต๋๋ค. --recursive
:
$ kubectl explain deployment.spec --recursive
์ด๋ค ๋ฆฌ์์ค๊ฐ ํ์ํ์ง ์ ํํ ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ํด๋น ๋ฆฌ์์ค๋ฅผ ๋ชจ๋ ํ์ํ ์ ์์ต๋๋ค.
$ kubectl api-resources
์ด ๋ช
๋ น์ ์์ ์ด๋ฆ์ ๋ณต์ํ์ผ๋ก ํ์ํฉ๋๋ค. deployments
๋์ deployment
. ์๋ฅผ ๋ค์ด ์งง์ ์ด๋ฆ๋ ํ์๋ฉ๋๋ค. deploy
, ํด๋น ๋ฆฌ์์ค๊ฐ ์๋ ๊ฒฝ์ฐ. ์ด๋ฌํ ์ฐจ์ด์ ์ ๋ํด ๊ฑฑ์ ํ์ง ๋ง์ญ์์ค. ์ด๋ฌํ ์ด๋ฆ ์ง์ ์ต์
์ ๋ชจ๋ kubectl๊ณผ ๋์ผํฉ๋๋ค. ์ฆ, ๋ค์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. kubectl explain
.
๋ค์ ๋ช ๋ น์ ๋ชจ๋ ๋์ผํฉ๋๋ค.
$ kubectl explain deployments.spec
# ะธะปะธ
$ kubectl explain deployment.spec
# ะธะปะธ
$ kubectl explain deploy.spec
3. ์ฌ์ฉ์ ์ ์ ์ด ์ถ๋ ฅ ํ์์ ์ฌ์ฉํ์ญ์์ค.
๊ธฐ๋ณธ ๋ช
๋ น ์ถ๋ ฅ ํ์ kubectl get
:
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
engine-544b6b6467-22qr6 1/1 Running 0 78d
engine-544b6b6467-lw5t8 1/1 Running 0 78d
engine-544b6b6467-tvgmg 1/1 Running 0 78d
web-ui-6db964458-8pdw4 1/1 Running 0 78d
์ด ํ์์ ํธ๋ฆฌํ์ง๋ง ์ ํ๋ ์์ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค. ์ ์ฒด ์์ ์ ์ ํ์๊ณผ ๋น๊ตํ์ฌ ์ฌ๊ธฐ์๋ ๋ช ๊ฐ์ง ํ๋๋ง ํ์๋ฉ๋๋ค.
์ด ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ ์ ์ด ์ถ๋ ฅ ํ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ถ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ ๊ฒฐ์ ํ ์ ์์ต๋๋ค. ๋ชจ๋ ์์ ํ๋๋ฅผ ๋ณ๋์ ์ด๋ก ํ์ํ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์ ์ ํ์์ ์ฌ์ฉ์ ๋ค์ ์ต์ ์ ์ฌ์ฉํ์ฌ ๊ฒฐ์ ๋ฉ๋๋ค.
-o custom-columns=<header>:<jsonpath>[,<header>:<jsonpath>]...
๊ฐ ์ถ๋ ฅ ์ด์ ์์ผ๋ก ์ ์ํ ์ ์์ต๋๋ค. <header>:<jsonpath>
์ด๋์์ <header>
์ ์ด ์ด๋ฆ์ด๊ณ , <jsonpath>
โ ๋ฆฌ์์ค ํ๋๋ฅผ ์ ์ํ๋ ํํ์์
๋๋ค.
๊ฐ๋จํ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
$ kubectl get pods -o custom-columns='NAME:metadata.name'
NAME
engine-544b6b6467-22qr6
engine-544b6b6467-lw5t8
engine-544b6b6467-tvgmg
web-ui-6db964458-8pdw4
์ถ๋ ฅ์๋ Pod ์ด๋ฆ์ด ํฌํจ๋ ์ด ํ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
์ต์
ํํ์์ ํ๋์์ ํฌ๋ ์ด๋ฆ์ ์ ํํฉ๋๋ค. metadata.name
. ํ์ ์ด๋ฆ ํ๋์ Pod ์ด๋ฆ์ด ์ ์๋์ด ์๊ธฐ ๋๋ฌธ์
๋๋ค. metadata
ํฌ๋์ ๋ฆฌ์์ค ์ค๋ช
์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ค์์์ ํ์ธํ ์ ์์ต๋๋ค. kubectl explain pod.metadata.name
.
์ด์ ์ถ๋ ฅ์ ์ถ๊ฐ ์ด์ ์ถ๊ฐํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ ํฌ๋๊ฐ ์คํ ์ค์ธ ๋ ธ๋๋ฅผ ํ์ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ์ฌ์ฉ์ ์ ์ ์ด ์ต์ ์ ์ ์ ํ ์ด ์ฌ์์ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
$ kubectl get pods
-o custom-columns='NAME:metadata.name,NODE:spec.nodeName'
NAME NODE
engine-544b6b6467-22qr6 ip-10-0-80-67.ec2.internal
engine-544b6b6467-lw5t8 ip-10-0-36-80.ec2.internal
engine-544b6b6467-tvgmg ip-10-0-118-34.ec2.internal
web-ui-6db964458-8pdw4 ip-10-0-118-34.ec2.internal
ํํ์์ ๋ค์์์ ๋
ธ๋ ์ด๋ฆ์ ์ ํํฉ๋๋ค. spec.nodeName
โ Pod๊ฐ ๋
ธ๋์ ํ ๋น๋๋ฉด ํด๋น ์ด๋ฆ์ด ํ๋์ ๊ธฐ๋ก๋ฉ๋๋ค. spec.nodeName
ํฌ๋ ๋ฆฌ์์ค ์ฌ์. ๋ ์์ธํ ์ ๋ณด๋ ์ถ๋ ฅ์์ โโํ์ธํ ์ ์์ต๋๋ค. kubectl explain pod.spec.nodeName
.
Kubernetes ๋ฆฌ์์ค ํ๋๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.
๋ชจ๋ ์์ ํ๋๋ฅผ ์ด๋ก ๋ณผ ์ ์์ต๋๋ค. ๋ฆฌ์์ค ์ฌ์์ ๊ฒํ ํ๊ณ ์ํ๋ ํ๋์ ์ฌ์ฉํด ๋ณด์ธ์.
ํ์ง๋ง ๋จผ์ ํ๋ ์ ํ ํํ์์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
JSONPath ํํ์
์์ ํ๋๋ฅผ ์ ํํ๋ ํํ์์ ๋ค์์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
JSONPath๋ JSON ๋ฌธ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ์ธ์ด์
๋๋ค. ๋จ์ผ ํ๋๋ฅผ ์ ํํ๋ ๊ฒ์ JSONPath์ ๊ฐ์ฅ ๊ฐ๋จํ ์ฌ์ฉ ์ฌ๋ก์
๋๋ค. ๊ทธ๋ ๊ฐ์ง ๊ฒ์ด ๋ง๋ค
Kubectl explain์ ์ ํ๋ ์์ JSONPath ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅ์ฑ๊ณผ ์๋ ์๋์ ์ค๋ช ๋์ด ์์ต๋๋ค.
# ะัะฑัะฐัั ะฒัะต ัะปะตะผะตะฝัั ัะฟะธัะบะฐ
$ kubectl get pods -o custom-columns='DATA:spec.containers[*].image'
# ะัะฑัะฐัั ัะฟะตัะธัะธัะตัะบะธะน ัะปะตะผะตะฝั ัะฟะธัะบะฐ
$ kubectl get pods -o custom-columns='DATA:spec.containers[0].image'
# ะัะฑัะฐัั ัะปะตะผะตะฝัั ัะฟะธัะบะฐ, ะฟะพะฟะฐะดะฐััะธะต ะฟะพะด ัะธะปััั
$ kubectl get pods -o custom-columns='DATA:spec.containers[?(@.image!="nginx")].image'
# ะัะฑัะฐัั ะฒัะต ะฟะพะปั ะฟะพ ัะบะฐะทะฐะฝะฝะพะผั ะฟััะธ, ะฝะตะทะฐะฒะธัะธะผะพ ะพั ะธั
ะธะผะตะฝะธ
$ kubectl get pods -o custom-columns='DATA:metadata.*'
# ะัะฑัะฐัั ะฒัะต ะฟะพะปั ั ัะบะฐะทะฐะฝะฝัะผ ะธะผะตะฝะตะผ, ะฒะฝะต ะทะฐะฒะธัะธะผะพััะธ ะพั ะธั
ัะฐัะฟะพะปะพะถะตะฝะธั
$ kubectl get pods -o custom-columns='DATA:..image'
[] ์ฐ์ฐ์๋ ํนํ ์ค์ํฉ๋๋ค. ๋ง์ Kubernetes ๋ฆฌ์์ค ํ๋๋ ๋ชฉ๋ก์ด๋ฉฐ, ์ด ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ๋ชฉ๋ก์ ๊ตฌ์ฑ์์ ์ ํํ ์ ์์ต๋๋ค. ๋ชฉ๋ก์ ๋ชจ๋ ์์๋ฅผ โโ์ ํํ๊ธฐ ์ํด [*]์ ๊ฐ์ ์์ผ๋์นด๋์ ํจ๊ป ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
์ ์ฉ ์ฌ๋ก
์ถ๋ ฅ์ ์ด๋ค ํ๋๋ ์์ ํ๋์ ์กฐํฉ๋ ํ์ํ ์ ์์ผ๋ฏ๋ก ์ฌ์ฉ์ ์ ์ ์ด ์ถ๋ ฅ ํ์์ ์ฌ์ฉํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ๋ฌด๊ถ๋ฌด์งํฉ๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ์ํ ์ฑ์ ๋๋ค. ์์ ๋กญ๊ฒ ์ง์ ํ์ํ๊ณ ์์ ์๊ฒ ์ ํฉํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฐพ์๋ณด์ธ์.
- Pod์ ์ปจํ
์ด๋ ์ด๋ฏธ์ง ํ์:
$ kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image' NAME IMAGES engine-544b6b6467-22qr6 rabbitmq:3.7.8-management,nginx engine-544b6b6467-lw5t8 rabbitmq:3.7.8-management,nginx engine-544b6b6467-tvgmg rabbitmq:3.7.8-management,nginx web-ui-6db964458-8pdw4 wordpress
์ด ๋ช ๋ น์ ๊ฐ ํฌ๋์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง ์ด๋ฆ์ ํ์ํฉ๋๋ค.
Pod์๋ ์ฌ๋ฌ ๊ฐ์ ์ปจํ ์ด๋๊ฐ ํฌํจ๋ ์ ์์ผ๋ฉฐ ์ด๋ฏธ์ง ์ด๋ฆ์ ์ผํ๋ก ๊ตฌ๋ถ๋์ด ํ ์ค์ ํ์๋ฉ๋๋ค.
- ๋
ธ๋ ๊ฐ์ฉ์ฑ ์์ญ ํ์:
$ kubectl get nodes -o custom-columns='NAME:metadata.name,ZONE:metadata.labels.failure-domain.beta.kubernetes.io/zone' NAME ZONE ip-10-0-118-34.ec2.internal us-east-1b ip-10-0-36-80.ec2.internal us-east-1a ip-10-0-80-67.ec2.internal us-east-1b
์ด ๋ช ๋ น์ ํด๋ฌ์คํฐ๊ฐ ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋์์ ํธ์คํ ๋๋ ๊ฒฝ์ฐ ์ ์ฉํฉ๋๋ค. ๊ฐ ๋ ธ๋์ ๊ฐ์ฉ์ฑ ์์ญ์ ํ์ํฉ๋๋ค.
๊ฐ์ฉ์ฑ ์์ญ์ ๋ณต์ ์์ญ์ ์ง๋ฆฌ์ ์ง์ญ์ผ๋ก ์ ํํ๋ ํด๋ผ์ฐ๋ ๊ฐ๋ ์ ๋๋ค.
๊ฐ ๋ ธ๋์ ๊ฐ์ฉ ์์ญ์ ํน์ ๋ผ๋ฒจ์ ํตํด ํ๋๋ฉ๋๋ค.
. ํด๋ฌ์คํฐ๊ฐ ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋์์ ์คํ ์ค์ธ ๊ฒฝ์ฐ ์ด ๋ ์ด๋ธ์ ์๋์ผ๋ก ์์ฑ๋๊ณ ๊ฐ ๋ ธ๋์ ๊ฐ์ฉ์ฑ ์์ญ ์ด๋ฆ์ผ๋ก ์ฑ์์ง๋๋ค.failure-domain.beta.kubernetes.io/zone
๋ผ๋ฒจ์ Kubernetes ๋ฆฌ์์ค ์ฌ์์ ์ผ๋ถ๊ฐ ์๋๋ฏ๋ก ๋ผ๋ฒจ์ ๋ํ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
API ๊ฐ์ด๋ . ๊ทธ๋ฌ๋ YAML ๋๋ JSON ํ์์ผ๋ก ๋ ธ๋์ ๋ํ ์ ๋ณด๋ฅผ ์์ฒญํ๋ฉด ๋ค๋ฅธ ๋ผ๋ฒจ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ํ์๋ ์ ์์ต๋๋ค.$ kubectl get nodes -o yaml # ะธะปะธ $ kubectl get nodes -o json
์ด๋ ๋ฆฌ์์ค ์ฌ์์ ๋ฐฐ์ฐ๋ ๊ฒ ์ธ์๋ ๋ฆฌ์์ค์ ๋ํด ์์ธํ ์์๋ณผ ์ ์๋ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ค.
4. ํด๋ฌ์คํฐ์ ๋ค์์คํ์ด์ค ๊ฐ์ ์ฝ๊ฒ ์ ํํฉ๋๋ค.
kubectl์ด Kubernetes API์ ์์ฒญํ ๋ ๋จผ์ kubeconfig ํ์ผ์ ์ฝ์ด ์ฐ๊ฒฐ์ ํ์ํ ๋ชจ๋ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก kubeconfig ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ~/.kube/config
. ์ผ๋ฐ์ ์ผ๋ก ์ด ํ์ผ์ ํน์ ๋ช
๋ น์ผ๋ก ์์ฑ๋๊ฑฐ๋ ์
๋ฐ์ดํธ๋ฉ๋๋ค.
์ฌ๋ฌ ํด๋ฌ์คํฐ๋ก ์์ ํ ๋ kubeconfig ํ์ผ์๋ ๋ชจ๋ ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐํ๊ธฐ ์ํ ์ค์ ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์์ ์ค์ธ ํด๋ฌ์คํฐ๋ฅผ kubectl ๋ช ๋ น์ ์๋ ค์ฃผ๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
ํด๋ฌ์คํฐ ๋ด์์ ์ฌ๋ฌ ๋ค์์คํ์ด์ค(๋ฌผ๋ฆฌ์ ํด๋ฌ์คํฐ ๋ด์ ๊ฐ์ ํด๋ฌ์คํฐ ์ ํ)๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. Kubectl์ ๋ํ kubeconfig ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉํ ๋ค์์คํ์ด์ค๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ์ด๋ kubectl ๋ช ๋ น์ ์ด๋ค ๋ค์์คํ์ด์ค๋ฅผ ์ฌ์ฉํ ์ง ์๋ ค์ค ๋ฐฉ๋ฒ๋ ํ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ด๋ฒ ์ฅ์์๋ ์ด๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง, ์ด๋ป๊ฒ ํจ๊ณผ์ ์ผ๋ก ์๋ํ๊ฒ ๋ง๋๋์ง์ ๋ํด ์ค๋ช ํ๊ฒ ์ต๋๋ค.
KUBECONFIG ํ๊ฒฝ ๋ณ์์ ์ฌ๋ฌ ๊ฐ์ kubeconfig ํ์ผ์ด ๋์ด๋์ด ์์ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์ด๋ฌํ ๋ชจ๋ ํ์ผ์ ๋ฐํ์ ์ ํ๋์ ๊ณตํต ๊ตฌ์ฑ์ผ๋ก ๊ฒฐํฉ๋ฉ๋๋ค. ๋งค๊ฐ๋ณ์๋ก kubectl์ ์คํํ์ฌ ๊ธฐ๋ณธ kubeconfig ํ์ผ์ ๋ณ๊ฒฝํ ์๋ ์์ต๋๋ค. --kubeconfig
. ๋ณด๋ค
kubeconfig ํ์ผ
kubeconfig ํ์ผ์ ์ ํํ ๋ฌด์์ด ํฌํจ๋์ด ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ณด์๋ค์ํผ kubeconfig ํ์ผ์๋ ์ผ๋ จ์ ์ปจํ
์คํธ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ปจํ
์คํธ๋ ์ธ ๊ฐ์ง ์์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ํด๋ฌ์คํฐ โ ํด๋ฌ์คํฐ ์๋ฒ์ API URL์ ๋๋ค.
- ์ฌ์ฉ์ - ํด๋ฌ์คํฐ์ ์ฌ์ฉ์ ์ธ์ฆ ์๊ฒฉ ์ฆ๋ช ์ ๋๋ค.
- ๋ค์์คํ์ด์ค - ํด๋ฌ์คํฐ์ ์ฐธ๊ฐํ ๋ ์ฌ์ฉ๋๋ ๋ค์์คํ์ด์ค์ ๋๋ค.
์ค์ ๋ก๋ kubeconfig์์ ํด๋ฌ์คํฐ๋น ํ๋์ ์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ฉ์ ๋๋ ๋ค์์คํ์ด์ค๋ก ๊ตฌ๋ณ๋๋ ํด๋ฌ์คํฐ๋น ์ฌ๋ฌ ์ปจํ ์คํธ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๋ค์ค ์ปจํ ์คํธ ๊ตฌ์ฑ์ ์ผ๋ฐ์ ์ด์ง ์์ผ๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ํด๋ฌ์คํฐ์ ์ปจํ ์คํธ ๊ฐ์ ์ผ๋์ผ ๋งคํ์ด ์์ต๋๋ค.
์ธ์ ๋ ์ง ์ปจํ ์คํธ ์ค ํ๋๊ฐ ํ์ฌ ์ํ์ ๋๋ค.
kubectl์ ๊ตฌ์ฑ ํ์ผ์ ์ฝ์ ๋ ํญ์ ํ์ฌ ์ปจํ
์คํธ์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ์์ ์์์ kubectl์ Hare ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
๋ฐ๋ผ์ ๋ค๋ฅธ ํด๋ฌ์คํฐ๋ก ์ ํํ๋ ค๋ฉด kubeconfig ํ์ผ์์ ํ์ฌ ์ปจํ ์คํธ๋ฅผ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
์ด์ kubectl์ด Fox ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
๋์ผํ ํด๋ฌ์คํฐ์ ๋ค๋ฅธ ๋ค์์คํ์ด์ค๋ก ์ ํํ๋ ค๋ฉด ํ์ฌ ์ปจํ ์คํธ์ ๋ํ ๋ค์์คํ์ด์ค ์์์ ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
์์ ์์์ kubectl์ Fox ํด๋ฌ์คํฐ์ Prod ๋ค์์คํ์ด์ค(์ด์ ์ Test ๋ค์์คํ์ด์ค๊ฐ ์ค์ ๋จ)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
kubectl์ ์ต์
๋ ์ ๊ณตํฉ๋๋ค. --cluster
, --user
, --namespace
ะธ --context
, kubeconfig์ ์ค์ ๋ ๋ด์ฉ์ ๊ด๊ณ์์ด ๊ฐ๋ณ ์์์ ํ์ฌ ์ปจํ
์คํธ ์์ฒด๋ฅผ ๋ฎ์ด์ธ ์ ์์ต๋๋ค. ๋ฐ๋ผ๋ณด๋ค kubectl options
.
์ด๋ก ์ ์ผ๋ก๋ kubeconfig์์ ์ค์ ์ ์๋์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ถํธํด์. ์ด๋ฌํ ์์ ์ ๋จ์ํํ๊ธฐ ์ํด ๋งค๊ฐ๋ณ์๋ฅผ ์๋์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋ ๋ค์ํ ์ ํธ๋ฆฌํฐ๊ฐ ์์ต๋๋ค.
kubectx ์ฌ์ฉ
ํด๋ฌ์คํฐ์ ๋ค์์คํ์ด์ค ๊ฐ ์ ํ์ ๋งค์ฐ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ ํธ๋ฆฌํฐ์ ๋๋ค.
์ ํธ๋ฆฌํฐ๋ ๋ช
๋ น์ ์ ๊ณตํฉ๋๋ค kubectx
ะธ kubens
ํ์ฌ ์ปจํ
์คํธ์ ๋ค์์คํ์ด์ค๋ฅผ ๊ฐ๊ฐ ๋ณ๊ฒฝํฉ๋๋ค.
์์ ์ธ๊ธํ๋ฏ์ด ํ์ฌ ์ปจํ ์คํธ๋ฅผ ๋ณ๊ฒฝํ๋ค๋ ๊ฒ์ ํด๋ฌ์คํฐ๋น ํ๋์ ์ปจํ ์คํธ๋ง ์๋ ๊ฒฝ์ฐ ํด๋ฌ์คํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๋ค์์ ์ด๋ฌํ ๋ช ๋ น์ ์คํํ๋ ์์ ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฌํ ๋ช
๋ น์ ์์์ ์ค๋ช
ํ ๋๋ก kubeconfig ํ์ผ์ ํธ์งํฉ๋๋ค.
์ค์นํ๊ธฐ ์ํด์ kubectx
, ๋ค์ ์ง์นจ์ ๋ฐ๋ฅด์ธ์.
๋ ๋ช
๋ น ๋ชจ๋ ์ปจํ
์คํธ ๋ฐ ๋ค์์คํ์ด์ค ์ด๋ฆ์ ์๋ ์์ฑ์ ์ง์ํ๋ฏ๋ก ์ด๋ฆ์ ์์ ํ ์
๋ ฅํ ํ์๊ฐ ์์ต๋๋ค. ์๋ ์์ฑ ์ค์ ์ง์นจ
๋ ๋ค๋ฅธ ์ ์ฉํ ๊ธฐ๋ฅ kubectx
์ด kubectx
. fzf์์ ์ ๊ณตํ๋ ๋ํํ ๋ฌด๋ฃ ๊ฒ์ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋ํํ์ผ๋ก ์ปจํ
์คํธ์ ๋ค์์คํ์ด์ค๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
์ ๋ณ์นญ ์ฌ์ฉ
kubectl์ ์ด๋ฅผ ์ํ ๋ช
๋ น๋ ์ ๊ณตํ๋ฏ๋ก ํ์ฌ ์ปจํ
์คํธ์ ๋ค์์คํ์ด์ค๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐ ๋ณ๋์ ๋๊ตฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์, ํ kubectl config
kubeconfig ํ์ผ์ ํธ์งํ๊ธฐ ์ํ ํ์ ๋ช
๋ น์ ์ ๊ณตํฉ๋๋ค.
๋ค์์ ๊ทธ ์ค ์ผ๋ถ์ ๋๋ค.
kubectl config get-contexts
: ๋ชจ๋ ์ปจํ ์คํธ๋ฅผ ํ์ํฉ๋๋ค.kubectl config current-context
: ํ์ฌ ์ปจํ ์คํธ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.kubectl config use-context
: ํ์ฌ ์ปจํ ์คํธ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.kubectl config set-context
: ์ปจํ ์คํธ ์์๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ฌํ ๋ช ๋ น์ ์ง์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ธธ์ด๊ฐ ๊ธธ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ค์ง ํธ๋ฆฌํ์ง ์์ต๋๋ค. ์คํํ๊ธฐ ์ฌ์ด ์ ๋ณ์นญ์ ๋ง๋ค ์ ์์ต๋๋ค.
kubectx์ ์ ์ฌํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ด๋ฌํ ๋ช ๋ น์ ๊ธฐ๋ฐ์ผ๋ก ๋ณ์นญ ์ธํธ๋ฅผ ๋ง๋ค์์ต๋๋ค. ์ฌ๊ธฐ์์ ์ค์ ๋ก ์๋ํ๋ ๋ชจ์ต์ ๋ณผ ์ ์์ต๋๋ค.
๋ณ์นญ์ fzf๋ฅผ ์ฌ์ฉํ์ฌ ๋ํํ ๋ฌด๋ฃ ์กฐํ ์ธํฐํ์ด์ค(์: kubectx์ ๋ํํ ๋ชจ๋)๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๊ฒ์ ๋น์ ์ด ํ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค
๋ณ์นญ ์์ฒด์ ์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
# ะะพะปััะธัั ัะตะบััะธะน ะบะพะฝัะตะบัั
alias krc='kubectl config current-context'
# ะกะฟะธัะพะบ ะฒัะตั
ะบะพะฝัะตะบััะพะฒ
alias klc='kubectl config get-contexts -o name | sed "s/^/ /;|^ $(krc)$|s/ /*/"'
# ะะทะผะตะฝะธัั ัะตะบััะธะน ะบะพะฝัะตะบัั
alias kcc='kubectl config use-context "$(klc | fzf -e | sed "s/^..//")"'
# ะะพะปััะธัั ัะตะบััะตะต ะฟัะพัััะฐะฝััะฒะพ ะธะผะตะฝ
alias krn='kubectl config get-contexts --no-headers "$(krc)" | awk "{print $5}" | sed "s/^$/default/"'
# ะกะฟะธัะพะบ ะฒัะตั
ะฟัะพัััะฐะฝััะฒ ะธะผะตะฝ
alias kln='kubectl get -o name ns | sed "s|^.*/| |;|^ $(krn)$|s/ /*/"'
# ะะทะผะตะฝะธัั ัะตะบััะตะต ะฟัะพัััะฐะฝััะฒะพ ะธะผะตะฝ
alias kcn='kubectl config set-context --current --namespace "$(kln | fzf -e | sed "s/^..//")"'
์ด๋ฌํ ๋ณ์นญ์ ์ค์ ํ๋ ค๋ฉด ์์ ์ ์๋ฅผ ํ์ผ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ~/.bashrc
๋๋ ~/.zshrc
์์ ์ฌ๋ถํ
ํ์ญ์์ค.
ํ๋ฌ๊ทธ์ธ ์ฌ์ฉ
Kubectl์ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ ๋ช
๋ น๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ์คํ๋๋ ํ๋ฌ๊ทธ์ธ์ ๋ก๋ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด kubectl-foo ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๊ณ ๋ค์ ๋ช
๋ น์ ์คํํ์ฌ ์คํํ ์ ์์ต๋๋ค. kubectl foo
.
์๋ฅผ ๋ค์ด ๋ค์์ ์คํํ์ฌ ์ปจํ
์คํธ์ ๋ค์์คํ์ด์ค๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ํธ๋ฆฌํ ๊ฒ์
๋๋ค. kubectl ctx
์ํฉ์ ๋ฐ๊พธ๊ณ kubectl ns
๋ค์์คํ์ด์ค๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
๋๋ ์ด ์์ ์ ์ํํ๋ ๋ ๊ฐ์ ํ๋ฌ๊ทธ์ธ์ ์์ฑํ์ต๋๋ค.
ํ๋ฌ๊ทธ์ธ ์์ ์ ์ด์ ์น์ ์ ๋ณ์นญ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
์๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํ๋ฌ๊ทธ์ธ์ fzf๋ฅผ ์ฌ์ฉํ์ฌ ๋ํํ ๋ฌด๋ฃ ๊ฒ์ ์ธํฐํ์ด์ค(์: kubectx์ ๋ํํ ๋ชจ๋)๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๊ฒ์ ๋น์ ์ด ํ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค
ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค. chmod +x
. ์ด ํ ์ฆ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. kubectl ctx
ะธ kubectl ns
.
5. ์๋ ๋ณ์นญ์ผ๋ก ์ ๋ ฅ ์ค์ด๊ธฐ
์ ๋ณ๋ช
์ ์
๋ ฅ ์๋๋ฅผ ๋์ด๋ ์ข์ ๋ฐฉ๋ฒ์
๋๋ค. ํ๋ก์ ํธ
800๊ฐ์ ๋ณ์นญ์ ์ด๋ป๊ฒ ๊ธฐ์ตํ์๋์? ํ์ง๋ง ์๋์ ์ ์๋ ๊ฐ๋จํ ๊ตฌ์ฑ์ ๋ฐ๋ผ ๊ตฌ์ถ๋์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ธฐ์ตํ ํ์๋ ์์ต๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค
- kgpooyaml - kubectl์ด ํฌ๋ oyaml ๊ฐ์ ธ์ค๊ธฐ
- ksysgsvcw โ kubectl -n kube-system svc w ๊ฐ์ ธ์ค๊ธฐ
- ksysrmcm -kubectl -n kube-system rm cm
- kgdepallsl - kubectl์ ๋ชจ๋ sl ๋ฐฐํฌ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
๋ณด์๋ค์ํผ ๋ณ์นญ์ ๊ตฌ์ฑ ์์๋ก ๊ตฌ์ฑ๋๋ฉฐ ๊ฐ ๊ตฌ์ฑ ์์๋ kubectl ๋ช ๋ น์ ํน์ ์์๋ฅผ ๋ํ๋ ๋๋ค. ๊ฐ ๋ณ์นญ์๋ ๊ธฐ๋ณธ ๋ช ๋ น, ์์ ๋ฐ ๋ฆฌ์์ค์ ๋ํ ํ๋์ ๊ตฌ์ฑ ์์์ ๋งค๊ฐ ๋ณ์์ ๋ํ ์ฌ๋ฌ ๊ตฌ์ฑ ์์๊ฐ ์์ ์ ์์ต๋๋ค. ์ ๋ค์ด์ด๊ทธ๋จ์ ๋ฐ๋ผ ์ด๋ฌํ ๊ตฌ์ฑ ์์๋ฅผ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ๋จํ "์ฑ์ฐ๊ธฐ"๋ง ํ๋ฉด ๋ฉ๋๋ค.
ํ์ฌ ์ธ๋ถ ๋ค์ด์ด๊ทธ๋จ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ณ์นญ kgpooyamlall์ ๋ค์ ๋ช
๋ น๊ณผ ๋์ผํฉ๋๋ค. kubectl get pods -o yaml --all-namespaces
.
์ต์
์ ์๋์ ์์๋ ์ค์ํ์ง ์์ต๋๋ค. kgpooyamlall
๋ช
๋ น๊ณผ ๋์ผํฉ๋๋ค kgpoalloyaml
.
๋ชจ๋ ๊ตฌ์ฑ ์์๋ฅผ ๋ณ์นญ์ผ๋ก ์ฌ์ฉํ ํ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด k
, kg
, klo
, ksys
, kgpo
๋ํ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ํ ๋ช
๋ น์ค์์ ๋ณ์นญ๊ณผ ์ผ๋ฐ ๋ช
๋ น ๋๋ ์ต์
์ ๊ฒฐํฉํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค
- ๋์ ์
kubectl proxy
๋น์ ์ ์ธ ์ ์์ต๋๋คk proxy
. - ๋์ ์
kubectl get roles
๋น์ ์ ์ธ ์ ์์ต๋๋คkg roles
(ํ์ฌ ์ญํ ๋ฆฌ์์ค์ ๋ํ ๋ณ์นญ์ ์์ต๋๋ค). - ํน์ ํฌ๋์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ป์ผ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
kgpo my-pod โ kubectl get pod my-pod
.
์ผ๋ถ ๋ณ์นญ์๋ ๋ช
๋ น์ค ์ธ์๊ฐ ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ณ์นญ kgpol
๋ฐฉ๋ฒ kubectl get pods -l
. ์ต์
-l
์ธ์(๋ ์ด๋ธ ์ฌ์)๊ฐ ํ์ํฉ๋๋ค. ๋ณ์นญ์ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. kgpol app=ui
.
์ผ๋ถ ๋ณ์นญ์๋ ์ธ์๊ฐ ํ์ํ๋ฏ๋ก ๋ณ์นญ a, f ๋ฐ l์ ๋ง์ง๋ง์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ด ๊ตฌ์ฑํ๋ฅผ ์ตํ๋ฉด ์คํํ๋ ค๋ ๋ช ๋ น์์ ์ง๊ด์ ์ผ๋ก ๋ณ์นญ์ ํ์ํ ์ ์์ด ์ ๋ ฅ ์๊ฐ์ ๋ง์ด ์ ์ฝํ ์ ์์ต๋๋ค.
์ค์น
kubectl-aliases๋ฅผ ์ค์นํ๋ ค๋ฉด ํ์ผ์ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค. ~/.bashrc
๋๋ ~/.zshrc
:
source ~/.kubectl_aliases
์๋ ์์ฑ
์ด์ ์ ๋งํ๋ฏ์ด ๋ช ๋ น์ค์์ ๋ณ์นญ์ ์ถ๊ฐ ๋จ์ด๋ฅผ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์๋ฅผ ๋ค์ด:
$ kgpooyaml test-pod-d4b77b989
kubectl ๋ช ๋ น ์์ฑ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ฆฌ์์ค ์ด๋ฆ๊ณผ ๊ฐ์ ํญ๋ชฉ์ ๋ํด ์๋ ์์ฑ์ ์ฌ์ฉํ์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ณ์นญ์ ์ฌ์ฉํ ๋ ์ด๊ฒ์ด ๊ฐ๋ฅํฉ๋๊น?
์๋ ์์ฑ์ด ์๋ํ์ง ์์ผ๋ฉด ๋ณ์นญ์ ์ด์ ์ค ์ผ๋ถ๋ฅผ ์๊ฒ ๋๋ฏ๋ก ์ด๋ ๋งค์ฐ ์ค์ํ ์ง๋ฌธ์ ๋๋ค.
๋๋ต์ ์ฌ์ฉ ์ค์ธ ์์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
- Zsh์ ๊ฒฝ์ฐ ๋ณ์นญ ์์ฑ ๊ธฐ๋ฅ์ด ์ฆ์ ์๋ํฉ๋๋ค.
- ๋ถํํ๊ฒ๋ Bash์ ๊ฒฝ์ฐ ์๋ ์์ฑ์ด ์๋ํ๋ ค๋ฉด ์ผ๋ถ ์์ ์ด ํ์ํฉ๋๋ค.
Bash์์ ๋ณ์นญ ์๋ ์์ฑ ํ์ฑํ
Bash์ ๋ฌธ์ ์ ์ ๋ณ์นญ์ด ์ฐธ์กฐํ๋ ๋ช ๋ น(์๋ฅผ ๋ค์ด Zsh๊ฐ ์ํํ๋ ๊ฒ์ฒ๋ผ)์ด ์๋๋ผ ๋ณ์นญ์ ์์ฑํ๋ ค๊ณ ์๋ํ๋ค๋ ๊ฒ์ ๋๋ค(Tab์ ๋๋ฅผ ๋๋ง๋ค). 800๊ฐ ๋ณ์นญ ๋ชจ๋์ ๋ํ ์์ฑ ์คํฌ๋ฆฝํธ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋ ์์ฑ์ด ์๋ํ์ง ์์ต๋๋ค.
๊ณํ
๋ค์์์๋ ๋จผ์ ์์ ํ ๋ณ์นญ์ ์ค์นํ๋ ๋ฐฉ๋ฒ๊ณผ ๋ชจ๋ kubectl ๋ณ์นญ์ ๋ํ ์์ฑ ๊ธฐ๋ฅ์ ํ์ฑํํ๋๋ก ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์์ ํ ๋ณ์นญ ์ค์น
์ฐ์ , ์์ ํ ๋ณ๋ช
์ ๋ค์์ ๋ฌ๋ ค ์์ต๋๋ค.
MacOS ์ฌ์ฉ์๋ฅผ ์ํ ์ค์ ์ฐธ๊ณ ์ฌํญ: kubectl ์๋ ์์ฑ ์คํฌ๋ฆฝํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ ํ ๋ณ์นญ์ MacOS์ ๊ธฐ๋ณธ๊ฐ์ธ Bash 3.2์์ ์๋ํ์ง ์์ต๋๋ค. ํนํ ์์ ํ ๋ณ์นญ์ bash-completion v2(brew install bash-completion@2
), ์ต์ํ Bash 4.1์ด ํ์ํฉ๋๋ค. ์ด๋ MacOS์์ ์์ ํ ๋ณ์นญ์ ์ฌ์ฉํ๋ ค๋ฉด ์ต์ ๋ฒ์ ์ Bash๋ฅผ ์ค์นํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค. ~/.bashrc
:
source ~/bash_completion.sh
์ ธ์ ์ฌ๋ถํ ํ๋ฉด ์์ ํ ๋ณ์นญ์ด ์์ ํ ์ค์น๋ฉ๋๋ค.
kubectl ๋ณ์นญ์ ๋ํ ์๋ ์์ฑ ํ์ฑํ
๊ธฐ์ ์ ์ผ๋ก ์์ ํ ๋ณ์นญ์ ๋ํผ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. _complete_alias
. ์ด ํจ์๋ ๋ณ์นญ์ ํ์ธํ๊ณ ๋ณ์นญ ๋ช
๋ น์ ๋ํ ์๋ฃ ํํธ๋ฅผ ๋ฐํํฉ๋๋ค.
ํจ์๋ฅผ ํน์ ๋ณ์นญ๊ณผ ์ฐ๊ฒฐํ๋ ค๋ฉด ๋ด์ฅ๋ Bash ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. _complete_alias
๋ณ์นญ ์์ฑ ํจ์๋ก.
์๋ฅผ ๋ค์ด kubectl ๋ช
๋ น์ ๋ํ๋ด๋ ๋ณ์นญ k๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ค์นํ๊ธฐ ์ํด์ _complete_alias
์ด ๋ณ์นญ์ ๋ํ ๋ณด์ ๊ธฐ๋ฅ์ผ๋ก ๋ค์ ๋ช
๋ น์ ์คํํด์ผ ํฉ๋๋ค.
$ complete -F _complete_alias k
๊ทธ ๊ฒฐ๊ณผ ๋ณ์นญ k๋ฅผ ์๋ ์์ฑํ ๋๋ง๋ค ํจ์๊ฐ ํธ์ถ๋ฉ๋๋ค. _complete_alias
, ๋ณ์นญ์ ํ์ธํ๊ณ ๋ช
๋ น์ ๋ํ ์๋ฃ ํํธ๋ฅผ ๋ฐํํฉ๋๋ค. kubectl
.
๋ ๋ฒ์งธ ์๋ก ๋ณ์นญ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. kg
, ์ด๋ ๋ค์์ ๋ํ๋
๋๋ค. kubectl get
:
$ complete -F _complete_alias kg
์ด์ ์์ ๋ง์ฐฌ๊ฐ์ง๋ก kg์ ์๋ ์์ฑํ๋ฉด ์์ ์ป์ ์ ์๋ ๊ฒ๊ณผ ๋์ผํ ์๋ฃ ํํธ๋ฅผ ์ป๊ฒ ๋ฉ๋๋ค. kubectl get
.
์์คํ ์ ๋ชจ๋ ๋ณ์นญ์ ๋ํด ์์ ํ ๋ณ์นญ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ๋ชจ๋ kubectl ๋ณ์นญ์ ๋ํด ์๋ ์์ฑ์ ํ์ฑํํ๋ ค๋ฉด ๊ฐ ๋ณ์นญ์ ๋ํด ์ ๋ช
๋ น์ ์คํํด์ผ ํฉ๋๋ค. kubectl-aliases๋ฅผ ๋ค์์ผ๋ก ์ค์ ํ ๊ฒฝ์ฐ ๋ค์ ์ค๋ํซ์ ์ด๋ฅผ ์ ํํ๊ฒ ์ํํฉ๋๋ค. ~/.kubectl-aliases
:
for _a in $(sed '/^alias /!d;s/^alias //;s/=.*$//' ~/.kubectl_aliases);
do
complete -F _complete_alias "$_a"
done
์ด ์ฝ๋ ์กฐ๊ฐ์ ~/.bashrc
, ๋ช
๋ น ์
ธ์ ๋ค์ ์์ํ๋ฉด ๋ชจ๋ 800๊ฐ์ kubectl ๋ณ์นญ์ ๋ํด ์๋ ์์ฑ์ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.
6. ํ๋ฌ๊ทธ์ธ์ผ๋ก kubectl ํ์ฅํ๊ธฐ
~๋ถํฐ ์์
๋น์ ์ด ์ต์ํ ๊ฒฝ์ฐ
์ด ์ฅ์์๋ ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ ๋ฐฉ๋ฒ, ํ๋ฌ๊ทธ์ธ์ ์ฐพ์ ์ ์๋ ์์น, ์์ ๋ง์ ํ๋ฌ๊ทธ์ธ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
ํ๋ฌ๊ทธ์ธ ์ค์น
Kubectl ํ๋ฌ๊ทธ์ธ์ ๋ค์๊ณผ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ๊ฐ๋จํ ์คํ ํ์ผ๋ก ๋ฐฐํฌ๋ฉ๋๋ค. kubectl-x
. ์ ๋์ฌ kubectl-
ํ์์ด๋ฉฐ, ๊ทธ ๋ค์ ํ๋ฌ๊ทธ์ธ์ ํธ์ถํ ์ ์๋ ์๋ก์ด kubectl ํ์ ๋ช
๋ น์ด ์ต๋๋ค.
์๋ฅผ ๋ค์ด hello ํ๋ฌ๊ทธ์ธ์ ๋ค์๊ณผ ๊ฐ์ ํ์ผ๋ก ๋ฐฐํฌ๋ฉ๋๋ค. kubectl-hello
.
ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ ค๋ฉด ํ์ผ์ ๋ณต์ฌํด์ผ ํฉ๋๋ค. kubectl-x
PATH์ ์์์ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ ์คํ ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. chmod +x
. ๊ทธ ์งํ์ ๋ค์์ ์ฌ์ฉํ์ฌ ํ๋ฌ๊ทธ์ธ์ ํธ์ถํ ์ ์์ต๋๋ค. kubectl x
.
๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ํ์ฌ ์์คํ ์ ์ค์น๋ ๋ชจ๋ ํ๋ฌ๊ทธ์ธ์ ๋์ดํ ์ ์์ต๋๋ค.
$ kubectl plugin list
์ด ๋ช ๋ น์ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ํ๋ฌ๊ทธ์ธ์ด ์ฌ๋ฌ ๊ฐ ์๊ฑฐ๋ ์คํํ ์ ์๋ ํ๋ฌ๊ทธ์ธ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ์๋ ๊ฒฝ๊ณ ๋ฅผ ํ์ํฉ๋๋ค.
Krew๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ฌ๊ทธ์ธ ์ฐพ๊ธฐ ๋ฐ ์ค์น
Kubectl ํ๋ฌ๊ทธ์ธ์ ์ํํธ์จ์ด ํจํค์ง์ฒ๋ผ ๊ณต์ ํ๊ฑฐ๋ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ค๋ฅธ ์ฌ๋๋ค์ด ๊ณต์ ํ ํ๋ฌ๊ทธ์ธ์ ์ด๋์ ์ฐพ์ ์ ์๋์?
Krew๋ ์ ํํ๊ณ ์ค์นํ ์ ์๋ kubectl ํ๋ฌ๊ทธ์ธ ๋ชฉ๋ก์ ๋๋ค. ๋์์ Krew๋ kubectl์ฉ ํ๋ฌ๊ทธ์ธ์ด๊ธฐ๋ ํฉ๋๋ค.
์ด๋ Krew ์ค์น๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค๋ฅธ kubectl ํ๋ฌ๊ทธ์ธ ์ค์น์ ๋์ผํ๊ฒ ์๋ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์์ธํ ์ง์นจ์ ๋ค์์์ ํ์ธํ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ค์ํ Krew ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
# ะะพะธัะบ ะฒ ัะฟะธัะบะต ะฟะปะฐะณะธะฝะพะฒ
$ kubectl krew search [<query>]
# ะะพัะผะพััะตัั ะธะฝัะพัะผะฐัะธั ะพ ะฟะปะฐะณะธะฝะต
$ kubectl krew info <plugin>
# ะฃััะฐะฝะพะฒะธัั ะฟะปะฐะณะธะฝ
$ kubectl krew install <plugin>
# ะะฑะฝะพะฒะธัั ะฒัะต ะฟะปะฐะณะธะฝั ะดะพ ะฟะพัะปะตะดะฝะตะน ะฒะตััะธะธ
$ kubectl krew upgrade
# ะะพัะผะพััะตัั ะฒัะต ะฟะปะฐะณะธะฝั, ัััะฐะฝะพะฒะปะตะฝะฝัะต ัะตัะตะท Krew
$ kubectl krew list
# ะะตะธะฝััะฐะปะปะธัะพะฒะฐัั ะฟะปะฐะณะธะฝ
$ kubectl krew remove <plugin>
Krew๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ฌ๊ทธ์ธ์ ์ค์นํด๋ ์์์ ์ค๋ช ํ ํ์ค ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ ๋ฐ ๋ฐฉํด๊ฐ ๋์ง ์์ต๋๋ค.
๋ช
๋ น์ด๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์ kubectl krew list
Krew๋ฅผ ์ฌ์ฉํ์ฌ ์ค์น๋ ํ๋ฌ๊ทธ์ธ๋ง ํ์ํ๋ ๋ฐ๋ฉด, ๋ช
๋ น์ kubectl plugin list
๋ชจ๋ ํ๋ฌ๊ทธ์ธ, ์ฆ Krew๋ฅผ ์ฌ์ฉํ์ฌ ์ค์น๋ ํ๋ฌ๊ทธ์ธ๊ณผ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ค์น๋ ํ๋ฌ๊ทธ์ธ์ ๋์ดํฉ๋๋ค.
๋ค๋ฅธ ๊ณณ์์ ํ๋ฌ๊ทธ์ธ ์ฐพ๊ธฐ
Krew๋ ํ์ฌ ์งํ ์ค์ธ ์ ์ ํ๋ก์ ํธ์
๋๋ค.
GitHub ์น์
์ ์ดํด๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋๋ง์ ํ๋ฌ๊ทธ์ธ ์์ฑ
๋น์ ์ ์ค์ค๋ก ํ ์ ์์ต๋๋คkubectl-x
๊ทธ๋ฆฌ๊ณ ์์์ ์ค๋ช
ํ ๋๋ก ์ค์นํฉ๋๋ค.
ํ์ผ์ bash ์คํฌ๋ฆฝํธ, Python ์คํฌ๋ฆฝํธ ๋๋ ์ปดํ์ผ๋ GO ์ ํ๋ฆฌ์ผ์ด์ ์ผ ์ ์์ต๋๋ค. ์ด๋ ์ค์ํ์ง ์์ต๋๋ค. ์ ์ผํ ์กฐ๊ฑด์ ์ด์ ์ฒด์ ์์ ์ง์ ์คํํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
์ง๊ธ ๋ฐ๋ก ์์ ํ๋ฌ๊ทธ์ธ์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ์ด์ ์น์
์์๋ kubectl ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ๊ฐ Pod์ ์ปจํ
์ด๋๋ฅผ ๋์ดํ์ต๋๋ค. ์ด ๋ช
๋ น์ ํธ์ถํ ์ ์๋ ํ๋ฌ๊ทธ์ธ์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ์ฝ์ต๋๋ค. kubectl img
.
ํ์ผ ๋ง๋ค๊ธฐ kubectl-img
๋ค์ ๋ด์ฉ :
#!/bin/bash
kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image'
์ด์ ํ์ผ์ ์คํ ๊ฐ๋ฅํ๊ฒ ๋ง๋์ญ์์ค. chmod +x kubectl-img
PATH์ ์์์ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ญ์์ค. ๊ทธ ์งํ์ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค kubectl img
.
์ธ๊ธํ ๋๋ก kubectl ํ๋ฌ๊ทธ์ธ์ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ๋๋ ์คํฌ๋ฆฝํ
์ธ์ด๋ก ์์ฑ๋ ์ ์์ต๋๋ค. ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํ๋ฌ๊ทธ์ธ ๋ด์์ kubectl์ ์ฝ๊ฒ ํธ์ถํ ์ ์๋ค๋ ์ด์ ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ค์์ ์ฌ์ฉํ์ฌ ์ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๋ ๋ณต์กํ ํ๋ฌ๊ทธ์ธ์ ์์ฑํ ์ ์์ต๋๋ค.
ํ๋ฌ๊ทธ์ธ์ ๊ณต์ ํ๋ ๋ฐฉ๋ฒ
๊ทํ์ ํ๋ฌ๊ทธ์ธ์ด ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ์ ์ฉํ ์ ์๋ค๊ณ ์๊ฐํ๋ค๋ฉด GitHub์์ ์์ ๋กญ๊ฒ ๊ณต์ ํด ์ฃผ์ธ์. ์ฃผ์ ์ ๊ผญ ์ถ๊ฐํ์ธ์
ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํ๋๋ก ์์ฒญํ ์๋ ์์ต๋๋ค.
๋ช ๋ น ์์ฑ
ํ๋ฌ๊ทธ์ธ์ ํ์ฌ ์๋ ์์ฑ์ ์ง์ํ์ง ์์ต๋๋ค. ์ฆ, ํ๋ฌ๊ทธ์ธ์ ์ ์ฒด ์ด๋ฆ๊ณผ ์ธ์์ ์ ์ฒด ์ด๋ฆ์ ์ ๋ ฅํด์ผ ํฉ๋๋ค.
์ด ํจ์์ ๋ํ GitHub kubectl ์ ์ฅ์์๋
ํ์ด์ ๋น์ด ์ !!!
์ฃผ์ ์ ๋ํด ๋ ์ฝ์ ๋ด์ฉ:
Kubernetes์ ์ธ ๊ฐ์ง ์์ค์ ์๋ ํ์ฅ ๋ฐ ์ด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ .๊ตฌํ์ ์ํ ํ ํ๋ฆฟ์ ๊ฐ์ถ ๋ถ๋ฒ ๋ณต์ ์ ์ ์ Kubernetes .Telegram์ Kubernetes ์ฃผ๋ณ ์ฑ๋ .
์ถ์ฒ : habr.com