웹사이트 검색

Kuberentes의 정적 포드


이 페이지에서

  1. 전제 조건
  2. 무엇을 할 것인가?\n
  3. 정적 포드 만들기
  4. 결론

정적 포드는 kubelet에서 직접 관리하며 API 서버는 이러한 포드를 제어할 수 없습니다. kubelet은 각 정적 Pod를 감시하고 충돌이 발생하면 다시 시작해야 합니다. 노드에서 실행 중인 정적 포드는 API 서버에 표시되지만 API 서버에서 제어할 수는 없습니다. Static Pod에는 연결된 복제 컨트롤러가 없으며 kubelet 서비스 자체가 이를 감시하고 비정상 종료되면 다시 시작합니다. 정적 팟(Pod)에 대한 상태 확인이 없습니다. kubelet 프로세스는 정적 포드용으로 지정된 특정 디렉터리를 감시합니다.

Static Pod에 대해 자세히 알아보려면 여기에서 Kubernetes의 공식 페이지를 방문하세요.

이 기사에서는 kubelet이 매니페스트를 읽는 기본 위치에 저장된 파일에서 정적 포드를 생성하는 단계를 살펴보고 기본 위치를 다른 디렉터리로 변경하고 거기에서 정적 포드를 생성하는 방법도 살펴봅니다. 작업자 노드에 정적 포드를 생성합니다.

전제 조건

  1. 워커 노드가 1개 이상 있는 Kubernetes 클러스터.
    Kubernetes 클러스터를 만드는 방법을 알아보려면 여기를 클릭하세요. 이 안내서는 AWS Ubuntu 18.04 EC2 인스턴스에서 1개의 마스터와 2개의 노드가 있는 Kubernetes 클러스터를 생성하는 데 도움이 됩니다.\n

우리는 무엇을 할 것인가?

  1. 정적 포드 만들기

정적 포드 생성

마스터 노드에서 다음 명령을 실행하여 클러스터의 노드 및 포드 세부 정보를 가져옵니다.

$master kubectl  get nodes
$master kubectl  get pods

포드의 일부로 실행 중인 컨테이너를 확인할 수 있습니다.

$worker docker ps
$worker docker ps -a

이제 작업자 노드에 로그인하고 정적 포드 매니페스트의 기본 경로에서 다음 콘텐츠로 새 파일을 만듭니다.

$worker vim /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

정적 포드 매니페스트의 기본 위치에 포드 정의를 생성하는 즉시 API 서버에서 제어하지 않는 포드가 생성됩니다.

다음 명령으로 새로 생성된 포드를 확인하여 마스터 노드에서 모든 네임스페이스의 포드를 나열할 수 있습니다.

$master kubectl  get pods
$master kubectl  get pods --all-namespaces

Pod의 일부로 생성된 컨테이너를 확인하려면 작업자 노드에서 다음 명령을 실행합니다.

$worker docker ps
$worker docker ps -a

kubelet이 매니페스트를 읽는 기본 위치를 변경할 수도 있습니다.

이제 정적 포드의 매니페스트를 저장할 새 폴더를 만듭니다.

여기서는 "/etc/kubelet.d/"를 생성합니다.

$worker mkdir -p /etc/kubelet.d/

생성한 디렉터리에 포드 정의 파일을 생성합니다.

$worker vim /etc/kubelet.d/static-web.yaml
apiVersion: v1
kind: Pod
metadata:
  name: static-web-2
  labels:
    role: myrole
spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80
          protocol: TCP

Kubelets가 정적 포드의 매니페스트를 읽는 기본 경로를 변경하려면 /var/lib/kubelet/config.yaml 파일을 편집하고 "staticPodPath" 값을 "staticPodPath=/etc/kubelet.d"로 변경합니다.

구성이 완료되면 Kubelet 서비스를 다시 시작합니다.

$worker systemctl restart kubelet

서비스가 다시 시작되는 즉시 Kubelet은 새 위치를 감지하고 해당 위치에서 매니페스트를 읽고 포드를 생성합니다.

포드가 생성되었는지 확인합니다.

$master kubectl  get pods

다음 명령을 사용하여 작업자 노드에서 Pod의 일부로 생성된 컨테이너를 확인합니다.

$worker docker ps

결론

이 기사에서는 정적 포드를 생성하는 단계와 정적 포드의 매니페스트에 대한 기본 디렉터리를 변경하기 위해 Kubelet에서 필요한 구성 변경을 확인했습니다.