๐ CKA 1์ผ์ฐจ
๐ Udemy-Certified Kubernetes Administrator (CKA) with Practice Tests 1-17, 273
์ฟ ๋ฒ๋คํฐ์ค๋ ํด๋ผ์ฐ๋ ์ปดํจํฐ ๋ถ์ผ์์ ์ต๊ณ ํธ๋ ๋ ๊ธฐ์ ์ค ํ๋์ด๋ค.
์ฟ ๋ฒ๋คํฐ์ค ๊ตฌ์ง๋ฅ ์ 1๋
์ ๋ณด๋ค 173% ์ด์ ๋น ๋ฅด๊ฒ ์ฆ๊ฐํ๋ค.
์ํ์ ์ค์ฉ์ ์ด๊ณ ์ค๋ฌด์ ์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ์ ์ ์ ์์์ผํ๊ณ ์ถฉ๋ถํ ์ฐ์ตํด์ผ ์ฑ๊ณตํ ์ ์๋ค.
๋จผ์ ๋์ ์์ค์์ ์ํคํ
์ฒ๋ฅผ ์ดํด๋ณด๊ณ ๊ทธ๋ฐ ๋ค์ ๊ฐ๊ฐ์ ๊ตฌ์ฑ ์์๋ก ํ๊ณ ๋ ๋ค.
๊ฐ๊ฐ์ ์ญํ ๊ณผ ์ฑ
์์ ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๋์ง๋ฅผ ๋ณผ ์ ์๋ค.
์ฟ ๋ฒ๋คํฐ์ค์ ๋ชฉ์ ์ ์๋ํ๋ ๋ฐฉ์์ผ๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ ์ปจํ
์ด๋ ํ์์ผ๋ก ํธ์คํธํ๋ ๊ฒ
์ด๋ค.
๊ทธ๋์ผ ์๊ตฌ์ ๋ฐ๋ผ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ง์ ์ธ์คํด์ค๋ฅผ ์ฝ๊ฒ ๋ฐฐํฌํ ์ ์๊ณ ์์ฉ ํ๋ก๊ทธ๋จ ๋ด ๋ค์ํ ์๋น์ค ๊ฐ์ ํต์ ์ด ์ฝ๊ฒ ๊ฐ๋ฅํ๋ค.
๋ง์คํฐ ๋
ธ๋๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ์๋ก ๋ค๋ฅธ ๋
ธ๋์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์ด๋ค ์ปจํ
์ด๋๊ฐ ์ด๋๋ก ๊ฐ์ง๋ฅผ ๊ณํํ๊ณ ๋
ธ๋์ ์ปจํ
์ด๋๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๋ฑ๋ฑ์ ์ฑ
์์ง๋ค.
๋ง์คํฐ ๋
ธ๋๋ ์ปจํธ๋กค ํ๋ ์ธ ๊ตฌ์ฑ ์์๋ก ์๋ ค์ง ๊ตฌ์ฑ ์์ ์งํฉ์ ์ฌ์ฉํด์ ์ด ๋ชจ๋ ์ผ์ ๋ค ํ๋ค.
ETCD๋ ํค ๊ฐ ํ์์ผ๋ก ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ค.
์ค์ผ์ฅด๋ฌ๋ ์ปจํ ์ด๋ ๋ฆฌ์์ค ์๊ตฌ์ฌํญ์ด๋ ์์ปค ๋ ธ๋ ์ฉ๋ ํน์ ๋ค๋ฅธ ์ ์ฑ ์ด๋ ์ ์ฝ ์กฐ๊ฑด๋ค ๋ฑ์ ๊ทผ๊ฑฐํด์ ์ปจํ ์ด๋๋ฅผ ์ค์นํ๊ธฐ ์ํ ์ฌ๋ฐ๋ฅธ ๋ ธ๋๋ฅผ ์๋ณํ๋ค.
์ปจํธ๋กค๋ฌ๊ฐ ์์ด์ ๋ค์ํ ์์ญ์ ๊ด๋ฆฌํ ์ ์๋ค. ๋ ธ๋ ์ปจํธ๋กค๋ฌ๊ฐ ๋ ธ๋๋ฅผ ๊ด๋ฆฌํ๊ณ ์ ๋ ธ๋๋ฅผ ํด๋ฌ์คํฐ์ ์จ๋ณด๋ฉํ๊ณ ๋ ธ๋๊ฐ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ๊ฑฐ๋ ํ๊ดด๋๋ ์ํฉ์ ์ฒ๋ฆฌํ๋ค. ๋ณต์ ์ปจํธ๋กค๋ฌ๋ ์ํ๋ ์ปจํ ์ด๋ ์๊ฐ ๋ณต์ ๊ทธ๋ฃน์์ ํญ์ ์คํ๋๋๋ก ๋ณด์ฅํ๋ค.
Kube API ์๋ฒ๋ ํด๋ฌ์คํฐ ๋ด์์ ๋ชจ๋ ์์
์ ์ค์ผ์คํธ๋ ์ด์
ํ๋ค.
ํด๋ฌ์คํฐ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ๋ค๋ฅธ ๋
ธ๋์ ํต์ ํ๋ค.
๋ง์คํฐ ๋
ธ๋์ ์ ์ฒด ๊ด๋ฆฌ ์์คํ
์ ํ์ฑํ๋ ๋ค์ํ ๊ตฌ์ฑ์์๋ ์ปจํ
์ด๋ ํํ๋ก ํธ์คํธ๋ ์ ์๋ค.
DNS ์๋น์ค ๋คํธ์ํน ์๋ฃจ์
์ ์ปจํ
์ด๋ ํํ๋ก ๋ฐฐํฌ๋ ์ ์๋ค.
๊ทธ๋์ ์ปจํ
์ด๋๋ฅผ ์คํํ ๋ฐํ์ ์์ง์ธ Docker๊ฐ ํ์ํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ containerd, cri-o, runc ๋ฑ ๋ค์ํ ๋ฐํ์
์์ง์ ์ง์ํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค์์ Dockershim๊ฐ ์ฌ์ฉ ์ค์ง ๋๋ฉด์ ์ฟ ๋ฒ๋คํฐ์ค๋ 1.20๋ถํฐ ๋์ปค๋ฅผ ์ง์ํ์ง ์๋๋ค. ์ฟ ๋ฒ๋คํฐ์ค๋ ์ปจํ
์ด๋ ๋ฐํ์๊ณผ ํต์ ํ ๋ CRI๋ผ๋ ํ์ค ์ธํฐํ์ด์ค API ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ cri-o ์ containerd๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
kubelet์ ํด๋ฌ์คํฐ์ ๊ฐ ๋ ธ๋์์ ์คํ๋๋ ์์ด์ ํธ์ด๋ค. KubeAPI ์๋ฒ์ ์ง์๋ฅผ ๋ฃ๊ณ ํ์ํ๋๋ก ๋ ธ๋์์ ์ปจํ ์ด๋๋ฅผ ๋ฐฐํฌํ๊ฑฐ๋ ํ๊ดดํ๋ค. KubeAPI ์๋ฒ๋ ๋ ธ๋์ ์ปจํ ์ด๋์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํด ์ฃผ๊ธฐ์ ์ผ๋ก Kubelet์ผ๋ก๋ถํฐ ์ํ ๋ณด๊ณ ์๋ฅผ ๊ฐ์ ธ์จ๋ค.
Kube-proxy๋ ์์ ์ ๋ ธ๋ ๊ฐ์ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค. ๋ํ ์คํ๋๋ ์ปจํ ์ด๋๊ฐ ์๋ก ๋ฟ์ ์ ์๋๋ก ์์ ์ ๋ ธ๋์ ํ์ํ ๊ท์น์ด ์คํ๋๋๋ก ํ๋ค.
์์ฝํ์๋ฉด ๋ง์คํฐ ๋ ธ๋์ ์์ ์ ๋ ธ๋๊ฐ ์๋ค.
๋ง์คํฐ ๋ ธ๋์๋ ETCD Cluster๊ฐ ์์ด์ ํด๋ฌ์คํฐ์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
kube-scheduler๋ ๋ ธ๋์ ์์ฉ ํ๋ก๊ทธ๋จ์ด๋ ์ปจํ ์ด๋์ ์ค์ผ์ค์ ์ง๋ ์ญํ ์ ํ๋ค.
๋ ธ๋ ์ปจํธ๋กค๋ฌ, ๋ณต์ ์ปจํธ๋กค๋ฌ ๋ฑ๋ฑ์ด ์กด์ฌํด์ ๋ค์ํ ์์ญ์ ๊ฐ์ ๊ด๋ฆฌํ๋ค.
Kube API ์๋ฒ๋ ํด๋ฌ์คํฐ ๋ด์ ๋ชจ๋ ์์ ์ ์ค์ผ์คํธ๋ ์ด์ ํ๋ค.์์ ์ ๋ ธ๋์๋ kubelet์ด ์๋๋ฐ Kube API ์๋ฒ์ ์ง์๋ฅผ ๋ฃ๊ณ ์ปจํ ์ด๋์ Kube-proxy๋ฅผ ๊ด๋ฆฌํ์ฌ ํด๋ฌ์คํฐ ๋ด๋ถ์ ์๋น์ค ๊ฐ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
What is ETCD?
ETCD is distributed reliable key-value store that is Simple, Secure & Fast.
ETCD๋ ๊ฐ๋จํ๊ณ ์์ ํ๊ณ ๋น ๋ฅธ, ์ ๋ขฐ์ฑ ์๋ ํค-๊ฐ ๋ถ์ฐ ์ ์ฅ์์ด๋ค.
What is a Key-Value Store?
key-value ์ ์ฅ์๋ ๋ฌธ์๋ ํ์ด์ง์ ํํ๋ก ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค. ๊ฐ ๊ฐ์ธ์ ๋ฌธ์๋ฅผ ํ๋ ๊ฐ๊ณ ๊ทธ ๊ฐ์ธ์ ๊ดํ ๋ชจ๋ ์ ๋ณด๊ฐ ํด๋น ํ์ผ์ ์ ์ฅ๋๋ค. ์ด๋ฐ ํ์ผ์ ์ด๋ค ํ์์ด๋ ๊ตฌ์กฐ๋ก๋ ๋ ์ ์๊ณ ํ ํ์ผ์ ๋ณํ๋ ๋ค๋ฅธ ํ์ผ์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
How to get started quickly?
Github์์ ์ด์ ์ฒด์ ์ ๋ํ ๊ด๋ จ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ค์ด๋ก๋ํด ํ์ด์ง๋ฅผ ๋ฐฐํฌํ๊ณ ์ถ์ถํ ๋ค์ ETCD ์คํ ํ์ผ์ ์คํํ๋ฉด ๊ธฐ๋ณธ๊ฐ์ผ๋ก ํฌํธ 2379
๋ฅผ ๋ฃ๋ ETCD ์๋น์ค๊ฐ ์์ํ๋ค.
ETCD์ ํจ๊ป ์ค๋ ๊ธฐ๋ณธ ํฌ๋ผ์ด์ธํธ๋ ETCD ์ปจํธ๋กค ํด๋ผ์ด์ธํธ์ด๋ค. ETCD ์ ์ด ํด๋ผ์ด์ธํธ๋ ETCD์ ๋ช
๋ น์ค ํด๋ผ์ด์ธํธ์ด๋ค. ํค ๊ฐ์ ์ ์ฅํ๊ณ ํ์ํ ์ ์๋ค.
How to operate ETCD?
// version 2
etcdctl set key1 value1 // key1-value1 ์ ์ฅ
etcdctl get key1 // key1๋ฅผ ๊ฐ๋ value1 ์กฐํ
// version 3
export ETCDCTL_API=3 // API version์ 3์ผ๋ก ์ค์
etcdctl version // version ํ์ธ
etcdctl put key1 value1 // key1-value1 ์ ์ฅ
etcdctl get key1 // key1๋ฅผ ๊ฐ๋ value1 ์กฐํ
ETCD ๋ฒ์ 2๋ 2015๋ 2์์ ์ถ์๋์๋๋ฐ 2017๋ 1์์ 3๋ฒ์งธ ๋ฒ์ ์ด ์ถ์๋์๋ค. ๋ฒ์ 2๋ ๋ง์ด ์ฌ์ฉ๋๊ณ ๋ฒ์ 3์๋ ๋ง์ ๋ณํ๊ฐ ์์๋ค. ์ฆ, etcdctl ๋ช ๋ น์ด๋ ๋ฐ๋์๋ค.
Later:
์ฟ ๋ฒ๋คํฐ์ค์์ ETCD์ ์ญํ ์ ๋ํด ์์๋ณด์.
ETCD ์ ์ฅ์๋ ํด๋ฌ์คํฐ์ ๋ํ ์ ๋ณด(Nodes, PODs, Configs, Secrets, Accounts, Roles, Bindings, Others)๋ฅผ ์ ์ฅํ๋ค. ํด๋ฌ์คํฐ์ ๋ณํ๋ฅผ ์ค ๋๋ง๋ค ETCD์ ๋ฐ์๋๋ฉฐ ETCD์ ๋ฐ์๋์ด์ผ ๋ณํ๊ฐ ์๋ฃ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค ๋ฐฐํฌ์๋ ๋ ๊ฐ์ง ์ ํ์ด ์๋ค.
ํ๋๋ ์ฒ์๋ถํฐ ๋ฐฐํฌํ๋ ๊ฒ์ด๊ณ ๋ค๋ฅธ ํ๋๋ kubeadm ๋๊ตฌ๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด๋ค. ๋ ๋ฐฉ๋ฒ์ ์ฐจ์ด์ ์ ์๋ ๊ฒ์ด ์ข๋ค.
ํด๋ฌ์คํฐ๋ฅผ ์คํฌ๋์น์์ ์
์
ํ๋ ๊ฒฝ์ฐ, ๊ธฐํ ๋ฑ๋ฑ์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ง์ ๋ค์ด๋ก๋ํด์ ๋ฐฐํฌํ๋ค.
๋ง์คํฐ ๋
ธ๋์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ค์นํ๊ณ ์๋น์ค๋ก์ ๊ตฌ์ฑํ๋ค.
์๋น์ค์๋ ๋ง์ ์ ํ์ง๊ฐ ์๋ค. ๊ทธ ์ค ์๋น์๊ฐ ์ธ์ฆ์์ ๊ด๋ จ ์๋ค.
--advertise-client-urls
๋ ETCD๊ฐ ๋ฃ๋ ์ฃผ์์ด๋ค.
kubeadm์ ์ด์ฉํด ํด๋ฌ์คํฐ๋ฅผ ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ, kubeadm์ด ๊ทธ ์ธ ๊ธฐํ ์๋ฒ๋ฅผ ๋ฐฐํฌํ๋ค.
kube ์์คํ
๋ค์์คํ์ด์ค์ ์๋ ํ๋๋ก etcd-master๋ฅผ ๋ฐฐํฌํ๋ค.
kubectl exec etcd-master -n kube-system etcdctl get key1
๋ค์ ๋ช
๋ น์ด๋ก etcd ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ์ํ ์ ์๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ ํน์ ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
๋ฃจํธ ๋๋ ํฐ๋ฆฌ๋ ๋ ์ง์คํธ๋ฆฌ๋ก ๊ทธ ์๋์ ๋ค์ํ ์ฟ ๋ฒ๋คํฐ์ค ๊ตฌ์ฑ์ฒด(minions, pods, replicasets, deployments, roles, secrets ๋ฑ)๊ฐ ์๋ค.
๊ณ ๊ฐ์ฉ์ฑ ํ๊ฒฝ์์๋ ํด๋ฌ์คํฐ์ ๋ง์คํฐ ๋
ธ๋๊ฐ ์ฌ๋ฌ๊ฐ์ด๋ค.
๊ทธ๋ผ ๋ง์คํฐ ๋
ธ๋ ์ ์ฒด์ ์ฌ๋ฌ ๊ฐ์ ETCD ์ธ์คํด์ค๊ฐ ํผ์ง๊ฒ ๋๋ค.
์ด ๊ฒฝ์ฐ, ETCD ์ธ์คํด์ค๋ค์ด ์๋ก์ ๋ํด ์๋๋ก ํด์ผ ํ๋ค.
๊ทธ๋ฌ๊ธฐ ์ํด์๋ ETCD ์๋น์ค ๊ตฌ์ฑ์ ์ฌ๋ฐ๋ฅธ ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํด์ผ ํ๋ค.
ETCDCTL์ ETCD์ ์ํธ์์ฉํ๋ ๋ฐ ์ฌ์ฉ๋๋ CLI ๋๊ตฌ์ด๋ค.
ETCDCTL์ 2๊ฐ์ API ๋ฒ์ (๋ฒ์ 2, ๋ฒ์ 3)์ ์ฌ์ฉํ์ฌ ETCD ์๋ฒ์ ์ํธ์์ฉํ ์ ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ฒ์ 2๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ๋์ด ์๋ค.
๊ฐ ๋ฒ์ ์๋ ์๋ก ๋ค๋ฅธ ๋ช
๋ น ์งํฉ์ด ์๋ค.
API ๋ฒ์ ์ ์ค์ ํ๊ธฐ ์ํด์๋ export ETCDCTL_API=3
์ ๊ฐ์ด ํ๊ฒฝ๋ณ์ ETCDCTL_API๋ฅผ ๋ช
์ํ๋ฉด ๋๋ค. API ๋ฒ์ ์ด ์ค์ ๋์ง ์์ ๊ฒฝ์ฐ ๋ฒ์ 2๋ก ์ค์ ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๊ณ ๋ฒ์ 3 ๋ช
๋ น์ด ์๋ํ์ง ์ํค ๋๋ค. ๋ฒ์ 3์ผ๋ก ์ค์ ๋๋ฉด ๋ฒ์ 2์ ๋ช
๋ น์ด ์๋ํ์ง ์๋๋ค.
๊ทธ ์ธ์๋ ETCDCTL์ด ETCD API ์๋ฒ์ ์ธ์ฆํ ์ ์๋๋ก ์ธ์ฆ์ ํ์ผ์ ๊ฒฝ๋ก๋ ์ง์ ํด์ผ ํ๋ค.
Kube-API server๋ ์ฟ ๋ฒ๋คํฐ์ค์ ์ฃผ์ ๊ด๋ฆฌ ๊ตฌ์ฑ ์์์ด๋ค.
kubectl ๋ช
๋ น์ ์คํํ๋ฉด kubectl ์ ํธ๋ฆฌํฐ๊ฐ Kube-API server์ ๋๋ฌํ๋ค.
ํ๋ธ ๊ด๋ฆฌ์๊ฐ ๋จผ์ ์์ฒญ์ ์ธ์ฆํ๊ณ ์ ํจ์ฑ์ ํ์ธํ๋ค. ๊ทธ๋ผ ETCD ํด๋ฌ์คํฐ์์ ๋ฐ์ดํฐ๋ฅผ ํ์ํด ์์ฒญ๋ ์ ๋ณด๋ก ์๋ตํ๋ค. ๊ตณ์ด kubectl ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ ํ์ ์์ด API๋ฅผ ํธ์ถํด๋ ๋๋ค.
- Authenticate User
- Validate Request
- Retrieve data
- Update ETCD
- Scheduler
- Kubelet
์๋ฅผ ๋ค์ด, pod๋ฅผ ์์ฑํด๋ณด์.
curl -X POST /api/v1/namespaces/default/pods ... [other]
์ด ๊ฒฝ์ฐ API ์๋ฒ๋ ๋
ธ๋์ ํ ๋นํ์ง ์๊ณ pod ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
pod๊ฐ ์์ฑ๋์์์ ETCD ์๋ฒ์ ์ฌ์ฉ์์๊ฒ ์
๋ฐ์ดํธํ๋ค.
kube-scheduler๋ ์ง์์ ์ผ๋ก API ์๋ฒ๋ฅผ ๋ชจ๋ํฐํ๊ณ ๋
ธ๋๊ฐ ํ ๋น๋์ง ์์ ์๋ก์ด pod๊ฐ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋๋ค. kube-scheduler๋ ์ pod๊ฐ ์์นํ ์ฌ๋ฐ๋ฅธ ๋
ธ๋๋ฅผ ์๋ณํด์ kube-api server์ ํต์ ํ๋ค.
API ์๋ฒ๋ ํด๋น ์ ๋ณด๋ฅผ ETCD ํด๋ฌ์คํฐ์ ์
๋ฐ์ดํธํ๋ค. API ์๋ฒ๋ ํด๋น ์ ๋ณด๋ฅผ ์์
์ ๋
ธ๋์ kubelet์๊ฒ ์ ๋ฌํ๋ค.
๊ทธ๋ผ kubelet์ ๋
ธ๋์ pod๋ฅผ ์์ฑํ๊ณ ์ปจํ
์ด๋ ๋ฐํ์ ์์ง์๊ฒ ์ง์ํด์ ์ฑ ์ด๋ฏธ์ง๋ฅผ ๋ฐฐํฌํ๋ค. ์๋ฃ๋๋ฉด kubelet์ ์ํ๋ฅผ API ์๋ฒ์๊ฒ ์
๋ฐ์ดํธํ๊ณ API ์๋ฒ๋ ETCD ํด๋ฌ์คํฐ๋ฅผ ์
๋ฐ์ดํธํ๋ค. ๋ณํ๋ฅผ ์๊ตฌํ ๋๋ง๋ค ๋น์ทํ ํจํด์ด ๋ฐ๋ณต๋๋ค.
kube-API server๋ ํด๋ฌ์คํฐ์์ ๋ณ๊ฒฝ์ ์ํด ์ํํด์ผ ํ๋ ๋ชจ๋ ์์
์ ์ค์ฌ์ ์๋ค.
์์ฝํ์๋ฉด kube-API server๋ ์์ฒญ์ ์ธ์ฆ๊ณผ ์ ํจ์ฑ์ ํ์ธํ๊ณ ETCD ์ ์ฅ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ณ ์
๋ฐ์ดํธํ๋ ์ผ์ ํ๋ค. ์ฌ์ค kube-API server๋ ETCD ์ ์ฅ์์ ์ง์ ์ํธ์์ฉํ๋ ์ ์ผํ ๊ตฌ์ฑ์์์ด๋ค. ๋ค๋ฅธ ๊ตฌ์ฑ์์๋ค์ kube-API server์ ์ด์ฉํด ์
๋ฐ์ดํธ๋ฅผ ์ํํ๊ณ ETCD์ ๋ฐ์ํ๋ค.
kube-API server๋ ๋ง์ ๋งค๊ฐ๋ณ์๋ก ์คํ๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค ๊ตฌ์กฐ๋ ๋ค์ํ ๊ตฌ์ฑ ์์๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ์๋ก ํ๋ ฅํ๊ณ ๋ค์ํ ๋ฐฉ์์ผ๋ก ๋ํํ๋ค.
๊ทธ๋์ ๋ค๋ฅธ ๋ถํ์ด ์ด๋ ์๋์ง ์์์ผ ํ๋ค. ์ธ์ฆ, ์น์ธ, ์ํธํ, ๋ณด์์๋ ๋ค์ํ ๋ฐฉ์์ด ์๋ค. ๊ทธ๋์ ์ ํ์ง๊ฐ ๋ง๋ค.
๋ค์๊ฐ ์ธ์ฆ์๋ก ์๋ก ๋ค๋ฅธ ๊ตฌ์ฑ ์์ ๊ฐ์ ์ฐ๊ฒฐ์ ํ๋ณดํ๋ค. ๋ชจ๋ ๋ค์ํ ๊ตฌ์ฑ ์์๋ ์ฐ๊ฒฐ๋ ์ธ์ฆ์๋ฅผ ๊ฐ๊ณ ์๋ค. ๊ธฐ์กด ํด๋ฌ์คํฐ์์ kube-api server์ ์ต์ ์ ์ด๋ป๊ฒ ๋ณผ ์ ์์๊น?
kubeadm ํด๋ก ์ค์ ํ๋ฉด kubeadm์ kube-api server๋ฅผ ๋ง์คํฐ ๋
ธ๋์ kube-system ๋ค์์คํ์ด์ค์ pod๋ก ๋ฐฐํฌํ๋ค. ์ด ๊ฒฝ์ฐ, etc/kubernetes/manifest/kube-apiserver.yaml
๋ช
๋ น์ด๋ฅผ ํตํด pod ์ ์ ํ์ผ์์ ์ต์
์ ํ์ธํ ์ ์๋ค.
kubeadm ํด๋ก ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ, cat /etc/systemd/system/kube-apiserver.service
๋ช
๋ น์ด๋ฅผ ํตํด kube-api server ์๋น์ค๋ฅผ ๋ณด๋ฉด ์ต์
์ ๊ฒ์ฌํ ์ ์๋ค.
Kube Controller-Manager๋ ์ฟ ๋ฒ๋คํฐ์ค์ ๋ค์ํ ์ปจํธ๋กค๋ฌ๋ฅผ ๊ด๋ฆฌํ๋ค.
- Watch Status
- Remediate Situation
controller๋ ์์คํ
๋ด ๋ค์ํ ๊ตฌ์ฑ ์์์ ์ํ๋ฅผ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ ์์คํ
์ ์ฒด๋ฅผ ์ํ๋ ๊ธฐ๋ฅ ์ํ๋ก ๋ง๋๋ ๊ฒ์ด๋ค.
๋
ธ๋ ์ปจํธ๋กค๋ฌ๋ ๋
ธ๋ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ค.
๋ณต์ ์ปจํธ๋กค๋ฌ๋ ๋ณต์ ํ ์ธํธ์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ์ํ๋ ์์ pod๊ฐ ์ธํธ ๋ด์์ ํญ์ ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ํ๋ค.
์ค์ ๋ก ์ฟ ๋ฒ๋คํฐ์ค์๋ ์ด๋ฌํ ์ปจํธ๋กค๋ฌ๊ฐ ํจ์ฌ ๋ ๋ง๋ค.
์ด๋ฌํ ์ปจํธ๋กค๋ฌ๋ค์ Kube Controller Manager๋ผ๋ ํ๋์ ํ๋ก์ธ์ค๋ก ํจํค์งํ๋์ด ์๋ค. ๋ฐ๋ผ์, Kube Controller Manager๋ฅผ ์ค์นํ๋ฉด ๋ค๋ฅธ ์ปจํธ๋กค๋ฌ๋ค๋ ์ค์น๋๋ค.
kubeadm ํด๋ก ์ค์ ํ ๊ฒฝ์ฐ,
cat /etc/kubernetes/manifest/kube-controller-manager.yaml
๋ช
๋ น์ด๋ฅผ ํตํด pod ์ ์ ํ์ผ์์ ์ต์
์ ํ์ธํ ์ ์๋ค.
kubeadm ํด๋ก ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ,
cat /etc/systemd/system/kube-controller-manager.service
๋ช
๋ น์ด๋ฅผ ํตํด ์๋น์ค ์ต์
์ ํ์ธํ ์ ์๋ค.
kube-scheduler๋ pod์ ์ผ์ ๊ด๋ฆฌ๋ฅผ ์ฑ
์์ง๋ค.
kube-scheduler๋ ์ด๋ค pod๊ฐ ์ด๋ค node์ ๋ค์ด๊ฐ์ง๋ง ๊ฒฐ์ ํ๋ค.
pod๋ฅผ node์ ๋๋ ๊ฒ์ด ์๋๋ค. ์ด๋ kubelet์ ์ผ์ด๋ค.
์ฟ ๋ฒ๋คํฐ์ค์์๋ ์ผ์ ๊ด๋ฆฌ์๊ฐ ํน์ ๊ธฐ์ค์ ๋ฐ๋ผ pod๋ฅผ ์ด๋ node์ ๋์์ง ๊ฒฐ์ ํ๋ค.
๋ฆฌ์์ค ์๊ตฌ์ฌํญ์ด ๋ค๋ฅธ pod๊ฐ ์์ ์๋ ์๊ณ ํน์ ์์ฉ ํ๋ก๊ทธ๋จ์ ํ์ ๋ node๊ฐ ์์ ์๋ ์๋ค.
- Filter Nodes
- Rank Nodes
kube-scheduler๋ ๋ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ pod์ ๊ฐ์ฅ ์ ํฉํ node๋ฅผ ์ฐพ๋๋ค.
์ฒซ ๋จ๊ณ์์๋ kube-scheduler๊ฐ pod์ ๋ง์ง ์๋ ๋
ธ๋๋ฅผ ๊ฑธ๋ฌ๋ธ๋ค.
๊ทธ ๋ค์ kube-scheduler๋ pod์ ๊ฐ์ฅ ์ ํฉํ ๋
ธ๋๋ฅผ ํ์ํ๋ค.
์ด๊ฒ์ ์ฌ์ฉ์ ์ง์ ์ด ๋ ์ ์๊ณ ๊ณ ์ ์ ์ค์ผ์ฅด๋ฌ๋ฅผ ์์ฑํ ์๋ ์๋ค.
Scheduler์ ๊ด๋ จํด์ ์ดํด๋ณผ ์ฃผ์ ๊ฐ ์์ฃผ ๋ง๋ค.
kubeadm ํด๋ก ์ค์ ํ ๊ฒฝ์ฐ,
cat /etc/kubernetes/manifest/kube-scheduler.yaml
๋ช
๋ น์ด๋ฅผ ํตํด pod ์ ์ ํ์ผ์์ ์ต์
์ ํ์ธํ ์ ์๋ค.