노드 관리하기

페이지 이동경로

노드 관리하기

노드란 컨테이너 애플리케이션이 실행되는 서버로, Kubernetes Engine에서는 동일한 인스턴스 타입을 가지는 노드 그룹인 노드 풀 단위로 노드를 관리합니다.
Kubernetes Engine 서비스에서 노드를 관리하는 방법은 다음과 같습니다.

노드 풀 관리하기

Kubernetes Engine 서비스에서 노드 풀을 관리하는 방법은 다음과 같습니다.

노드 풀 생성하기

클러스터에 노드 풀을 생성할 수 있습니다.

  1. 카카오 i 클라우드 콘솔에서 Kubernetes Engine 메뉴를 선택합니다.

  2. 클러스터 목록에서 노드 풀을 생성할 클러스터를 클릭합니다.
  3. 클러스터의 상세 페이지에서 노드 풀 탭을 클릭한 후, [노드 풀 만들기] 버튼을 클릭합니다.

    그림. 노드 풀 만들기 이미지 노드 풀 만들기 버튼

  4. 노드 풀 만들기에서 정보를 입력하고, [만들기] 버튼을 클릭합니다.

    그림. 노드 풀 만들기 이미지 노드 풀 만들기

    노드 풀 만들기

    구분 설명
    기본 설정 노드 풀의 기본 정보 설정
    - 노드 풀 이름: 영어 소문자, 숫자, 하이픈(-)을 사용해 4 ~ 20자 이내로 작성, 시작 문자는 영어 소문자만 가능하며 하이픈(-)으로 끝날 수 없음
    - 노드 풀 설명(선택): 60자 이내로 노드 풀 설명 작성
    - 인스턴스 타입: 노드 풀의 인스턴스 타입 선택
    - 볼륨 타입/크기: 인스턴스의 볼륨 타입과 크기를 설정, 현재 볼륨 타입은 SSD 타입으로 고정되어 있고 볼륨 크기는 30 ~ 5,120GB 내에서 지정 가능
    - 노드 수: 노드 풀의 노드 개수 설정
    고급 설정(선택) 노드 풀의 고급 정보 설정
    - 키페어(선택): 노드 풀에 속한 노드 인스턴스에 SSH 접근이 필요한 경우 키페어 사용을 설정함
      ㄴ 기존 키페어를 선택 또는 신규 키페어를 생성 가능
      ㄴ 신규 키페어 생성 방법: 신규 키페어 생성을 클릭한 후, 키페어 이름 입력 후 [생성 및 다운로드]를 클릭하여 pem 파일을 다운로드
      * 노드 풀에 지정한 키페어는 인스턴스 세부 정보에 표시되지 않음
      * 클러스터 생성 후에는 키페어 변경이 불가하며, 변경 필요시 노드 풀을 새로 생성하여 설정해야 합니다.
    - 노드 레이블(선택): 노드 풀에 있는 모든 노드에 적용될 Kubernetes 레이블 지정, 설정한 레이블은 nodeSelector와 함께 사용 가능
    - 노드 테인트(선택): 노드 풀에 있는 모든 노드에 적용될 Kubernetes 테인트 지정 설정한 테인트는 toleration과 함께 사용 가능
    - 사용자 스크립트(선택): 노드 풀에 있는 모든 노드의 생성 시점에 실행할 쉘 스크립트 입력, 노드에 별도 구성이 필요할 때 사용하며 최대 16KB까지 입력 가능, 한 번 설정한 사용자 스크립트는 변경 불가

노드 풀 설정 보기

클러스터에 속한 노드 풀의 정보 및 노드 수를 확인하거나 수정할 수 있습니다.

  1. 카카오 i 클라우드 콘솔에서 Kubernetes Engine 메뉴를 선택합니다.
  2. 클러스터 목록에서 노드 풀 설정을 확인할 클러스터를 클릭합니다.
  3. 클러스터의 상세 페이지에서 노드 풀 탭을 클릭한 후, 설정할 노드 풀의 [더보기] 아이콘 > 노드 풀 설정을 클릭합니다.

    그림. 노드 풀 설정
    이미지 노드 풀 설정

  4. 노드 풀 설정 팝업창에서 정보를 확인합니다.
    • 설정 수정 시, 정보를 입력하고 [저장] 버튼을 클릭합니다.

    그림. 노드 풀 설정 팝업창 이미지 노드 풀 설정 팝업창

    구분 설명
    노드 풀 정보 노드 풀의 정보
    - 노드 풀 이름: 변경 불가
    - 노드 풀 설명(선택): 현재 노드 풀 설명을 확인하거나 60자 이내로 수정 가능
    노드 수 현재 노드 풀 개수로, 변경 가능

