kube-Apiserver

Yu Sang Min·2025년 5월 16일

CKA

목록 보기
3/110
post-thumbnail

📌kube-apiserver

  • 쿠버네티스의 주요 관리 구성 요소
  • kubectl 사용시 명령어가 kube-apiserver에 도달
  • kubeadm이 먼저 요청을 인증하고 유효성을 확인
  • 이후 etcd-cluster에서 데이터를 조회해 요청된 정보로 응답

📋 kubectl 명령 실행 절차

  1. Authenticate User
    ⬇️
  2. Validate Request
    ⬇️
  3. Retrieve data
    ⬇️
  4. Update ETC
    ⬇️
  5. Scheduler
    ⬇️
  6. Kubelet

⌨️ kubectl 명령어와 api 직접 호출 명령어

$ kubectl get nodes
  • kubectl command를 사용하지 않고 직접 API를 호출 할 수 도 있음
curl -X POST /api/v1/namespaces/default/pods …[other]

📢 api 직접 호출 과정

  • scheduler는 지속적으로 API 서버를 모니터하고 노드가 할당되지 않은 새로운 Pod가 있다는것을 감지
  • scheduler가 올바른 노드를 식별해 새 Pod를 생성하고 다시 kube-apiserver와 통신
  • 이후 etcd-cluster에 정보를 업데이트함

💡 상세과정

  • kube-apiserver는 해당 정보를 적절한 Worker nodekubelet에게 전달
  • kubeletnodePod를 생성하고 컨테이너 런타임 엔진에 지시해 앱 이미지를 배포
  • 완료되면 kubelet은 상태를 kube-apiserver로 다시 업데이트 하고 API 서버는 etcd-cluster에서 데이터를 최종 업데이트

❓so what

  • kube-apiserver 는 클러스터를 업데이트 하기위해 수행해야 하는 모든 작업의 중심
  • kube-apiserver는 etcd-cluster 저장소와 직접 상호작용하는 유일한 구성요소
  • manager, kubelet, scheduler 등등은 API 서버를 이용해 각 영역의 클러스터에서 업데이트를 수행

👑 kubeadm

  • kubeadm 도구를 이용해 클러스터를 부트스트랩 했다면 알 필요 없지만 하드웨어를 설정하는 경우 kube-apiserver는 kubernetes 릴리스 페이지에서 바이너리로 사용가능
  • 쿠버네티스 마스터 노드에서 서비스로 실행되도록 다운로드하고 구성

⚙️ Installing kube-api server

  • kube-apiserver는 많은 매개 변수로 실행된다.
  • 쿠버네티스 아키텍처의 개별 구성요소를 설치하고 구성하는 방법에 대해서도 알아볼 것
  • 많은 구성요소가 인증서를 통해 통신한다 (SSL/TLS)

📍etcd-server options

  • 서버의 위치를 지정하는곳 (IP, 2379포트)
  • 이 옵션을 어디서 볼 수 있나 👉 클러스터를 어떻게 설정하느냐에 따라 다름
    • kubeadm : kube-apiserver를 마스터 노드의 kube-system namespaces에 pod 형태로 배포함 👉 이것은 Pod의 Definition 파일에서 옵션을 확인 할 수 있음 (아마도, yaml 파일)
$ cat /etc/kubernetes/manifests/kube-apiserver.yaml
  • kubeadm을 사용하지 않을때 : kube-apiserver 서비스를 보면서 옵션을 확인 할 수 있음
$ cat /etc/systemd/system/kube-apiserver.service

📍프로세스 실행, 효과적인 옵션 확인

$ ps -aux | grep kube-apiserver
profile
React, Node.js, AWS, Git, Github, Github Action, Docker, K8S

0개의 댓글