[k8s] ๊ฐ๋
etcd
etcd ๋ช ๋ น์ ์คํํ๋ฉด, 2379 ํฌํธ๋ฅผ ์์ ํ๋ ์๋น์ค๊ฐ ์คํ๋๋ค. etcdctl์ etcd command line client ์ด๊ณ , key-value ์์ ์กฐํํ๊ฑฐ๋ ์ ์ฅํ๋๋ฐ ์ฌ์ฉํ๋ค. etcs์๋ ํด๋ฌ์คํฐ์์ ์ฌ์ฉํ๋ ์ ๋ณด๋ฅผ ์ ์ฅํ๋๋ฐ, nodes/pods/configs/secrets/accounts/roles/bindings.. ์ ์ ์ฅํ๋ค. ํด๋ฌ์คํฐ์ ๋ณํ๋ฅผ ์ฃผ๊ฒ๋๋ฉด, ๋ชจ๋ ์ ๋ณด๋ค์ etcd ์๋ฒ์ ์ ๋ฐ์ดํธ ๋๋ค.
etcd ์๋ฒ๋ฅผ ๋ฐฐํฌํ๋๋ฐ์๋ 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋๋ฐ, ์ฒ์๋ถํฐ ๋ฐฐํฌํ๋ ๊ฒ ๊ทธ๋ฆฌ๊ณ kubeadm ์ ์ด์ฉํด์ ๋ฐฐํฌํ๋ ๊ฒ์ด ์๋ค.
|
|
advertise-client-url ์ etcd ์๋ฒ๊ฐ listen ํ๊ณ ์๋ ์ฃผ์์ด๋ค.
kubeadm ์ ์ด์ฉํด์ ๋ฐฐํฌํ๋ฉด, etcd ์๋ฒ๋ ํฌ๋๋ก์ ๋ฐฐํฌ๋๋ค.
|
|
์ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด์, etcd ์๋น์ค๊ฐ ๋ฐฐํฌ๋์๋์ง ํ์ธํ ์ ์๋ฐ.
etcd ๊ฐ ๊ด๋ฆฌํ๊ณ ์๋ key ๋ฆฌ์คํธ๋ฅผ ๋ณด๊ธฐ ์ํด์ ๋ค์ ๋ช ๋ น์ด๋ก ํ์ธํ ์ ์๋ค.
|
|
๊ณ ๊ฐ์ฉ์ฑ์ ์ํด, ์ฌ๋ฌ๊ฐ์ ์๋ฒ๋ฅผ ๊ตฌ์ฑํ ๊ฒฝ์ฐ, etcd ๊ฐ ์ฌ๋ฌ ์๋ฒ์ ์กด์ฌํ๊ฒ ๋๋๋ฐ ๋ชจ๋ ์๋ฒ๊ฐ ์๋ก์ ์ธ์คํด์ค์ ๋ํด ์๊ฒ ํด์ผํ๋ค.
kube-api server
kubectl ๋ช ๋ น์ ์ ๋ ฅํ๋ฉด, kube api server ๊ฐ ์์ฒญ์ ๋ํด ์ธ์ฆ์ ํ๊ณ ์ ํจ์ฑ์ ํ๋จํ ํ etcd ์๋ฒ๋ก ๋ถํฐ ์ํ๋ ์๋ต์ ๋ฆฌํดํด์ค๋ค.
kube api server๋ etcd์ ์ง์ ์ํตํ๋ ์ ์ผํ ์๋ฒ์ด๋ค.
- ์ ์ ๋ฅผ ์ธ์ฆ
- ์์ฒญ์ ์ ํจ์ฑ์ ํ์ธ
- ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ฑฐ๋ ์ ๋ฐ์ดํธ
- update etcd
- scheduler
- kubelet
Kube Control Manager
Node Controller,Replication Controller ๋ฑ์ ์๋ง์ ํจํค์ง๋ค์ด ๋ชจ์ฌ์๋ ์งํฉ Kube Control Manager ๋ฅผ ์คํ์ํค๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด ๋ค์ด๋ฐ๊ณ , kube-controller-manager.service๋ฅผ ์คํํ๋ฉด ๋๋ค. wget https://storage.googleapis.com/kubernetes-release/release/v1.13.0/bin/linux/amd64/kube-controller-manager
kube-controller-manager๋ฅผ ์คํํ๊ฒ ๋๋ฉด ๋ง์ ์ต์ ๊ฐ๋ค์ด ์๋๋ฐ ๊ทธ ์ค node-monitor-period/ node-monitor-grace-period/ pod-eviction-timeout ๋ฑ๋ฑ์ด ์๋ฐ. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์ปจํธ๋กค๋ฌ ๋ค์ด ํ์ฑํ๋์ง๋ง, ๋ช๋ช๊ฐ์ ์ปจํธ๋กค๋ฌ๋ฅผ ์คํ์ํฌ์ง ๋ง์ง ์ ํํ๋ ์ต์ ๊ฐ๋ ์๋ค.
์ ๋ฐฉ๋ฒ ๋ง๊ณ ๋, kubeadm ์ผ๋ก๋ ๋ฐฐํฌํ ์ ์๋ค.
kube scheduler
์ด๋ค pod๊ฐ ์ด๋ค node ์ ๋ค์ด๊ฐ์ผ ํ ์ง ๊ฒฐ์ ๋ง ํจ wget https://storage.googleapis.com/kubernetes-release/release/v1.13.0/bin/linux/amd64/kube-scheduler
cat /etc/kubernetes/manifests/kube-scheduler.yaml kubeadm ์ผ๋ก ๋ฐฐํฌํ์ ๋ ์ค์ผ์ฅด๋ฌ ์ต์ ์ ๋ณด๋ ๋ช ๋ น์ด
kublet
pod๋ฅผ ๋ ธ๋์ ์์น ๋ ธ๋์ ํ๋๋ฅผ ๋ชจ๋ํฐ๋ง
kubeadm ์ ๊ธฐ๋ณธ์ ์ผ๋ก kublet์ ์๋์ผ๋ก ๋ฐฐํฌํ์ง ์๋๋ค ๋ฐ๋ผ์ worker node์ kublet์ ์ค์นํด์ผ ํ๋ค.
kube proxy
pod network ๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๋ด์ ์์นํ ๋ด๋ถ ๊ฐ์ ๋ง์ด๋ค. ์ ๋ง์ ์ด์ฉํด์ ๋ชจ๋ ๋ ธ๋๋ค์ pod๋ค์ด ์๋ก ์ฐ๊ฒฐ๋์ด ์๋ค.
kube proxy๋ ๊ฐ๊ฐ์ ๋ ธ๋์ ์ค์น๋์ด ์คํ๋๋ ํ๋ก์ธ์ค๋ค ๋ ธ๋ ๋ด์ ํฌ๋๊ฐ ์์ฑ๋ ๋ ๋ง๋ค kube proxy๋ iptable์ ์ ๋ฐ์ดํธํ์ฌ ํน์ ํธ๋ํฝ์ด ํน์ ๋ ธ๋ ๋ด ํฌ๋๋ก ๊ฐ ์ ์๋๋ก ๋์์ค๋ค.
pods
pod์์ ํ๊ฐ์ ์ปจํ ์ด๋๋ง ๋ค์ด๊ฐ๋๊ฒ ์๋. ๊ทผ๋ฐ ์ค์ผ์ผ์ ํค์ธ ๊ฒฝ์ฐ, ๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ ์ปจํ ์ด๋๋ฅผ ๊ฐ์ง๋ pod๋ฅผ ๋๋ฆผ.
pod ๋ฅผ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ kubectl run nginx –image nginx ์ ๋ช ๋ น์ด๋ ๋ ธ๋ ๋ด์ pod๋ฅผ ์์ฑํ๊ณ pod ๋ด์๋ ๋์ปค ํ๋ธ ๋ ํฌ์งํ ๋ฆฌ์์ ๋ฐ์ nginx ์ด๋ฏธ์ง๊ฐ ์คํ๋๋ ์ปจํ ์ด๋๋ฅผ ์ค์นํ๋ค.
pod๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ํด yaml ํ์ผ์ ์์ฑํ๋๋ฐ ์์ ๋ ๋ฒจ์๋ apiVersion, kind, metadata, spec์ ์ ์ํใท. apiVersion : ๋ณดํต pod๋ฅผ ์์ฑํ ๋ ์ฐ๋ api Version ์ v1 ์ ์ด๋ค. kind: pod / service / replicaSet / deployment ๋ฑ์ด ๋ค์ด๊ฐ๋ค. metadata : name / labels ์ ํ์ ํ๋๋ฅผ ๊ฐ์ง๊ณ , labels๋ app์ด๋ผ๋ ํ์ํ๋๋ฅผ ๊ฐ์ง๋ค. name์ pod์ ์ด๋ฆ์ ์๋ฏธํ๋ค. label์ pod๋ฅผ ์๋ณํ ์ ์๋ ํ๋๊ฐ์ด๋ค. spec ์๋ pod๋ด์ ์์นํ๋ container๊ฐ ์คํํ๋ ์ด๋ฏธ์ง๋ฅผ ์ด๋ค. spec์ ํ์ ํ๋์ธ container๋ listํํ์ด๋ค . ์ด์ ๋ pod๋ด์ ์ฌ๋ฌ๊ฐ์ container๊ฐ ์คํ๋ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ค์์ค์ธ pod ๋ด ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๊ต์ฒดํ๋ ๋ฐฉ๋ฒ kubectl edit ~~ .Yml ํ์ผ ์์
replication controller
replication์ด ํ์ํ ์ด์ ๋ high availability. replication controller ๋ ํฌ๋๊ฐ ์ ์์ ์ผ๋ก ์คํ๋๋๋ก ๋ณด์ฅํ๋ค. ๋ถํ๊ฐ ์ฆ๊ฐํด์ pod๊ฐ ์ฌ๋ฌ ๋ ธ๋์ ๊ฑธ์ณ ์ฆ๊ฐํ๊ฒ ๋๋ฉด, replication controller๋ ๋ถํ๋ฅผ ๋ถ์ฐํ๋ ์ญํ ์ ํ๋ค.
Replication controller ๋ฅผ yaml ํ์ผ์ ์ ์ํ ๋ spec ํ๋ ํ์์ templateํ๋๊ฐ ์กด์ฌํ๋๋ฐ template ํ๋์๋ pod์ ์ ์ํ๋, label / spec์ด ๋ค์ด๊ฐ๋ค. ์ถ๊ฐ๋ก replica set์ ๋ช๊ฐ ์ด์ฉํ ๊ฑด์ง์ ๋ํ ์ ์๋ฅผ ํ๋ ํ๋๋ spec.replicas = #replica๋ก ์์ฑํ๋ฉด ๋๋ค.
ํ์ฌ ํด๋ฌ์คํฐ์ ๋ฌด์จ replication controller๊ฐ ๊ตฌ์ฑ๋์๋์ง ํ์ธํ๋ ค๋ฉด, kubectl get replicationcontroller ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
Replica set
replica set์ yaml์ ์ ์ํ ๋ apiVersion = apps/v1 ์ผ๋ก ์ ์ํ๋ค. spec์ replication controller spec ์ ์ ์ํ ๊ฒ๊ณผ ๋น์ทํ๊ฒ ๊ตฌ์ฑํ๋ค. replica set์ spec ํ๋์๋ replication controller์ ๋ค๋ฅธ์ ์ด ์๋๋ฐ selector ํ๋๊ฐ ํ์ํ๋ค.( replication controller ์์๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.)
Replica set ์ replication controller ์ ๋ค์๋ฒ์ ์ผ๋ก, ๋ ์ธ๋ฐํ๊ฒ ํ๋ ์งํฉ์ ์ ํํ ์ ์๋ค. ์์ฆ์์๋ replication controller๋ณด๋ค๋ replication Set์ด๋ ๊ทธ๋ณด๋ค ๋ ์ถ์ํ๋ deployment๋ฅผ ์ฌ์ฉํ๋ค.
replicas์ ์ซ์๋ฅผ ๊ต์ฒดํ๋ ๋ฐฉ๋ฒ์๋ ๋ค์ ๋ฐฉ๋ฒ์ด ์๋ค.
1.replicaset-def.yaml ํ์ผ ์์ -> kubectl replace -f replicaset-def.yaml
- kubectl scale –replicas=6 -f replicaset-def.yaml
pod container ์ด๋ฏธ์ง๋ฅผ ๋ณ๊ฒฝํ๊ณ kubectl ๋ช ๋ น์ด๋ก ์ ์ฉํด๋ ์ด๋ฏธ ์คํ์ค์ธ ์ด๋ฏธ์ง๋ ๋ฐ๋์ง ์๋๋ค. kubectl edit -f ~~.yml ๋ก ๋ณ๊ฒฝํ๊ณ ์ถ์ ๋ถ๋ถ์ ๋ณ๊ฒฝํ ํ, kubectl delete pods […pods name] ์ ํตํด์ ๋ชจ๋ pod๋ฅผ ์ ๊ฑฐํด์ค๋ค.
deployments
deployment๋ Replicaset์ ์ถ์ํ ํ ๊ฒ์ผ๋ก, ๋ฐฐํฌ ๊ณผ์ ์์ ๋ฐฐํฌ๋ฅผ ์ค์งํ๊ฑฐ๋, ๋กค๋ฐฑํ๊ฑฐ๋ ๋ฑ์ ํ ์ ์๋ค. definition.yml์ replicaset๊ณผ ๋น์ทํ๊ณ , kind: Deployment๋ก ํด์ฃผ๋ฉด ๋๋ค.
Services
๋ฐฑ์๋/ํ๋ก ํธ์๋ ํฌ๋๊ฐ์ ์ฐ๊ฒฐ ๋๋ ์ฌ์ฉ์์์ ์ฐ๊ฒฐ ๋๋ ๋ฐ์ดํฐ ์์ค์์ ์ฐ๊ฒฐ์ ์ ๊ณตํ๋ค.
์น์ฑ์ ๋ฐฐํฌํ์ ๋ ์ธ๋ถ์ฌ์ฉ์๊ฐ ์ด๋ป๊ฒ ์ ๊ทผํ๋์ง? ssh ๋ก ๋ ธ๋์ ์ ์ํด์, curl ๋ช ๋ น์ด๋ก ์ดํ๋ฆฌ์ผ์ด์ ์ด ๋์ด์ง pod์ ๋ด๋ถ ip ๋ก ์์ฒญ์ ๋ณด๋ด๋ฉด ๋๋๋ฐ ์ด๊ฑด ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ด ์๋. ๊ทธ๋์ ์ฐ๋ฆฌ๋ service๋ฅผ ์ฌ์ฉํ๋๋ฐ, ํน์ ํฌํธ๋ฅผ ๋ฆฌ์จํ๊ณ ์๋ค๊ฐ ์์ฒญ์ด ์ค๊ฒ๋๋ฉด ํด๋น ์์ฒญ์ ํน์ pod๋ก ์์ฒญํด์ ์ํ๋ ์๋ต์ ๋ฐ์ ์ ์์
์๋น์ค์ ์ ํ
- nodePort: ์๋น์ค๊ฐ ๋ด๋ถ ํฌํธ๋ฅผ ๋ ธ๋์ ํฌํธ์ ์์ธ์คํ ์ ์๊ฒ ํด์ค
๋ ธ๋ ์์ฒด์ ์ธ๋ถ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ ํฌํธ๊ฐ ์์ ์ด๋ฆ nodePort๋ผ๊ณ ํจ. nodeport ๋ 30000~32767์ ๊ฐ์ ๊ฐ๊ณ ์์. ์๋น์ค๋ ์ด nodePort๋ฅผ ๋ฆฌ์จํ๊ณ ์๊ณ ์๋น์ค ํฌํธ(port)์ pod์ ๋ด๋ถํฌํธ(targetPort)๋ฅผ ์ฐ๊ฒฐํจ
์๋น์ค yaml์ spec์๋ type, ports ๊ฐ ์์ ์ ๊ทธ๋ฆผ๊ณผ ๋๊ฐ์ด ๊ตฌ์ฑํ๋ค๋ฉด, Type: NodePort / ports.targetPort : 80, ports.port:80, ports.nodePort:30008 ์ด ๋จ ports๋ array ํ์ ์
์๋น์ค์ pod๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฐ๋ ์ค์ ํด์ค์ผ ๋. pod์๋ label์ด ๋ถ์ฌ๋์์ํ ๋, selector๋ฅผ ์ด์ฉํด์ ํด๋น pod ์ ๋ณด๋ฅผ ์๋น์ค ์ค์ ํ์ผ์ ๋ฃ์ด์ฃผ๋ฉด ๋จ
๋ถํ ๋ถ์ฐ ๋ชฉ์ ์ผ๋ก node ๋ด์ ์ฌ๋ฌ๊ฐ์ pod๊ฐ ์์ฑ๋์ด ์๋ค๋ฉด, ๊ฐ๊ฐ์ pod๋ ๋๊ฐ์ label์ ๊ฐ์ง๊ณ ์์ด์ผํ๊ณ ๊ทธ label์ service๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด๋จ
๋ง์ฝ ์ฌ๋ฌ๊ฐ์ node์ ๋ถ์ฐํ๊ฒ ๋๋ฉด, ์ฟ ๋ฒ๋คํฐ์ค๋ ์๋น์ค๋ฅผ ์ด์ฉํด์ ์ฌ๋ฌ ๋ ธ๋์ ๊ฑธ์ณ ํด๋น ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ๊ด๋ฆฌํ๋ค.
- clusterIp: ๋ด๋ถ ํฌ๋๊ฐ์ commnuication ์ ๊ฐ๋ฅํ๊ฒ ํจ
๋ชจ๋ pod๋ ip๊ฐ ํ ๋น๋์ด ์๋ค. ์ด IP๋ค์ ์ ์ ์ด ์๋. pod๊ฐ ์ ๊ฑฐ๋๊ฑฐ๋ ์ถ๊ฐ๋๋ฉด ๋ฐ๋๊ธฐ ๋๋ฌธ์ ์์กดํ ์ ์๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ ์๋น์ค๋ฅผ ํตํด, pod๋ฅผ ๊ทธ๋ฃน์ผ๋ก ์ง๊ณ ๋จ์ผ ์ ๊ทผ๊ฐ๋ฅํ ๋จ์ผ interface๋ฅผ ์ ๊ณตํ๋ค. ์ด ๋จ์ผ ์ง์ ์ ์ clusterIP๋ผ๊ณ ํ๋ค. ์ฌ๋ฌ ๊ณ์ธต์ ๊ตฌ์ฑ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ด๋ผ๋ฉด, ํ๋ก ํธ์๋์์ ๋ฐฑ์๋๋ก ์ ๊ทผํ๊ธฐ ์ํด์ , ๋ฐฑ์๋์ clusterIP๋ก ์ ๊ทผํด์ผ ํ๋ค.
clusterIP๋ฅผ ์์ฑํ๊ธฐ ์ํด์ , spec.type: ClusterIP๋ฅผ ์์ฑํ๊ณ , selector๋ก pod.label์ ์ง์ ๋ ๊ฐ๋ค์ ๊ฐ์ ธ์จ๋ค. ์ถ๊ฐ๋ก, spec์๋ pod์ ๋ ธ์ถ ํฌํธ์ธ targetPort / ์๋น์ค์ ํฌํธ์ธ port ๊ฐ์ ์ง์ ํด์ค์ผ ํ๋ค.
- load balancer
namespaces
๊ฐ๊ฐ์ namespace์๋ policy๋ฅผ ์ ์ํ ์ ์๋ค. ๋ค๋ฅธ ์๋น์ค์ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ๊ทผํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํด์ผ๋จ service-name.namespace.service.domain
๋ค๋ฅธ namespace์ ์์นํ pod๋ฅผ ์ด๊ฑฐํ๋ ค๋ฉด, kubectl get pods –namespace= ?
ํน์ pod๋ฅผ ์ ์ํ ๋ namespace๋ฅผ ์ ์ํ๋ ค๋ฉด , metadata.namespace์ ์ ์ํ๋ฉด ๋๋ค.
namespace ์์ฒด๋ฅผ ์์ฑํ๋ ค๋ฉด kubectl create namespace []
ํน์ namespace๋ฅผ ํ์ฌ context๋ก ์ฎ๊ฒจ์ค๊ธฐ ์ํด์ (–namespace option ์์ด ์ฐ๋ ค๋ฉด) kubectl config set-context $(kubectl config current-context) –namespace=??
๋ชจ๋ namespace ์ ์์นํ pod๋ฅผ ๋ณด๋ ค๋ฉด kubectl get pods –all-namespace
namespace์์ ๋ฆฌ์์ค ํ ๋น๋์ ์ ์ดํ๋ ค๋ฉด, quota ํ์ผ์ ์์ฑํ๋ฉด ๋๋ค.
Scheduler
์ค์ผ์ฅด๋ฌ๋, pod๋ฅผ ์์ฑํ ๋, nodeName์ด๋ ๊ฑธ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์๋์ผ๋ก ์ง์ ํด์ค. ์ค์ผ์ฅด๋ฌ๊ฐ ์๋ค๋ฉด, pod๋ pending ์ํ์. ๊ทธ๋์ pod๋ฅผ ์์ฑํ ๋ nodeNameํ๋๋ฅผ ์ง์ ํด์ค์ผ๋ nodeName์ ์์ฑ ์์๋ง ํ ๋นํ ์ ์์. ์ด๋ฏธ ์์ฑ๋ pod์ nodeName์ ๋ณ๊ฒฝ๋ชปํจ nodeName์ ์ง์ ํด์ฃผ๊ณ ๋๋ฉด, binding api ์ ์์ฑํ binding ๊ฐ์ฒด์ ๋ํ ์ ๋ณด๋ฅผ json ํฌ๋งท์ผ๋ก ์ ์กํด์ผ๋
labels and selector
label ์ env=dev๋ผ๊ณ ์ง์ ํ pod๋ฅผ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ kubectl get pods –selector env=pod
label์ env=prod ์ธ ๋ชจ๋ ๋ฆฌ์์ค์ ๊ฐฏ์๋ฅผ ํ์ธํ๋ ๋ฐฉ๋ฒ kubectl get all –selector env=prod –no-headers | wc -l
selector ๋ก ์ฌ๋ฌ๊ฐ์ label์ ๊ฒ์ฌํ๋ ๊ฒฝ์ฐ kubectl get all –selector env=prod,bu=finance,…
taint and tolerant
pod๊ฐ node์ ๋ฐฐ์น๋ ๋ ์ด๋ค ์ ์ฝ์ ๊ฐ์ง๊ณ ๋ฐฐ์น๋๋ ๊ฒ์ ์๋ฏธ taint๋ ํน์ label์ ๊ฐ์ง pod๋ง ๋ฐฐ์น๋๊ฒ ํ๋ ๊ฑฐ๊ณ , tolerant ๋ taint๋ฅผ ๊ฐ์ง ๋ ธ๋์ pod๊ฐ ๋ฐฐ์น๋๋ ค๊ณ ํ ๋ ๋ด์ฑ์ ์ค์ ํน์ taint๋ฅผ ๊ฐ์ง node๋ผ๋ pod๊ฐ ๋ฐฐ์น๋ ์ ์๊ฒ ํ๋ ๊ฒ์ ์๋ฏธ
node์ taint๋ฅผ ์ถ๊ฐํ๋ ์ฝ๋
kubectl taint nodes [node-name] key=value:[NoSchedule, PreferNoSchedule, NoExecute]
๋ง์ฝ kubectl taint node node1 color=blue:NoSchedule ๋ช ๋ น์ ์ด์ฉํด, node1์ color=blue๋ผ๋ taint๋ฅผ ์์ฑํ๋ค๋ฉด, ํด๋น ๋ ธ๋์ ๋ด์ฑ์ ๊ฐ์ง๋ pod๋ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์๋ค.
|
|
์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์, double quote๋ก ๊ฐ์ ์ ๋ ฅํด์ผ ๋๋ค๋ ๊ฒ์ด๋ค.
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๊ฐ ๊ตฌ์ฑ๋๋ฉด, ์ฟ ๋ฒ๋คํฐ์ค๋ master node์ ๊ทธ ์ด๋ค pod๋ ์ ๊ทผํ์ง ๋ชปํ๋๋ก taint๋ฅผ ๋ถ์ฌํ๋ค.
node์์ taint ์ ๊ฑฐํ๊ธฐ
kubectl taint node controlplane node-role.kubernetes.io/control-plane:NoSchedule-
Node selector & node affinity
kubectl label nodes [node-name] [key=value] ๋ก node์ label์ ๋ถ์ฌํ๊ฒ ๋๋ฉด, pod๊ฐ ์ค์ผ์ฅด๋ฌ์ ์ํด node์ ๋ฐฐ์น๋ ๋ ํน์ label์ ๊ฐ์ง node์๋ง ํ ๋น๋๊ฒ ํ ์ ์๋ค. spec.nodeSelector -> ๋ ธ๋์ ์ง์ ํ key-value ์
node selector๋ ๊ทผ๋ฐ ํ๊ณ๊ฐ ์์. ์๋ฅผ ๋ค์ด, ํน์ label์ด ์๋ node์๋ง ํ ๋นํ๋ค๊ฑฐ๋ ํ ๋๋ node selector๋ก ๊ตฌํํ ์ ์์
๊ทธ๋์ ์๊ฒจ๋๊ฒ node affinity
node affinity๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ expression์ ์ฌ์ฉํ ์ ์์,
๋ง์ฝ, ํน์ label์ ๋ํ ์ ํธ๋๋ฅผ ๊ฐ์ง ๋ ธ๋๋ก pod๋ฅผ ํ ๋นํ๋ผ๊ณ ์ ์ํ ํ, ๋์ค์ ํด๋น node์ label์ ๋ณ๊ฒฝํ๋ฉด ์ด๋ฏ๊ฒ ๋ ๊น? ๋๋ ํน์ label์ด ์กด์ฌํ์ง ์๋๋ค๋ฉด??
๊ทธ๋ฌํ ์ํฉ์ ๋์์ ๋ pod๊ฐ ์ด๋ค ํ๋์ ํ ์ง ๊ฒฐ์ ํด์ฃผ๋ ๊ฒ์ด node affinity types์ด๋ค
node affinity type
pod์ lifecycle์๋ 2๊ฐ์ง ์ํ๊ฐ ์๋ค. during-scheduling / during-execution
- requiredDuringSchedulingIgnoredDuringExecution
during scheduing ์ด required์ด๊ธฐ ๋๋ฌธ์, ํน์ label์ ๊ฐ์ง node๋ฅผ ์ฐพ์ง ๋ชปํ ๊ฒฝ์ฐ, pod๋ ์ค์ผ์ฅด๋์ง ์๋๋ค. during execution์ด ignored์ด๊ธฐ ๋๋ฌธ์, node์ ํ ๋น๋ ํน์ label์ ์ง์ธ๊ฒฝ์ฐ, ํด๋น label์ ๋ํ ์ ํธ๋๋ฅผ ๊ฐ์ง pod๊ฐ ์คํ์ค์ธ ์ํ์ผ ๊ฒฝ์ฐ ํด๋น pod๊ฐ ๊ณ์ ์คํ๋๋๋ก ๋๋๋ค.
- preferredDuringSchedulingIgnoredDuringExecution
during scheduing ์ด preferred์ด๊ธฐ ๋๋ฌธ์, ํน์ label์ ๊ฐ์ง node๋ฅผ ์ฐพ์ง ๋ชปํด๋ pod๋ ์ค์ผ์ฅด๋ง๋๋ค.
- requiredDuringSchedulingRequiredDuringExecution
ํน์ label์ ๋ํ affinity ๋ฅผ ๊ฐ๊ณ ์๋ pod๊ฐ node์ ๋ฐฐ์น๋๊ณ ์คํ์ค์ธ ์ํ์ผ ๋, ํน์ label์ node์์ ์ ๊ฑฐํ์ ๊ฒฝ์ฐ, ์คํ์ค์ธ pod๋ผ๋ ํด๋น pod๋ฅผ node์์ ์ ๊ฑฐํ๋ค.
Resource requirement and limits
spec.resources ํ๋๋ฅผ ์ด์ฉํด์, pod๊ฐ ์คํ๋๋๋ฐ ํ์ํ ๋ฆฌ์์ค๊ฐ ์ผ๋ง๋ ํ์ํ์ง ์์ฒญํ ์ ์๋ค. ๋ํ, spec.resources.limitํ๋์ pod๊ฐ ์คํ๋ ๋ ๋ฆฌ์์ค๋ฅผ ์ผ๋งํผ ์ ํํ๋ ์ง๋ฅผ ๋ช ์ํ ์ ์๋ค.
|
|
cpu๋ Limit ์ ๋ช ์๋ ๊ฒ ์ด์ ์ฌ์ฉํ ์ ์์ง๋ง, ๋ฉ๋ชจ๋ฆฌ๋ ๊ฐ๋ฅํ๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ด๊ณผํ๊ฒ ๋๋ฉด oom ์๋ฌ(out of memory)๋ก pod๋ ์ข ๋ฃ๋๋ค.
resource์ ๋ช ์ธ๋ฅผ ์ ์ํ์ง ์๋๋ค๋ฉด, node ๋ด์ ์คํ๋๋ ์ฌ๋ฌ ์ดํ๋ฆฌ์ผ์ด์ ์ ์๋ก๋ฅผ ์ง์์ํฌ ์ ์๋ค.
ํน์ namespace ๋ด์์ ์์ฑ๋๋ pod์ ๋ฆฌ์์ค๋ฅผ ์ ํํ๊ธฐ ์ํด์ฐ resource quota๋ฅผ ์ฌ์ฉํ๋ค. ์ด๊ฑธ ์ฌ์ฉํ๋ฉด, namespace๊ฐ์ ์์์ ํจ์จ์ ์ผ๋ก ํด๋ฌ์คํฐ๋ด์์ ๋ถ๋ฐฐํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
|
|
Pod ์์ ํ๊ธฐ
Pod์ ๋ช ๊ฐ์ง ํน์ ํ๋๋ง ์ง์ ์์ ํ ์ ์์ด:
spec.containers[].image spec.initContainers[].image spec.activeDeadlineSeconds spec.tolerations ๊ทธ ์ธ์ ๋ค๋ฅธ ์ค์ ๋ค์ ์ง์ ์์ ํ ์ ์์ผ๋ฉฐ, ๋ณ๊ฒฝ์ ์ํ ๊ฒฝ์ฐ Pod๋ฅผ ์ญ์ ํ๊ณ ์์ ๋ ์ค์ ์ ๋ฐ์ํ์ฌ ์๋ก์ด Pod๋ฅผ ์์ฑํด์ผ ํด. ์ด๋ฅผ ์ํด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ด:
์ง์ ์์ ์๋: kubectl edit pod
Deployment ์์ ํ๊ธฐ
Deployment์ ๊ฒฝ์ฐ, Pod ํ
ํ๋ฆฟ์ด Deployment ์คํ์ ํ์ ์์๋ก ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์, Deployment ๋ด์ Pod ํ
ํ๋ฆฟ์ ๋ํ ํ๋๋ ์์ ๋กญ๊ฒ ์์ ํ ์ ์์ด. ์์ ์ด ์ด๋ฃจ์ด์ง๋ฉด Deployment๋ ์๋์ผ๋ก ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ํ์ฌ ๊ธฐ์กด Pod๋ฅผ ์ญ์ ํ๊ณ ์๋ก์ด Pod๋ฅผ ์์ฑํด. Deployment๋ฅผ ์์ ํ๋ ค๋ฉด kubectl edit deployment
Daemon set
daemon set์ ๋ ธ๋๊ฐ ์๋ก ์์ฑ๋ ๋ ๋ฐ๋ณต์ ์ผ๋ก ๋ฐฐํฌํด์ผ๋ pod๋ฅผ ๋ฏธ๋ฆฌ ์์ฑํด๋๋๊ฒ ์๋ฅผ ๋ค์ด, monitoring / log collector / kube proxy ๊ฐ์ ๊ฒ๋ค ..
daemon set์ ์์ฑํ๋ ์ฝ๋๋ replicaSet ์ด๋ ๊ฑฐ์ ๋๊ฐ์๋ฐ kind๋ง ๋ค๋ฆ
๋ชจ๋ namespace์ ์ ์๋ daemon set์ ๊ฐ์๊ตฌํ๊ธฐ kubectl get daemonset -A
static pod
๋ง์ฝ masternode๊ฐ ์กด์ฌํ์ง ์์๊ฒฝ์ฐ, kublet์ ๋ ธ๋๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค. kubeapi server๊ฐ ์กด์ฌํ์ง ์์ ๋, kublet์ /etc/kubernetes/manifests ํ์ผ์ ์์นํ pod definition ํ์ผ์ ์ฝ์ด์ pod๋ฅผ ๋ ธ๋๋ด์ ์์ฑํ ์ ์๋ค. kublet์ ํด๋น๊ฒฝ๋ก๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ฝ์ด์ pod๋ฅผ ์ญ์ ํ๊ฑฐ๋ ์์ฑํ ์ ์๋ค. ์ด๋ฐ pod๋ฅผ static pod๋ผ๊ณ ํ๋ค. ํด๋น ๊ฒฝ๋ก๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์, kublet bin ํ์ผ์ ์ด์ฉํด์ kublet ์๋น์ค๋ฅผ ์คํํ ๋ –pod-manifest-path ํ๋์ ์ ์ ํ ๊ฐ์ ์ฃผ์ด์ ๊ฒฝ๋ก๋ฅผ ์์ฑํ ์ ์๋ค.
๋๋ –config=kubeconfig.yaml ์ต์ ์ ์ฃผ๊ณ , kubeconfig yaml ํ์ผ์๋ static pod ๊ฐ ์์นํ path๋ฅผ ์ ์ ์ ์๋ค. (staticPodPath : /etc/kubernetes/manifest)
master node๊ฐ ์กด์ฌํ๊ณ kubeapi server ๊ฐ ์์๊ฒฝ์ฐ, http ํต์ ์ ์ฌ์ฉํด์ kublet์ด static pod๋ฅผ ์์ฑํ๊ฒ ํ ์ ์๋ค. ์ด๋ ์์ฑ๋ pod๋ ์ ๊ฑฐํ๊ฑฐ๋ ์์ ํ ์ ์๋ค. kubeapi server๋ฅผ ์ด์ฉํด์ ๊ฐ์ ์ ์ผ๋ก pod์ ์ํ๋ฅผ ํ์ธํ ์ ์๋ค.
์ฃผ๋ก ์ค์ํ pod๋ฅผ ์์ฑํ ๋ static pod๋ฅผ ํ์ฉํ๋ค. ์๋ฅผ ๋ค์ด, master node์ ์ํด์๋ kubeapi server / controller manager / scheduler๋ฑ์ด static pod์ด๋ค.
- static pod vs daemon set
How many static pods exist in this cluster in all namespaces?
์ผ๋ฐ์ ์ผ๋ก kubectl get pods -A ๋ก ๋ชจ๋ pod๋ฅผ ์กฐํํ ์๋ ์์ง๋ง, ํด๋น pod๊ฐ static pod์ธ์ง๋ ์ ํํ ์ ์ ์๋ค. ์ ํํ ์๊ธฐ ์ํด์ , pod๋ฅผ describe ํ๊ณ ํด๋น pod์ owner๊ฐ Node์ธ์ง ํ์ธํด์ผ ํ๋ค.
์ถ๊ฐ๋ก, static pod์ ๊ฒฝ์ฐ, suffix๋ก ํด๋น node์ ์ด๋ฆ์ด ๋ถ๊ธฐ ๋๋ฌธ์ ํน์ ๋ ธ๋์ ๋ค์ node์ด๋ฆ์ด ๋ถ์ด์๋ค๋ฉด ํด๋น pod๊ฐ static pod์ธ์ง ์์ฌํ ์ ์๋ค.
multiple scheduler
ํน์ pod๊ฐ customize ๋ ์ค์ผ์ฅด๋ฌ์ ์ํด ๋ ธ๋๋ก ๋ฐฐ์น๋ฐ๊ธธ ์ํ๋ค๋ฉด, custom scheduler๋ฅผ ์์ฑํ ์ ์๋ค.
https://kubernetes.io/ko/docs/tasks/extend-kubernetes/configure-multiple-schedulers/
ํน์ pod๊ฐ custom scheduler์ ํ ๋น๋์๋์ง๋ฅผ ํ์ธํ๋ ค๋ฉด kubectl get events -o wide๋ฅผ ํตํด ํ์ธํ ์ ์๋ค.
ํน์ scheduler์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด kubectl log [scheduler-name] ์ ํตํด ํ์ธํ ์ ์๋ค.
scheduler profile
์ค์ผ์ฅด๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ํ๋ก์ธ์ค๋ก ์ด์๋๋ค.
pod-definitionํ์ผ์์ด์ฉํด Pod๋ฅผ ์์ฑํ๋ค๊ณ ๊ฐ์ ํ์. ์ด๋ priorityClassName์ ํตํด pod๊ฐ ์์ฑ๋ ๋ priority๋ฅผ ๋ถ์ฌํ ์๋์๋ค.
- scheduling queue ์ ์์ฑ๋ pod๊ฐ ๋ค์ด๊ฐ๋ค.
- scheduling plugin : priority sort
- filter step : queue์์ pod๋ฅผ popํ ํ, ๋ค์ด๊ฐ ์ ์๋ ๋ ธ๋๋ค์ filtering ํ๋ค.
- scheduling plugin : Node resource fit / NodeUnscheduled(–dry-run) / NodeName
- scoring step : ๋จ์ node ์ค์์, ํด๋น pod๋ฅผ ํ ๋นํ์ ๋ ์ฌ์ ๋ถ์ด ๋ง์ ๋ ธ๋์ ๋ ๋์ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌํ๋ค.
- scheduling plugin : Node resource fit plugin์์ด์ฉํด์ ๋ ธ๋์ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌ image locality : pod๊ฐ ๊ฐ์ง๊ณ ์๋ ์ด๋ฏธ์ง์ ๊ฐ์ ์ด๋ฏธ์ง์ธ node์๊ฒ ๋์ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌ
- binding step: ๊ฐ์ค์น๊ฐ ์ ์ผ ๋์ node์ pod๋ฅผ ํ ๋นํ๋ค.
- scheduling plugin : default binding
Monitor
kubelet์๋ ์๋ธ component๋ก cAdvisor ๊ฐ ์๋๋ฐ ๋ ธ๋๋ด์์ ์คํ์ค์ธ ํฌ๋์ ๋ฉํธ๋ฆญ์ ๋ฐ๋๋ค. ์ด ๋ฉํธ๋ฆญ์ kubeapi server ๋ฅผ ์ด์ฉํด์ ํฌ๋์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋ง ํ ์ ์๋ค.
minikube cluster๋ฅผ ์ด์์ค์ด๋ผ๋ฉด ๋ค์ ๋ช ๋ น์ด๋ก cAdvisor๋ฅผ ํ์ฑํ ์ํฌ ์ ์๋ค. minikube addons enable metric-server
minikube๋ฅผ ์ด์ํ๋ ๊ฒ ์๋๋ผ๋ฉด, metric-server.git ์ ๋ค์ด๋ฐ๊ณ ๋ค์ด๋ฐ์ ํ์ผ์ definition ํ์ผ์ ์ ์ฉํด์ค๋ค.
kubectl top node / pod ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด์ ๋ ธ๋ ๋๋ ํฌ๋์ ๋ฆฌ์์ค ์ ์ ์ํ๋ฅผ ํ์ธํ ์ ์๋ค.
rolling update and rollback
pod์ ์ด๋ฏธ์ง๋ฅผ ์ ๋ฐ์ดํธ ํ๋๋ฐฉ๋ฒ์๋ 2๊ฐ์ง๊ฐ ์๋ค.
- yamlํ์ผ์ ์์ ํ ํ apply ๋ช ๋ น์ ์ ์ฉ
- kubectl set image [deployment-name] [image]
์ด๋ฏธ์ง ๋ณ๊ฒฝ์ ์ ์ฉํ๊ณ describe ํด๋ณด๋ฉด, strategyType : Recreate / Rolling update ๋ฐฉ์ 2๊ฐ์ง๊ฐ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค. recreate ์ ๊ฒฝ์ฐ ์คํ๋๊ณ ์๋ pod๋ฅผ ํ๋ฒ์ ์ข ๋ฃํ ๋ฐ๋ ์ด๋ฏธ์ง๊ฐ ์ ์ฉ๋ ์ปจํ ์ด๋๋ฅผ ์๋ก ์ฌ๋ฆฌ๋ ๊ฒ์ด๊ณ rolling update์ ๊ฒฝ์ฐ pod1๊ฐ์ฉ ์ข ๋ฃํ๊ณ 1๊ฐ์ฉ ์๋ก ์ฌ๋ฆฌ๋ ๊ฒ์ด๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ deployment๋ฅผ ์๋ก ๋ฐฐํฌํ ๋ ๊ธฐ์กด์ ์กด์ฌํ๋ replicaset์ ๊ตฌ์ฑํ๋ pod๊ฐฏ์๋งํผ์ ๊ฐ์ง๊ณ ์๋ replicaset์ ์๋ก ํ๋ ์์ฑํ๊ณ ๊ธฐ์กด replicaset์ pod๋ฅผ ์ฃฝ์ด๋ฉด์ ์๋ก์ด replicaset์ ์๋ก์ด pod๋ฅผ ๋์ด๋ค.
kubectl rollout status deployment/my-deployment -> ๋ฐฐํฌ์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ ์ ์๋ค.
rollback์ ํ๊ธฐ ์ํด์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํด์ฃผ๋ฉด ๋๋ค. kubectl rollout undo [deployment-name]
commands and arguments
environment variables
spec.container.env ๋ key-value ์ฌ๋ฌ๊ฐ๋ฅผ ๋ฐ์์ ์ปจํ ์ด๋๊ฐ ์คํ๋ ๋ ํ๊ฒฝ๋ณ์๋ฅผ ๋ฑ๋กํ๊ฒ ํ ์ ์๋ค. ๋ํ ๋จ์ํ key-value ๋ฟ๋ง ์๋๋ผ, configMapRef / secretValueRef๋ฅผ ํตํด ์ฐธ์กฐํ ์๋ ์๋ค.
- config Maps
- imperative way
|
|
- declarative way
|
|
configure secret
os upgrade
๋ ธ๋๋ฅผ ์ ์ง๋ณด์๋ฅผ ์ํด ๋น ์ํ๋ก ๋ง๋ค๊ณ , ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ด ํด๋น ๋ ธ๋์ ์ค์ผ์ค๋์ง ์๋๋ก ์ค์ ํ๋ ค๋ฉด, ์ฟ ๋ฒ๋คํฐ์ค์์ ๋ช ๊ฐ์ง ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ผ ํด. ์ด ๊ณผ์ ์ “๋ ธ๋ ๋๋ ์ด๋(draining)“์ด๋ผ๊ณ ํ๋ฉฐ, ํ๋๋ค์ ์์ ํ๊ฒ ๋ค๋ฅธ ๋ ธ๋๋ก ์ด๋์ํค๊ณ ํด๋น ๋ ธ๋๋ฅผ ์ ์ง๋ณด์ ๋ชจ๋๋ก ์ค์ ํ ์ ์์ด.
- ๋ ธ๋๋ฅผ Unschedulable๋ก ์ค์ ํ๊ธฐ ๋จผ์ , ๋ ธ๋๋ฅผ unschedulable ์ํ๋ก ์ค์ ํด์ ์๋ก์ด ํ๋๊ฐ ์ค์ผ์ค๋์ง ์๋๋ก ํด์ผ ํด. ์ด๊ฒ์ kubectl cordon ๋ช ๋ น์ด๋ก ํ ์ ์์ด:
bash Copy code kubectl cordon node01 ์ด ๋ช ๋ น์ด๋ node01์ด๋ผ๋ ๋ ธ๋์ ๋ ์ด์ ์๋ก์ด ํ๋๊ฐ ํ ๋น๋์ง ์๋๋ก ์ค์ ํด.
- ๊ธฐ์กด ํ๋๋ค์ ๋ค๋ฅธ ๋ ธ๋๋ก ์ด๋์ํค๊ธฐ ์ด์ node01์ ์๋ ๊ธฐ์กด ํ๋๋ค์ ์์ ํ๊ฒ ๋ค๋ฅธ ๋ ธ๋๋ก ์ด๋์ํฌ ์ฐจ๋ก์ผ. ์ด ์์ ์ kubectl drain ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด์ ์ํํ ์ ์์ด:
bash Copy code kubectl drain node01 –ignore-daemonsets –delete-emptydir-data –ignore-daemonsets: ๋ฐ๋ชฌ์ ์ผ๋ก ์์ฑ๋ ํ๋๋ ๋ฌด์ํ๊ณ ๋๋ ์ธ์ ์งํํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด ์ต์ ์ ์ถ๊ฐํด์ผ ํด. –delete-emptydir-data: EmptyDir ๋ณผ๋ฅจ์ ์ฌ์ฉํ๋ ํ๋๊ฐ ์๋ค๋ฉด, ์ด ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ณ ํ๋๋ฅผ ๋ค๋ฅธ ๋ ธ๋๋ก ์ด๋์ํค๊ธฐ ์ํด ์ด ์ต์ ์ ์ฌ์ฉํด. 3. ์ ์ง๋ณด์ ํ ๋ ธ๋ ๋ณต๊ตฌ ์ ์ง๋ณด์ ์์ ์ด ๋๋๊ณ ๋ ธ๋๋ฅผ ๋ค์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ํ๋ก ๋๋๋ฆฌ๊ณ ์ถ๋ค๋ฉด, ๋ค์ ๋ช ๋ น์ด๋ก ๋ ธ๋๋ฅผ ๋ค์ schedulable ์ํ๋ก ์ค์ ํ ์ ์์ด:
bash Copy code kubectl uncordon node01 ์ด ๋ช ๋ น์ด๋ node01 ๋ ธ๋๋ฅผ ๋ค์ ํ์ฑํ์์ผ์ ์๋ก์ด ํ๋๋ค์ด ์ค์ผ์ค๋ ์ ์๋๋ก ํด.
์ด๋ฐ ๋จ๊ณ๋ฅผ ํตํด ๋ ธ๋๋ฅผ ์์ ํ๊ฒ ์ ์ง๋ณด์ ๋ชจ๋๋ก ์ ํํ๊ณ , ์์ ํ ๋ค์ ์ ์์ ์ผ๋ก ํ์ฑํํ ์ ์์ด! ํ์ํ ๋์์ด๋ ์ถ๊ฐ ์ง๋ฌธ์ด ์์ผ๋ฉด ์ธ์ ๋ ์ง ๋ฌผ์ด๋ด ์ค.
Cluster upgrade
controlplane ์ ๊ตฌ์ฑํ๋ ๊ฐ๊ฐ์ pod์ ๋ฒ์ ์ kube-apiserver๋ฅผ ๋์ด์ค ์ ์๋ค.
master node๋ฅผ ์ ๊ทธ๋ ์ด๋ ํ๊ธฐ ์ํด ๋ค์ด์์ผ๋, worker node๊ฐ ์ด์๋๋ ๊ฒ์๋ ์ง์ฅ์ด ์๋ค. ํ์ง๋ง, ์๋ก์ด ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ๊ฒ์ ๋ถ๊ฐ์ผํ๋ค.
backup and restore
restore etcd
|
|
์ ์ต์ ์ค url ๊ด๋ จ ์ต์ –advertise-client-urls=https://192.6.229.9:2379 –initial-advertise-peer-urls=https://192.6.229.9:2380 –initial-cluster=controlplane=https://192.6.229.9:2380 –listen-client-urls=https://127.0.0.1:2379,https://192.6.229.9:2379 etcd ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ก ๋ถํฐ ์์ฒญ์ ๋ฐ๊ธฐ ์ํด ํน์ ์ฃผ์์์ ๋ฆฌ์ค๋ํ๊ณ ์๋ url์ ์๋ฏธํ๋ค. ์ฌ๊ธฐ์ localhost๋ etcd ์๋ฒ๊ฐ ์คํ๋๊ณ ์๋ ๋จธ์ ๊ณผ ๊ฐ์ ๋จธ์ ์์ ์คํ๋๊ณ ์๋ ์๋ฒ์ ์ฃผ์๋ฅผ ๋ฐ๋ url์ ์๋ฏธํ๊ณ ๋ค ์ฃผ์๋ etcd ์๋ฒ๊ฐ ์ค์น๋ ๋จธ์ ์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ํ ๋น๋ ์ฃผ์๋ฅผ ์๋ฏธํ๋ค. ํด๋ผ์ด์ธํธ๋ ํด๋ฌ์คํฐ๋ด ๋ค๋ฅธ pod๋ ํด๋น ์ฃผ์๋ฅผ ํตํด etcd ์๋ฒ์ ์ ์ํ ์ ์๋ค. –listen-metrics-urls=http://127.0.0.1:2381 –listen-peer-urls=https://192.6.229.9:2380