노드 풀 상세 보기

노드 풀의 세부 정보와 해당 노드 풀에 속한 노드의 정보를 확인할 수 있습니다.

  1. 카카오 i 클라우드 콘솔에서 Kubernetes Engine 메뉴를 선택합니다.
  2. 클러스터 목록에서 상세 정보를 확인할 노드 풀이 속한 클러스터를 클릭합니다.
  3. 클러스터의 상세 페이지에서 노드 풀 탭을 클릭한 후, 확인할 노드 풀을 클릭합니다.
  4. 노드 풀의 상세 페이지에서 정보를 확인합니다.

    그림. 노드 풀 상세 페이지

    이미지 노드 풀 세부 정보 탭

    구분 설명
    세부 정보 Kubernetes 버전 노드 풀의 노드가 현재 사용 중인 Kubernetes 버전 정보
      키페어 노드 풀의 노드에 설정된 키페어 정보
      생성일 노드 풀의 생성일 정보
      볼륨 타입 노드 풀에 설정된 볼륨 타입 정보
      노드 레이블 노드 풀에 설정된 노드 레이블 정보
      노드 테인트 노드 풀에 설정된 노드 테인트 정보
      사용자 스크립트 노드 풀에 설정된 사용자 스크립트 정보
    노드 노드 노드의 정보
    - 노드 이름 클릭 시, 노드 상세 페이지에서 노드 정보 확인 가능
      노드 상태 노드 상태의 정보
    - Running: 노드가 준비되어 실행 중
    - Provisioned: 노드 프로비저닝 완료
    - Deleted: 노드 삭제 완료
    - Pending: 노드 프로비저닝 준비 중
    - Provisioning: 노드 프로비저닝 중
    - Deleting: 노드 삭제 중
    - Failed: 사용자의 개입이 필요한 실패 상태
      노드 풀 노드가 속한 노드 풀 정보
      생성 요청 시간 노드가 생성 요청된 시점부터 현재까지의 시간의 합으로, 노드의 생성일을 의미하지 않음

노드 관리하기

Kubernetes Engine 서비스에서 노드를 관리하는 방법은 다음과 같습니다.

노드 상세 보기

노드의 상세 정보를 확인할 수 있습니다.

  1. 카카오 i 클라우드 콘솔에서 Kubernetes Engine 메뉴를 선택합니다.
  2. 클러스터 목록에서 상세 정보를 확인할 노드 풀이 속한 클러스터를 클릭합니다.
  3. 클러스터의 상세 페이지에서 노드 탭을 클릭한 후, 확인할 노드를 클릭합니다.
    • 또는 노드 풀 탭에서 상세 정보를 확인할 노드가 있는 노드 풀을 클릭한 후, 해당 노드 풀의 상세 페이지에서 노드 탭을 클릭합니다. 그리고 노드 탭에서 상세 정보를 확인할 노드를 클릭합니다.
  4. 세부 정보 탭에서 정보를 확인합니다.

    그림. 노드 세부 정보 탭 이미지 노드 세부 정보 탭

    구분 설명
    인스턴스 ID 노드에 해당하는 VM 인스턴스 ID 정보
    - 인스턴스 ID 클릭 시 VM 인스턴스 페이지로 이동
    인스턴스 타입 노드에 해당하는 VM 인스턴스 타입
    인스턴스 생성일 노드에 해당하는 VM 인스턴스 생성 날짜
    Kubernetes 버전 노드의 쿠버네티스 버전
    키페어 노드에 설정된 키페어 정보
    - 노드 풀을 통해 지정한 키페어는 인스턴스 세부 정보에 노출되지 않음
    볼륨 노드에 해당하는 VM 인스턴스에 연결된 볼륨 정보
    사설 IP 노드의 사설 IP 정보
    노드 상세 요약 노드 성능과 상태 정보를 제공하며, [새로고침] 아이콘 클릭 시, 노드의 최신 정보를 갱신
    - 파드: 현재 노드에 실행 중인 파드 정보
    - 노드 컨디션: 현재 노드의 상세한 상태 정보
    - 테인트: 현재 노드에 설정된 테인트 정보
    - 레이블: 현재 노드에 설정된 레이블 정보
    - 어노테이션: 현재 노드에 설정된 어노테이션 정보
    - 할당 가능 리소스: 현재 노드에 할당 가능한 리소스 현황 정보
    - 이벤트: 현재 노드에 발생한 이벤트 정보

노드 모니터링하기

노드 리소스의 사용량 및 추세 정보 등 모니터링 정보를 특정 기간의 차트로 확인할 수 있습니다.

