[kubernetes] environment

문혜리·2022년 7월 8일
0

클러스터

  • 컨테이너 형태의 어플리케이션을 호스팅하는 물리/가상 환경의 노드들로 이루어진 집합

클러스터안에 마스터 노드, 워커 노드가 있는데
마스터 노드: 내부요소를 제어하는 control plane 역할을 한다. 즉, 워커노드들을 통제하는 역할(컨테이너 배치, 모니터링)
*관리자들은 마스터 노드를 통해 클러스터 전체를 제어하는 구성이다.

워커노드: 각기 다른 목적과 기능으로 세분화된 컨테이너들이 실제 배치되는 노드들

쿠버네티스 클러스터의 내부 구조

  • 쿠버네티스에서 클러스터의 모든 구성 요소들은 오직 API 서버를 통해서만 상호 접근이 가능하도록 설계.
    아래 그림 참고하기 전 키워드
  • etcd: 클러스터 안의 각 구성요소들에 대한 정보가 키-값 형태로 저장된 데이터베이스
  • kube-scheduler: 애플리케이션 구동에 필요한 각 컨테이너에 대해 클러스터 내 최적의 배포를 수행하는 스케줄러
  • kube-controller-manager: Node, Deployment, Service Account 등 클러스터에서 구동되는 리소스을 유지관리하는 프로세스들의 집합
  • DNS 서버 : 클러스터 안에서 특정 도메인을 찾을 때 사용되는 네임 서버 (구성도에는 kube-dns라 되어 있으나, 쿠버네티스 1.12 버전부터는 CoreDNS로 대체됨)
  • API 서버(kube-apiserver) : 클러스터 구성 요소들의 상호 통신에 필요한 쿠버네티스 API를 관리하는 컴포넌트

Node

  • kubelet: 클러스터의 각 노드에서 API 서버를 통해 들어오는 신호를 모니터링하고 Pod에서 컨테이너가 제 기능대로 정상 동작하도록 관리하는 에이전트
  • kube-proxy: 클러스터의 각 노드에서 실행되는 네트워크 프록시 서비스
  • container runtime engine: 노드에 배포된 Pod 내 컨테이너들을 구동시키는 엔진 like docker

클러스터 제어

  • kubectl: 클러스터와 내부 구성 요소들을 CLI환경에서 직접 제어하는데 쓰이는 도구
kubectl [command][TYPE][NAME][flags] 


쿠버네티스는 desired state과 current state이 있고 계속 루프를 돌며 이 둘을 비교해가며 current state를 desired state으로 만들려고 함

번외; Proxy 서버에 대해서

https://velog.io/@syoung125/%EA%B0%9C%EB%85%90%EA%B3%B5%EB%B6%80-%ED%94%84%EB%A1%9D%EC%8B%9Cproxy-%EC%84%9C%EB%B2%84%EB%9E%80

참고자료

https://seongjin.me/kubernetes-cluster-components/

0개의 댓글