๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[DevOps]/Kubernetes

CKA ๊ธฐ์ถœ ๋ฌธ์ œ ๋ณต๊ธฐ ๋ฐ ์ ‘๊ทผ๋ฒ• ์ •๋ฆฌ[24.11.24 ์‘์‹œ]

by ํŒกํŽ‘ํ 2024. 11. 27.
728x90

๐Ÿฅธ ๋“ค์–ด๊ฐ€๊ธฐ ์ „์—

๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ์™„๋ฒฝํžˆ ๋ณต๊ธฐํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋Œ€๋žต์ ์ธ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ ๋ฌธ์ œ๋ฅผ ์ฝ๊ณ  ๋Œ€๋žต์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•˜๋ฉด ํ’€ ์ˆ˜ ์žˆ๊ฒ ๋‹ค ์‹ถ์œผ๋ฉด ํ’€ ์ˆ˜ ์žˆ๋Š” ๊ฒ๋‹ˆ๋‹ค.

์‹œํ—˜ ์ •์ฑ…์ด ํฌ๊ฒŒ ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ํ•œ ์–ด๋ ต๊ฒŒ ๊ผฌ์•„๋ฒ„๋ฆฌ๋Š” ๋ฌธ์ œ๋Š” ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ’€ ๋‹น์‹œ ์ €์˜ ์ ‘๊ทผ๋ฒ•๋„ ํ•จ๊ป˜ ์ •๋ฆฌํ•ด ๋‘์—ˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.(์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์ด ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

๋ฌธ์ œ ์ˆœ์„œ์™€๋Š” ๊ด€๊ณ„ ์—†์œผ๋ฉฐ ๊ธฐ์–ต์— ๋‚จ์€ ๋ฌธ์ œ๋งŒ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

17๋ฌธ์ œ ์ค‘์— ์ ˆ๋ฐ˜ ์ •๋„๋Š” kodekloud์˜ ๋ฌธ์ œ๋ฅผ ๋‹ค ํ’€ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์‰ฝ๋‹ค๊ณ  ๋А๋‚„ ์ˆ˜์ค€์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

 

1. Ingress ๋งŒ๋“ค๊ธฐ

1. ping์ด๋ผ๋Š” ingress๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ namespace๋Š” Ing-intenal์ด๋ฉฐ
/hello ์—”๋“œํฌ์ธํŠธ๋กœ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด hello ์„œ๋น„์Šค 5678 ํฌํŠธ๋กœ ๋ผ์šฐํŒ… ํ•ด๋ผ.
curl -kL {internal-ip}/hello๋กœ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์„ฑ๊ณต ์‹œ hello๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

 

๊ด€๋ จ ๊ณต์‹ ๋ฌธ์„œ

https://kubernetes.io/docs/concepts/services-networking/ingress/#the-ingress-resource

 

๋Œ€๋žต์ ์ธ ํ’€์ด

# yaml ํŒŒ์ผ ์ƒ์„ฑ
vi xx.yaml

# ๊ฐ’ ์ž…๋ ฅ
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ping <- ์ด๋ฆ„
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /hello <- ์—”๋“œํฌ์ธํŠธ
        pathType: Prefix
        backend:
          service: 
            name: hello <- ์„œ๋น„์Šค๋ช…
            port:
              number: 5678 <- ํฌํŠธ
   
# yaml ์‹คํ–‰
k apply -f xx.yaml

# curl ๋ช…๋ น์–ด๋ฅผ ์œ„ํ•œ ๋…ธ๋“œ internal-ip ์กฐํšŒ
k get node -o wide

# ๋‚˜์˜จ ๋…ธ๋“œ์˜ <internal-ip>๋กœ ๋ช…๋ น์–ด ์ž…๋ ฅ
curl -kL <internal-ip>/hello
  • curl -kL์€ ๋ณด์•ˆ ์ธ์ฆ์„œ ๊ฒ€์ฆ์„ ๋ฌด์‹œํ•˜๋ฉด์„œ ๋ฆฌ๋””๋ ‰์…˜์„ ๋”ฐ๋ผ ์ตœ์ข… ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ช…๋ น์ž…๋‹ˆ๋‹ค
  • ์ €์˜ ๊ฒฝ์šฐ node๊ฐ€ 3๊ฐœ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์•„๋ฌด ์ƒ๊ฐ ์—†์ด ์›Œ์ปค ๋…ธ๋“œ ๋‘ ๊ฐœ์˜ internal ip๋ฅผ ๋Œ€์ž…ํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•˜๋‹ค๊ฐ€ ํ•œ ๊ณณ์—์„œ hello ์ถœ๋ ฅ์ด ๋‚˜์™€์„œ ๋„˜๊ฒผ์œผ๋‚˜, ์ง€๊ธˆ ์ƒ๊ฐํ•ด ๋ณด๋ฉด ingress controller pod๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๋…ธ๋“œ์˜ internal-ip๋กœ ํ•˜๋Š” ๊ฒƒ์ด ๋งž์ง€ ์•Š๋‚˜ ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค.

 

2. etcd Backup & Restore

1. master-node์— ๋“ค์–ด๊ฐ€์„œ sudo -i ๊ถŒํ•œ์œผ๋กœ etcdctl ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šค๋ƒ…์ƒท์„ saveํ•ด๋ผ.
2. ๋ฏธ๋ฆฌ ์ง€์ •๋œ ๊ฒฝ๋กœ์— previous-snapshot.db๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๊ฑธ๋กœ etcd๋ฅผ restore ํ•ด๋ผ.

 

๊ด€๋ จ ๊ณต์‹ ๋ฌธ์„œ

https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/#backing-up-an-etcd-cluster

https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/#restoring-an-etcd-cluster

 

๋Œ€๋žต์ ์ธ ํ’€์ด

# ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ ์ ‘์†
ssh master-node(์˜ˆ์‹œ)

# ๋ฃจํŠธ ๊ถŒํ•œ ํš๋“
sudo -i

# ๋ช…๋ น์–ด๋กœ ์˜ต์…˜ ํ™•์ธ
ETCDCTL_API=3 etcdctl -h 

# snapshot save(ํ•ด๋‹น ๊ฒฝ๋กœ๋Š” ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง)
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=<trusted-ca-file> --cert=<cert-file> --key=<key-file> \
snapshot save <backup-file-location>

# snapshot restore(--data-dir ๊ฒฝ๋กœ๋Š” ์ƒˆ๋กœ ๋งŒ๋“ฌ, previous-snapshot.db ๊ฒฝ๋กœ๋Š” ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง)
ETCDCTL_API=3 etcdctl --data-dir /var/lib/etcd-backup snapshot restore <previous-snapshot.db>

# etcd.yaml ํŽธ์ง‘ ๋“ค์–ด๊ฐ€๊ธฐ
vi /etc/kubernetes/manifests/etcd.yaml

# etcd.yaml ์ˆ˜์ •
spec:
  containers:
  	- command:
    	- etcd
        - --data-dir=/var/lib/etcd-backup <- ์ˆ˜์ •
        ...
        
      volumeMounts:
    	- mountPath: /var/lib/etcd-backup <- ์ˆ˜์ •
      	  name: etcd-data
    	- mountPath: /etc/kubernetes/pki/etcd
          name: etcd-certs
      readOnly: true
  hostNetwork: true
  priorityClassName: system-cluster-critical
  volumes:
    - hostPath:
        path: /var/lib/etcd-backup <- ์ˆ˜์ •
        type: DirectoryOrCreate
      name: etcd-data
      ...
  • ์ฃผ์–ด์ง„ ๊ฒฝ๋กœ์— snapshot save๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๋ฏธ๋ฆฌ ์ €์žฅ๋˜์–ด ์žˆ๋Š” Previous-snapshot์„ restore ํ•ฉ๋‹ˆ๋‹ค.
  • /etc/kubernetes/manifests ๊ฒฝ๋กœ์˜ etcd.yaml ํŒŒ์ผ์— ๋“ค์–ด๊ฐ€ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์˜€๋Š”๋ฐ Pending์ด ๋–ด๊ณ  ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ ์ฑ„ ์‹œํ—˜์ด ๋๋‚ฌ์Šต๋‹ˆ๋‹ค.(์œ ์ผํ•˜๊ฒŒ ๋ชป ํ‘ผ ๋ฌธ์ œใ…œ)
  • kodeloud์—์„œ๋Š” ์œ„์™€ ๊ฐ™์ด ํ’€์—ˆ์„ ๋•Œ ํ•ญ์ƒ ๋งž์•˜๋Š”๋ฐ ์™œ Pending์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.(ํ˜น์‹œ ์•„์‹œ๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š” ใ… )

 

3. TroubleShooting

worker node๊ฐ€ NotReady ์ƒํƒœ์ด๋‹ค. ์ด๋ฅผ Ready ์ƒํƒœ๋กœ ๋งŒ๋“ค์–ด๋ผ.

 

๋Œ€๋žต์ ์ธ ํ’€์ด

# ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๋…ธ๋“œ ํ™•์ธ
k get node

# ํ•ด๋‹น ๋…ธ๋“œ๋กœ ssh ์ ‘์†
ssh worker-node

# ๋ฃจํŠธ ๊ถŒํ•œ ์„ค์ •
sudo -i

# kubelet ์ƒํƒœ ํ™•์ธ(์ €์˜ ๊ฒฝ์šฐ incative์˜€์Šต๋‹ˆ๋‹ค.)
systemctl status kubelet
(inactive)

# kubelet restart
systemctl restart kubelet

# kubelet ์ƒํƒœ ์žฌํ™•์ธ
systemctl status kubelet
(active)

# ๋งˆ์Šคํ„ฐ๋…ธ๋“œ๋กœ ๋Œ์•„์˜ค๊ธฐ
exit

# ๋…ธ๋“œ ์žฌํ™•์ธ(Ready๋กœ ๋ณ€๊ฒฝ)
k get node
  • ์‰ฌ์šด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ active ์ƒํƒœ์ธ๋ฐ NotReady์ธ ๊ฒฝ์šฐ kodekloud์—์„œ ๋‚˜์˜จ ๋‹ค๋ฅธ ์œ ํ˜• ์ •๋„ ์ˆ˜์ค€ ์•„๋‹๊นŒ ์‹ถ๋„ค์š”. ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ˜๋ณตํ•˜๋ฉด ๋ฌธ์ œ์—†์ด ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • journal -u kubelet | grep -i error <- ์ด ๋ช…๋ น์–ด๋กœ kubelet ๋™์ž‘ ์‹œ์˜ ๋กœ๊ทธ ์ค‘ error๋งŒ ์ถ”์ถœํ•˜์—ฌ ์–ด๋–ค ๋ฌธ์ œ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

4. ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ kubeadm, kubelet, kubectl ์—…๊ทธ๋ ˆ์ด๋“œ

๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๋ฅผ 1.30.0์—์„œ 1.30.1๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ผ.
์›Œ์ปค๋…ธ๋“œ๋Š” ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์ง€ ๋ง๊ณ  ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๋งŒ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ผ.

 

๊ด€๋ จ ๊ณต์‹ ๋ฌธ์„œ

https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/

 

๋Œ€๋žต์ ์ธ ํ’€์ด

  • ์œ„ ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๋ฉฐ ๊ทธ๋Œ€๋กœ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๋งŒ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • linux ํ™˜๊ฒฝ์—์„œ ๊ณต์‹๋ฌธ์„œ์— ๋‚˜์˜จ ๋ช…๋ น์–ด๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ ๋„ฃ๊ณ  ์‹คํ–‰ํ•  ๋•Œ 3์ค„ ์ •๋„์˜ '&&'๋กœ ๊ฒฐํ•ฉ๋œ ๋ช…๋ น์–ด๋Š” ์ œ๋Œ€๋กœ ์•ˆ ๋จน๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋ž˜์„œ ๋ช…๋ น์–ด๋ฅผ ์ „๋ถ€ ๋‚˜๋ˆ ์„œ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„๋งŒ ์‹ ๊ฒฝ ์“ฐ๋ฉด ๋ ๋“ฏํ•˜๋„ค์š”.
  • kodekloud์˜ ๋ฌธ์ œ ์œ ํ˜•๊ณผ ๋˜‘๊ฐ™์œผ๋ฏ€๋กœ ์–ด๋ ต์ง€ ์•Š๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

5. Pod Log

ํŠน์ • ํŒŒ๋“œ log์—์„œ Error ๋ฉ”์‹œ์ง€๋งŒ ์ฃผ์–ด์ง„ ๊ฒฝ๋กœ์˜ ํŒŒ์ผ์— ์ €์žฅํ•˜๋ผ.

 

# logs๋Š” ํŠน์ • ํŒŒ๋“œ์˜ ๋กœ๊ทธ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ช…๋ น์–ด์ด๋ฉฐ, -i๋Š” ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์„ ํ•˜์ง€ ์•Š๋Š” ์˜ต์…˜
k logs <pod-name> | grep -i error > /๋ฌธ์ œ์—์„œ/์ฃผ์–ด์ง„/๊ฒฝ๋กœ

 

 

6. side car multi container

๊ธฐ์กด ํŒŒ๋“œ๊ฐ€ ๊ธฐ๋กํ•˜๋Š” log ํŒŒ์ผ์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ sidecar container๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ sidecar๋กœ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜๊ณ  ์ฃผ์–ด์ง„ ๊ฒฝ๋กœ์— ๋กœ๊ทธ๋ฅผ ์ €์žฅํ•˜๋ผ.(์ €์žฅํ•˜๋ผ๊ณ ๊นŒ์ง€ ํ–ˆ๋Š”์ง€ ์ •ํ™•ํžˆ ๊ธฐ์–ต์ด ์•ˆ ๋‚จ)

 

๊ด€๋ จ ๊ณต์‹ ๋ฌธ์„œ

https://kubernetes.io/docs/concepts/cluster-administration/logging/#cluster-level-logging-architectures

 

๋Œ€๋žต์ ์ธ ํ’€์ด

# ๊ณต์‹ ๋ฌธ์„œ์˜ ์˜ˆ์‹œ
apiVersion: v1
kind: Pod
metadata:
  name: counter
spec:
  containers:
  - name: count
    image: busybox:1.28
    args:
    - /bin/sh
    - -c
    - >
      i=0;
      while true;
      do
        echo "$i: $(date)" >> /var/log/1.log;
        echo "$(date) INFO $i" >> /var/log/2.log;
        i=$((i+1));
        sleep 1;
      done      
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  volumes:
  - name: varlog
    emptyDir: {}

# ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ sidecar container ์ถ”๊ฐ€
apiVersion: v1
kind: Pod
metadata:
  name: counter
spec:
  containers:
  - name: count
    image: busybox:1.28
    args:
    - /bin/sh
    - -c
    - >
      i=0;
      while true;
      do
        echo "$i: $(date)" >> /var/log/1.log;
        echo "$(date) INFO $i" >> /var/log/2.log;
        i=$((i+1));
        sleep 1;
      done      
    volumeMounts:
    - name: varlog
      mountPath: /var/log
 ####################################################### ์ถ”๊ฐ€, ๋ฌธ์ œ์— ์ฃผ์–ด์ง„ ์กฐ๊ฑด์œผ๋กœ ๋ณ€๊ฒฝ    
  - name: count-log-1
    image: busybox:1.28
    args: [/bin/sh, -c, 'tail -n+1 -F /var/log/1.log']
    volumeMounts:
    - name: varlog
      mountPath: /var/log
 #######################################################  
  volumes:
  - name: varlog
    emptyDir: {}

# ๊ธฐ์กด ํŒŒ๋“œ ์‚ญ์ œ
k delete po <pod-name> --force

# sidecar ์ถ”๊ฐ€ํ•œ yamlํŒŒ์ผ๋กœ ํŒŒ๋“œ ์ƒ์„ฑ
k apply -f /๊ฒฝ๋กœ/sidecar.yaml

# sidecar ์ปจํ…Œ์ด๋„ˆ๋กœ ์ ‘๊ทผํ•˜์—ฌ /var/log์— ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ์˜ ๋กœ๊ทธ๊ฐ€ ์ €์žฅ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธ
k exec -it <pod-name> -c <container-name> -- /bin/bash

# ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ๋กœ๊ทธ ๋ณต์‚ฌ
tail -f /var/log/xxx.log # ๋กœ๊ทธ ํŒŒ์ผ ๋“ค์–ด๊ฐ€ ๋กœ๊ทธ ๋ณต์‚ฌ ํ›„

# ํŒŒ๋“œ์—์„œ ๋น ์ ธ ๋‚˜์™€ ์ฃผ์–ด์ง„ ๊ฒฝ๋กœ์— vi ์ˆ˜์ • ๋ชจ๋“œ๋กœ ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ
  • ์‹œํ—˜์ด ๋๋‚˜๊ณ  ์ƒ๊ฐํ•ด ๋ณด๋‹ˆ k log <pod-name> <container-name>์„ ์ž…๋ ฅํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ์˜€๋„ค์š”.
  • k log <pod-name> <container-name> > /๋ฌธ์ œ์—์„œ/์ฃผ์–ด์ง„/๊ฒฝ๋กœ <- ์ด๋ ‡๊ฒŒ ํ’€๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

7. ์ฃผ์–ด์ง„ ์กฐ๊ฑด์˜ Node ๊ฐœ์ˆ˜ ์ฐพ๊ธฐ

ready ์ƒํƒœ์ธ node ์ค‘์— taint๊ฐ€ ์—†๋Š” node์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜์—ฌ ์ฃผ์–ด์ง„ ๊ฒฝ๋กœ์˜ ํŒŒ์ผ์— ์ €์žฅํ•˜๋ผ

 

๊ด€๋ จ ๊ณต์‹ ๋ฌธ์„œ

https://kubernetes.io/docs/reference/kubectl/quick-reference/#viewing-and-finding-resources

 

๋Œ€๋žต์ ์ธ ํ’€์ด

# kubectl Quick Reference ์ฐธ๊ณ , Ready ์ƒํƒœ์˜ ๋…ธ๋“œ ๊ฐœ์ˆ˜ ํ™•์ธ -> ๋ชจ๋“  ๋…ธ๋“œ Ready์˜€์Œ
# Check which nodes are ready with custom-columns
kubectl get node -o custom-columns='NODE_NAME:.metadata.name,STATUS:.status.conditions[?(@.type=="Ready")].status'

# Ready๋ฉด์„œ taint๊ฐ€ ์—†๋Š” ๋…ธ๋“œ ๊ฐœ์ˆ˜ ํ™•์ธ
k describe node | grep -i taint

# ๋ชจ๋“  ๋…ธ๋“œ ๊ฐœ์ˆ˜์—์„œ taint : <None>์ธ ๋…ธ๋“œ ๊ฐœ์ˆ˜ ์ฐพ๊ธฐ -> 2๊ฐœ ์˜€์Œ

# ์ฃผ์–ด์ง„ ๊ฒฝ๋กœ ์ €์žฅ
echo "2" > /๋ฌธ์ œ์—์„œ/์ฃผ์–ด์ง„/๊ฒฝ๋กœ
  • quick-reference๋Š” ๋‘์„ธ ๋ฒˆ ํ›‘๊ณ  ์–ด๋–ค ๋‚ด์šฉ์ด ์žˆ๋Š”์ง€ ์ˆ™์ง€ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

 

8. ์ฃผ์–ด์ง„ ์กฐ๊ฑด์˜ Pod ์ด๋ฆ„ ์ฐพ๊ธฐ

ํŠน์ • namespace์—์„œ <key>:<value> label์„ ๊ฐ€์ง„ Pod ์ค‘ CPU ์‚ฌ์šฉ๋ฅ ์ด ๊ฐ€์žฅ ๋†’์€ pod์˜ ์ด๋ฆ„์„ ์ฃผ์–ด์ง„ ๊ฒฝ๋กœ์˜ ํŒŒ์ผ์— ์ €์žฅํ•˜๋ผ

 

๊ด€๋ จ ๊ณต์‹ ๋ฌธ์„œ

https://kubernetes.io/docs/reference/kubectl/quick-reference/#interacting-with-running-pods

 

๋Œ€๋žต์ ์ธ ํ’€์ด

// top ๋ช…๋ น์–ด์™€ --sort-by ์˜ต์…˜ ํ™œ์šฉ
k top po -n <name-space> -l <key>:<value> --sort-by=cpu

// echo "<pod-name>" > /๋ฌธ์ œ์—์„œ/์ฃผ์–ด์ง„/๊ฒฝ๋กœ/
  • ์ด ๋ฌธ์ œ ์—ญ์‹œ quick-reference์—์„œ ๋ดค๋‹ค๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

 

9. NetworkPolicy

NetworkPolicy๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํŠน์ • namspace์˜ Pod์˜ ์š”์ฒญ๋งŒ ์ •ํ•ด์ง„ ํฌํŠธ๋ฅผ ํ†ตํ•ด ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ผ.(ingress)

 

๊ด€๋ จ ๊ณต์‹ ๋ฌธ์„œ

https://kubernetes.io/docs/concepts/services-networking/network-policies/#networkpolicy-resource

 

๋Œ€๋žต์ ์ธ ํ’€์ด

# ๊ณต์‹๋ฌธ์„œ์—์„œ ๊ฐ€์ ธ์˜จ ์˜ˆ์‹œ
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy -> ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„๋Œ€๋กœ ์ˆ˜์ •
  namespace: default -> ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„๋Œ€๋กœ ์ˆ˜์ •
spec:
  podSelector:
    matchLabels:
      role: db -> ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„๋Œ€๋กœ ์ˆ˜์ •
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          project: myproject -> ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„๋Œ€๋กœ ์ˆ˜์ •
    - podSelector:
        matchLabels:
          role: frontend -> ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„๋Œ€๋กœ ์ˆ˜์ •
    ports:
    - protocol: TCP
      port: 6379  -> ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„๋Œ€๋กœ ์ˆ˜์ •
  • networkpolicy ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ์ž˜ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์–ด๋ ต์ง€ ์•Š๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

 

์ •ํ™•ํ•œ ๋ณต๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์–ด๋””๊นŒ์ง€๋‚˜ ์ฐธ๊ณ ์ž…๋‹ˆ๋‹ค! 1ํŠธ์— ํ•ฉ๊ฒฉํ•˜์„ธ์—ฌ๐Ÿค—

728x90