안내
2022년 10월 25일 이전에 생성한 클러스터의 경우, 모니터링 정보가 보이지 않을 수 있습니다. 헬프데스크의 기술 문의를 통해 문의하시기 바랍니다.

  1. 카카오 i 클라우드 콘솔에서 Kubernetes Engine 메뉴를 선택합니다.
  2. 클러스터 목록에서 상세 정보를 확인할 노드 풀이 속한 클러스터를 클릭합니다.
  3. 클러스터의 상세 페이지에서 노드 탭을 클릭한 후, 확인할 노드를 클릭합니다.
    • 또는 노드 풀 탭에서 상세 정보를 확인할 노드가 있는 노드 풀을 클릭한 후, 해당 노드 풀의 상세 페이지에서 노드 탭을 클릭합니다. 그리고 노드 탭에서 상세 정보를 확인할 노드를 클릭합니다.
  4. 모니터링 탭에서 기간과 노드/파드를 선택하고, 정보를 확인합니다.

    노드 모니터링
    노드 선택 시, 해당 노드의 리소스 사용량과 추세 정보를 확인할 수 있습니다.

    그림. 노드 모니터링 정보 이미지 노드 모니터링 정보

    구분 설명
    CPU 사용량(millicore) 해당 노드의 CPU 사용량
    Memory 사용량(Bytes) 해당 노드의 Memory 사용량
    Disk 사용량(Bytes) 해당 노드의 Disk 사용량
    RX Networ(byte/s) 해당 노드가 네트워크를 통해 수신받은 바이트 수
    TX Network(byte/s) 해당 노드가 네트워크를 통해 전송하는 바이트 수
    예약된 CPU 컴퓨팅 용량(%) 해당 노드 구성 요소에 예약된 CPU의 비율
    예약된 Memory 컴퓨팅 용량(%) 해당 노드 구성 요소에 예약된 Memory의 비율
    파드(개) 해당 노드에서 실행 중인 파드 개수
    컨테이너(개) 해당 노드에서 실행 중인 컨테이너 개수

    파드 모니터링
    파드 선택 시, 노드에서 실행 중인 파드의 리소스 사용량과 추세 정보를 확인할 수 있습니다.

    그림. 파드 모니터링 정보

    이미지 파드 모니터링 정보

    구분 설명
    CPU 사용량(millicore) 해당 파드의 CPU 사용량
    Memory 사용량(Bytes) 해당 파드의 Memory 사용량
    RX Network(byte/s) 해당 파드가 네트워크를 통해 수신받은 바이트 수
    TX Network(byte/s) 해당 파드가 네트워크를 통해 전송하는 바이트 수
    예약된 CPU 컴퓨팅 용량(%) 해당 파드에 예약된 CPU의 비율
    예약된 Memory 컴퓨팅 용량(%) 해당 파드에 예약된 Memory의 비율

노드 복구하기

Failed 상태인 노드를 복구할 수 있습니다.

주의
노드 복구 시, 해당 노드를 drain 후 새로운 노드를 생성하며 기존 노드는 삭제됩니다. 실행 중인 서비스가 영향을 받을 수 있으며 삭제된 노드는 복구할 수 없습니다. 복구하여 신규 생성된 노드는 노드에 해당하는 VM의 IP가 변경되니 유의하여 진행해야 합니다.

  1. 카카오 i 클라우드 콘솔에서 Kubernetes Engine 메뉴를 선택합니다.
  2. 클러스터 목록에서 상세 정보를 확인할 노드 풀이 속한 클러스터를 클릭합니다.
  3. 클러스터의 상세 페이지에서 노드 탭을 클릭한 후, 복구할 노드의 [더보기] 아이콘 > 노드 복구를 클릭합니다.

    그림. 노드 복구 이미지 노드 복구

  4. 노드 복구 팝업창에서 정보를 입력하고, [복구] 버튼을 클릭합니다.

    그림. 노드 복구 팝업창 이미지 노드 복구 팝업창

노드 풀 삭제하기

더 이상 사용하지 않는 노드 풀을 삭제할 수 있습니다.

주의
노드 풀 삭제 시, 노드 풀에 포함된 모든 노드가 삭제되며 복구할 수 없습니다.

  1. 카카오 i 클라우드 콘솔에서 Kubernetes Engine 메뉴를 선택합니다.
  2. 클러스터 목록에서 삭제할 노드 풀이 속한 클러스터를 클릭합니다.
  3. 노드 풀 탭을 클릭한 후, 삭제할 노드 풀의 [더보기] 아이콘 > 노드 풀 삭제를 클릭합니다.

    그림. 노드 풀 삭제 버튼 이미지 노드 풀 삭제

  4. 노드 풀 삭제 팝업창에서 정보를 입력하고, [삭제] 버튼을 클릭합니다.

    그림. 노드 풀 삭제 이미지 노드 풀 삭제 버튼

