[CKA] Static Pods

hope·2023년 11월 2일

CKA

목록 보기
4/8
post-thumbnail

Static Pod란

참고 문서: kubernetes.io/Create static Pods
API 서버 없이 특정 노드의 kubelet 데몬에 의해 직접 관리됨
즉, 컨트롤플레인에 의해 관리되는 Pod와 다름

특징

  • API 서버에 의해 확인은 가능하지만 제어는 불가함
    이 때, 확인되는 파드는 미러 파드이므로 kubectl을 이용해 스태틱 파드를 삭제해도 삭제되지 않는 것을 확인할 수 있음
  • 파드 이름에 노드 호스트의 이름이 접미사로 붙음
    예를 들어 static pod가 배포된 노드가 node01이라면 파드 이름은 static-greenbox-node01와 같음

생성 방법

파일시스템이 호스팅하는 static pod manifest

--pod-manifest-path

명시한 디렉터리를 정기적으로 스캔하여 매니페스트 파일의 생성 유무에 따라 스태틱 파드를 생성하거나 삭제함

  1. 스태틱 파드를 실행할 노드 접속
ssh node01
  1. kubelet 구성 파일 디렉토리(/etc/kubernetes/manifests)에 매니페스트 파일 생성
# kubelet 이 동작하고 있는 노드에서 이 명령을 수행한다.
mkdir -p /etc/kubernetes/manifests/
cat <<EOF >/etc/kubernetes/manifests/static-web.yaml
apiVersion: v1
kind: Pod
metadata:
  name: static-web
  labels:
    role: myrole
spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80
          protocol: TCP
EOF
  1. kubelet 설정
KUBELET_ARGS="--cluster-dns=10.254.0.10 --cluster-domain=kube.local --pod-manifest-path=/etc/kubernetes/manifests/"
  1. kubelet 재시작
# kubelet 이 동작하고 있는 노드에서 이 명령을 수행한다.
systemctl restart kubelet

웹이 호스팅하는 static pod manifest

--manifest-url=<URL>

웹 매니페스트를 사용해 매니페스트 파일을 주기적으로 다운로드하여 변경된 부분이 있을 경우 kubelet이 적용함

  1. yaml 파일 생성 후 웹 서버에 저장
apiVersion: v1
kind: Pod
metadata:
  name: static-web
  labels:
    role: myrole
spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80
          protocol: TCP
  1. 해당 노드로 접속하고 kubelet 설정 (웹 서버 url 입력)
  KUBELET_ARGS="--cluster-dns=10.254.0.10 --cluster-domain=kube.local --manifest-url=<manifest-url>"
  1. kubelet 재시작

Static Pod 구동 확인

kubelet을 재시작하면 추가한 스태틱 파드들이 모두 실행되는 것을 확인할 수 있음

특정 노드에서 구동 중인 스태틱 파드와 컨테이너들을 확인할 수 있음

# kubelet 이 동작하고 있는 노드에서 이 명령을 수행한다.
crictl ps
profile
devops 엔지니어

0개의 댓글