본문 바로가기
Kubernetes (k8s)

[k8s] Static Pod

by moveho 2023. 4. 17.

 

Static Pod에 대해 알아보자

Static Pod 의 개념

Kubernetes(K8s)에서 Static Pod는 Kubelet에 의해 관리되는 Pod의 특수한 유형입니다. 이러한 Pod는 정적으로 구성되어 있으며, 일반적으로 Kubernetes API 서버에서 제공하는 Pod Spec이 아니라 kubelet 구성 파일 디렉토리에 위치한 YAML 또는 JSON 파일에 의해 정의됩니다.  경로는 보통 /etc/kubernetes/manifests 에 위치 됩니다.

 

Static Pod 의 특징

Static Pod는 Kubernetes 클러스터를 부트스트래핑하는 데 사용됩니다. 예를 들어, Kubernetes 클러스터의 모든 노드가 사용 가능한 경우, 각 노드의 kubelet에는 클러스터 노드의 상태를 보고하는 Kubernetes API 서버와 함께 실행될 여러 가지 정적 Pod가 있을 수 있습니다.

 kubelet은이 디렉토리를 주기적으로 폴링하여 새 파일을 찾고 감지된 각 파일을 Pod로 실행합니다. 또한 kubelet은 파일 이름에 따라 Pod의 이름을 지정하고, 해당 파일의 내용을 Pod Spec으로 사용합니다.
 Static Pod는 Kubernetes API 서버에 의해 직접 생성, 업데이트 또는 삭제되지 않으므로 kubelet에 의해 관리됩니다. 따라서 정적 Pod를 삭제하려면 해당 Pod를 실행하는 kubelet에서 해당 파일을 삭제해야합니다.

 

Static Pod 사용 예시

1. StaticPod 경로 확인

다음의 명령어로 path를 확인할 수 있습니다.

root@k8s-master:~/cka30# cat /var/lib/kubelet/config.yaml 

runtimeRequestTimeout: 0s
shutdownGracePeriod: 0s
shutdownGracePeriodCriticalPods: 0s
staticPodPath: /etc/kubernetes/manifests
streamingConnectionIdleTimeout: 0s
syncFrequency: 0s
volumeStatsAggPeriod: 0s

2. 해당 경로에서 yaml 파일 생성

root@k8s-master:/etc/kubernetes/manifests# vi.static-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: web
  name: web
spec:
  containers:
  - image: nginx
    name: web
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

3. 확인

root@k8s-master:/etc/kubernetes/manifests# kubectl get po

StaticPod의 이름은 원래 worker node이름이 나온다. 

staticPodPath에서 yaml을 만들면 자동으로 pod가 생성되고, yaml를 삭제하면 자동으로 삭제된다.

api로 pod를 생성하는것이 아닌 kubelet이 직접 pod를 실행하는것이다.

댓글