노드 업데이트하기

클러스터에서 최신 Kubernetes 버전으로 업데이트 완료된 경우 또는 OS 버전 등 최신 노드 컴포넌트 업데이트로 노드에서 최신 이미지를 사용할 수 있는 경우, 노드를 업데이트할 수 있습니다.

Rolling 업데이트 절차

노드 업데이트 실행 시 다음 절차에 따라 Rolling 업데이트가 진행됩니다.

  1. 최신 이미지 버전의 신규 노드를 생성합니다.

  2. 기존 노드에서 실행되는 파드를 축출(Eviction)하고 노드를 스케줄 불가능(Unschedulable)한 상태로 전환합니다.

  3. 축출된 파드는 신규 노드에서 실행되며, 축출이 끝나면 기존 노드는 삭제합니다.

  4. 해당 과정을 모든 기존 노드에 대해 순차적으로 반복합니다.

업데이트 전 고려사항

업데이트하기 전 다음의 조건 중 하나라도 충족하지 않는 경우 업데이트가 진행되지 않습니다.

업데이트 시작 조건

조건 설명
클러스터 상태 Provisioned 상태
- 그 외 상태인 경우 업데이트 버튼이 노출되지 않음
노드 풀 상태 Running 상태
- 그 외 상태인 경우 업데이트 버튼이 노출되지 않음

업데이트하기

노드 풀이 업데이트 시작 조건을 만족한 경우 노드 풀을 업데이트할 수 있습니다.

주의
업데이트 시작 시 취소할 수 없으며, 업데이트 전으로 되돌릴 수 없습니다.

  1. 카카오 i 클라우드 콘솔에서 Kubernetes Engine 메뉴를 선택합니다.
  2. 클러스터 목록에서 삭제할 노드 풀이 속한 클러스터를 클릭합니다.
  3. 노드 풀 탭을 클릭한 후, 노드 풀 목록 혹은 노드 풀 상세 페이지의 이미지 정보에서 [업데이트] 버튼을 클릭합니다.
  4. 노드 풀 버전 업데이트 팝업창에서 정보를 확인하고 [업데이트] 버튼을 클릭합니다.

    그림. 노드 풀 버전 업데이트 이미지 노드 풀 버전 업데이트

  5. 클러스터가 업데이트를 시작하면 클러스터의 상태는 Updating으로 전환됩니다. 클러스터 업데이트가 완료되면 Provisioned상태로 전환됩니다. 업데이트 중에는 신규 노드 풀의 추가와 기존 노드 풀 설정이 불가합니다.

업데이트 실패 시 확인사항

  • Rolling 업데이트 실행 중 노드를 drain 하는 과정에서 PDB(PodDisruptionBudget) 설정으로 인해 파드를 정상적으로 drain 할 수 없는 경우, 업데이트가 실패할 수 있습니다. 업데이트 실패 시 다음과 같은 방법으로 시도해볼 수 있습니다. 자세한 설명은 공식 Kubernetes 문서를 참고하시기 바랍니다.
  • 파드를 정상적으로 drain 하기 위해 PDB의 Min AvailableMax unavailable 값을 수정합니다. Max unavailable 값이 0일 경우 업데이트를 위한 노드 drain이 실패하므로 유의해야 합니다.
  • PDB를 백업한 후 PDB를 삭제합니다. 업데이트가 완료된 후 PDB를 다시 설정합니다.
  • Deployment, StatefulSet 등으로 배포되어 ReplicaSet으로 파드의 개수가 조절되는 경우 파드 drain이 실패할 수 있습니다. 이러한 경우 Deployment, StatefulSet 등을 미리 백업 후 삭제합니다.
  • 추가로 노드를 안전하게 drain 하는 방법에 대한 가이드는 공식 Kubernetes 문서에서 확인할 수 있습니다.
  • 노드 풀의 업데이트는 Rolling 업데이트 방식으로, 현재 노드와 동일한 수의 노드를 생성할 수 있어야 합니다. 따라서 사용자의 프로젝트에서 사용할 수 있는 VM 및 IaaS 리소스가 부족하면 업데이트가 실패할 수 있습니다.
  • 업데이트 중 노드가 Failed 상태로 전환되어 UpdatingPending 되는 경우, 노드 복구를 진행할 수 있습니다. 노드가 복구되면 업데이트가 정상적으로 다시 진행됩니다. 노드 풀이 Updating 상태로 장시간 지속 시, 헬프데스크의 기술 문의를 통해 문의하시기 바랍니다.