본문 바로가기

컨테이너/Kubernetes

[Kubernetes] (16). Static Pods

 

 

Static Pod란 ? 

 

Static Pods are managed directly by the kubelet daemon on a specific node, without the API server observing them.

스태틱 파드는 kubelet이 다이랙트로 controlplane 노드에서 관리되어지는 pod로써

kubelet은 /etc/kubernetes/manifests에 해당 pod의 구성파일(definition files )을 관리하며 kubelet 이 각각의 스태틱 파드를 감시한다. (만약 실패할 경우 다시 구동한다.)

 

 

etcd,

kube-apiserver,

kube-controller-manager,

kube-scheduler 

 

4개의 pods를 말합니다.

 

# 만약 클러스터로 구성된 쿠버네티스를 구동하고 있고, 스태틱 파드를 사용하여 모든 노드에서 파드를 구동하고 있다면, 스태틱 파드를 사용하는 대신 데몬셋을 사용하는 것이 바람직하다

 


Static pod를 확인하는 방법

 

 # Static pod는 controlplane 노드에 생성되기 때문에 

 # grep 을 통해 controlplane을 조회하면 된다.

### kubectl get pods --all-namespaces | grep "\-controlplane"

# static pods는 controlplane 노드에 생성됩니다.

### kubectl get pods -n kube-system | wc -l 

# kube-system 네임스페이스에 있는 pod count 개수

 

Static Pod를 생성하는 방법

 

#  /etc/kubernetes/manifests/ 폴더로 변경한후에

# kubectl 명령어를 통해 -o yaml을 통해 definition-file을 생성하면 pod가 생성된다.

# cd /etc/kubernetes/manifests/

# kubectl run static-busybox --image=busybox --command sleep 1000 --restart=Never --dry-run -o yaml > static-busybox.yaml

 

해당 폴더안의 definition file을 수정하면 자동으로 kubelet이 파일을 주기적으로 탐색하고 있다.

 

 

kubelet 디렉토리 위치 찾는법

### ps -ef | grep kubelet | grep "\--config"

## worker node에 접속햇을때 kubelet의 definition file의 디렉토리 위치를 확인한다

--config=/var/lib/kubelet/config.yaml

해당 내용이 static pod가 아니다. 

## vi /var/lib/kubelet/config.yaml

## vi 편집기에서 /staticPodPath 로 검색하면 
## /etc/just-to-mess-you 이상한 디렉토리 나온다.
## 디렉토리에 rm 으로 파일 지워주면 된다.