본문 바로가기

쿠버네티스

[쿠버네티스] kube- 관련 개념 정리

728x90

강의 요약: 쿠버네티스의 kube-apiserver와 주요 구성 요소


kube-apiserver 개요

  • kube-apiserver는 쿠버네티스 클러스터의 중앙 관리 구성 요소로, 클러스터 내 모든 변경 요청과 데이터 조회의 중심.
  • 역할:
    1. 요청 인증 및 유효성 검증.
    2. Etcd 데이터 저장소와 상호작용해 데이터를 검색/업데이트.
    3. 스케줄러, kube-controller-manager, kubelet 등 다른 구성 요소와 통신.

kube-apiserver와 클러스터 통신 흐름

  1. 요청 처리
    • kubectl 명령 또는 API 호출로 요청이 전달됨.
    • 인증 및 유효성 검증 후 Etcd에서 데이터 업데이트.
  2. 스케줄러 작업
    • 스케줄러는 새로 생성된 포드를 감지하고, 적절한 노드에 할당.
    • kube-apiserver와 통신하여 클러스터 상태 업데이트.
  3. kubelet 작업
    • 작업자 노드에서 kubelet이 포드를 생성하고 컨테이너를 배포.
    • 완료된 상태를 kube-apiserver로 다시 보고.
  4. Etcd와 동기화
    • 모든 변경 사항은 최종적으로 Etcd 데이터 저장소에 기록.

kube-apiserver의 주요 특징

  • 클러스터에서 유일하게 Etcd와 직접 상호작용.
  • 다른 구성 요소(스케줄러, kube-controller-manager, kubelet)는 API 서버를 통해 간접적으로 Etcd와 상호작용.

kube-apiserver 설정

  1. kubeadm을 이용한 설정
    • kube-system 네임스페이스에서 포드로 배포.
    • 설정 파일 위치:
      • /etc/kubernetes/manifests/kube-apiserver.yaml
  2. 수동 설정 (From Scratch)
    • kubernetes 릴리스 페이지에서 바이너리 다운로드.
    • 마스터 노드에서 서비스로 실행 및 구성.
    • 설정 파일 위치:
      • /etc/systemd/system/kube-apiserver.service
  3. 프로세스 확인
    • 마스터 노드에서 실행 중인 kube-apiserver 프로세스를 나열해 옵션 검사:
      bash
      코드 복사
      ps aux | grep kube-apiserver

kube-apiserver와 인증

  • kube-apiserver는 SSL/TLS 인증서를 사용해 구성 요소 간 연결 보안 유지.
  • 인증서 관련 설정은 강의 후반부에서 다룰 예정

Kube Controller Manager와 컨트롤러의 역할


Kube Controller Manager 개요

  • Kube Controller Manager는 쿠버네티스의 다양한 컨트롤러를 관리하는 중앙 구성 요소.
  • 역할:
    • 시스템 상태를 지속적으로 모니터링.
    • 원하는 상태를 유지하도록 필요한 조치를 수행.
  • 컨트롤러는 쿠버네티스의 "뇌"로서, 시스템 내 구성 요소를 관리하고 조정.

컨트롤러의 주요 예

  1. 노드 컨트롤러
    • 노드의 상태를 모니터링.
    • 일정 시간 동안 노드의 상태가 응답하지 않으면:
      • 해당 노드의 상태를 "접속 불가"로 표시.
      • 해당 노드의 포드를 제거하고 다른 노드로 재배치.
  2. 복제 컨트롤러
    • 복제본 세트의 상태를 모니터링.
    • 원하는 수의 포드가 항상 사용 가능하도록 관리.
    • 포드가 종료되면 새로운 포드를 생성.

컨트롤러의 역할

  • 배포, 서비스, 네임스페이스, 영구 볼륨 등 쿠버네티스의 다양한 기능을 구현.
  • 각 컨트롤러는 자신의 역할에 따라 클러스터를 모니터링하고 관리.

Kube Controller Manager 설치 및 설정

  1. 설치 방법
    • 쿠버네티스 릴리스 페이지에서 Kube Controller Manager 바이너리를 다운로드.
    • 마스터 노드에서 서비스로 실행.
    • 실행 시 사용자 지정 옵션 제공.
  2. 설정 파일 위치
    • kubeadm으로 설정:
      • /etc/kubernetes/manifests/kube-controller-manager.yaml
    • 수동 설정:
      • /etc/systemd/system/kube-controller-manager.service
  3. 프로세스 확인
    • 실행 중인 프로세스를 나열하여 Kube Controller Manager 옵션 확인:
      bash
      코드 복사
      ps aux | grep kube-controller-manager

컨트롤러 설정 옵션

  • 기본 옵션:
    • 노드 모니터 주기, 유예 기간, 퇴거 기간 등.
  • 활성화 옵션:
    • 특정 컨트롤러를 활성화/비활성화 가능.
    • 기본값으로 모든 컨트롤러가 활성화.

Kube Controller Manager의 위치

  • kubeadm으로 설정:
    • kube-system 네임스페이스에 POD로 배포.
  • 수동 설정:
    • 서비스 디렉터리에서 확인 가능.

요약

  • Kube Controller Manager는 여러 컨트롤러를 중앙에서 관리하며, 클러스터의 상태를 유지하고 조정.
  • 다양한 컨트롤러를 통해 쿠버네티스의 모든 기능이 구현됨.
  • 설정 및 옵션은 클러스터 관리 방식에 따라 다름.
728x90