본문 바로가기

Infra/Kubernetes

3. 쿠버네티스 개념

1. 쿠버네티스 클러스터의 전체 구조

  • 마스터
    • etcd, kube-apiserver, kube-scheduler, kube-controller-manager, kubelet, kube-proxy, docker 등의 컴포넌트가 실행된다
    • etcd
      • Key Value 저장소 이자 데이터베이스 역할을 한다.
      • 서버 하나당 프로세스 1개만 사용 가능하다
    • kube-apiserver
      • 쿠버네티스 클러스터의 API를 사용할 수 있도록 하는 컴포넌트이다.
      • 클러스터로 온 요청이 유효한지 검증
      • 서버 여러 대에 여러개 실행 가능
    • kube-scheduler
      • 현재 클러스터 안에서 자원 할당이 가능한 노드 중 알맞은 노드를 선택해서 새롭게 만든 파드를 실행한다.
    • kube-controller-manager
      • Pod들을 관리하는 Controller를 실행하는 컴포넌트이다.
    • Cloud-controller-manager
      • 쿠버네티스의 컨트롤러들을 클라우드 서비스와 연결해 관리하는 컴포넌트이다.
      • 4가지 컨트롤러를 관리한다.
        • Node Controller: 클라우드 서비스 안에서 노드를 관리하는 데 사용된다. 
        • Route Controller: 각 클라우드 서비스 안의 네트워크 라우팅을 관리하는데 사용된다.
        • Service Controller: 각 클라우드 서비스에서 제공하는 로드밸런서를 생성, 갱신, 삭제하는 데 사용된다.
        • Volume Controller: 클라우드 서비스에서 생성한 볼륨을 노드에 연결하거나 마운트하는 등에 사용된다.
  • 노드
    • kubelet, kube-proxy, docker 등의 컴포넌트가 실행된다
    • kubelet
      • 파드 컨테이너들의 실행을 직접 관리하는 컴포넌트이다(실행 및 헬스체크를 한다)
    • kube-proxy
      • 가상 네트워크의 동작을 관리하는 컴포넌트이다(네트워크 규칙관리 및 연결전달)
    • 컨테이너 런타임(도커)
      • 실제 컨테이너를 실행하는 컴포넌트
  • 애드온
    • 네트워킹 애드온
      • 각 클라우드 서비스마다 제공하는 애드온이 있다
    • DNS 애드온
      • kube-dns
      • CoreDNS (1.13버전 부터는 기본 DNS애드온이 되었다)
    • 대시보드 애드온
      • 쿠버네티스 웹 UI 버전이라고 생각하면 된다
    • 컨테이너 자원 모니터링
      • 클러스터 안에서 실행 중인 컨테이너의 상태를 모니터링하는 애드온이다
    • 클러스터 로깅 
      • 로그들을 중앙화한 로그 수집 시스템에 모아서 보는 애드온이다
        (클라우드 서비스를 이용중이라면 따로 제공하는 로깅 서비스가 있다).

2. 오브젝트와 컨트롤러

  • Object
    • Pod, Service, Volume, Namespace 등이 있다
  • Controller
    • ReplicaSet, Deployment, StatefulSet, DaemonSet, Job 등이 있다

 

2.1. 네임 스페이스 

네임 스페이스는 쿠버네티스 클러스터 하나를 여러 개 논리적인 단위로 나눠서 사용하는 것이다.

 

2.1.1. Namespace 종류

  • default : 기본 네임 스페이스
  • kube-system : 시스템에서 관리하는 네임스페이스, 쿠버네티스 관리용 파드나 설정이 있다.
  • kube-public : 클러스터 안 모든 사용자가 읽을 수 있는 네임스페이스, 보통 클러스터 사용량 같은 정보를 관리한다. 
  • kube-node-lease : Lease Object를 관리하는 네임스페이스

 

2.1.2. 명령어

  • Namespace 확인
    • kubectl get namespaces
  • 기본 Namespace변경 
    • Context 정보 확인
      • config current-context
      • config get-contexts docker-desktop
    • 기본 Namespace변경
      • kubectl config set-context docker-desktop --namespace=kube-system
      • 또는 kubectl config set-context $(kubectl config current-context) --namespace=kube-system
    • 변경확인
      • kubectl config get-contexts $(kubectl config current-context) --namespace=kube-system
      • kubectl config view | grep namespace
      • Pod마다 기본 Namespace설정 확인
        • kubectl get pods --all-namespaces

 

2.2. 템플릿

템플릿의 기본형식은 아래와 같다 

---
apiVersion: v1
kind: Pod
metadata:
spec:

 

자세한 사항은 explain 명령어를 통해 확인 가능하다

  • kubectl explain pods
  • kubectl explain pods.metadata
  • kubectl explain pods --recursive

'Infra > Kubernetes' 카테고리의 다른 글

Docker 명령어 정리  (0) 2020.09.19
4. POD  (0) 2020.06.05
2. 쿠버네티스로 컨테이너 실행하기  (0) 2020.06.04
1. 쿠버네티스 관련 설정 및 설치  (0) 2020.06.03
4. 파드와 노드  (0) 2020.05.24