백엔드 개발자 블로그

Cluster Component 본문

CI CD/K8S

Cluster Component

backend-dev 2023. 8. 22. 08:31

1.1. Cluster Architecture

고가용성, 확장성, 자동 복구 기능 제공해서 사용

  • Kubernetes는 Master Node와 Worker Node로 구성되어 있음
    • Master Node
      • ETCD : 클러스터의 구성 정보 저장
      • Kube-API Server : 클러스터에 대한 모든 조작 가능하게 하는 RESTful API 제공
      • Kube Controller Manager : Container를 관리하는 Controller(Pod, ReplicaSet, Deployment, 상태) 관리자
      • Kube Scheduler : Pod를 어느 노드에 배치할지 스케줄링
    • 클러스터 제어 중심 노드
    • Worker Node 구성
      • Kubelet : 마스터의 명령에 따라 노드 상태 보고, 파드 실행 및 관리 : 장애 모니터링과 복구 기능
      • Kube Proxy : 클러스터 내 모든 포드 연결
      • 컨테이너 런타임 : 컨테이너 실행하고 관리
    • 컨테이너가 실행하는 노드

1.2. ETCD

  • 역할
    • 클러스터에 관한 정보(Nodes, Pods, Configs, Secrets, Accounts, Roles, Bindings) 저장
  • 특징
    • 분산되고 신뢰할 수 있는 key-value Store
      • 각 개인당 문서 하나를 갖고 개인에 대한 모든 정보가 해당 key-value형식으로 파일에 저장 됨
      • 한 파일의 변화가 다른 파일에 영향을 안줌
  • 설치 방법
  • 명령어명령어기능
    `./etcd` 실행
    `./etcdctl set key1 value1` key-value 저장
    `./etcdctl get key1` key 값 조회
    `./etcdctl` 명령어 조회
    `./etcdctl --version` 버전 확인(etcdctl, API version)
    `export ETCDTL_API={버전숫자} ./etcdctl version` etcdctl version 변경하기

1.3. Kube-API Server

  • 역할
    • User 인증
    • Request 유효성 확인
    • ETCD와 상호작용(조회, 변경)
    • 스케줄려와 상호작용
    • kubelet에 실행 명령
  • 설치 방법
    • 직접 다운로드해서 설치
    • `wget https:``//storage.googleapis.com/kubernetes-release/release/v1.13.0/bin/linux/amd64/kube-apiserver`
  • 옵션 보기
    • kubeadm 사용해서 옵션 보기
    • `cat /etc/kubernetes/manifests/kube-apiserver.yaml`
    • kubeadm 안사용하고 옵션 보기
      1. api-server 옵션 보기
      2. `cat /etc/systemd/system/kube-apiserver.service`
      3. 프로세스 실행과 효과적인 옵션도 볼 수 있음
      4. `ps -aux | grep kube-apiserver`

1.4. Kube Controller Manager

  • 역할
    • container 를 관리하는 controller 관리자
      • 상태 모니터링
      • 상태 변경
  • 옵션 보기
    • kubeadm 사용해서 옵션 보기
    • `cat /etc/kubernetes/mainifests/kube-controller-manager.yaml`
    • kubeadm 안사용하고 옵션 보기
      1. Kube Controller Manager 옵션 보기
      2. `cat /etc/systemd/system/kube-controller-mangager.sesrvice`
      3. 프로세스 실행과 효과적인 옵션도 볼 수 있음
      4. `ps -aux | grep kube-controller-mangager`

1.5. Kube Scheduler

  • 역할
    • 어떤 POD가 어떤 Node에 들어갈지만 결정
      • 조건에 안맞는 node 필터링
      • 우선순위 따지기
  • 설치 방법
    • 직접 다운로드해서 설치
    • `wget https:``//storage.googleapis.com/kubernetes-release/release/v1.13.0/bin/linux/amd64/kube-scheduler`
  • 옵션 보기
    • kubeadm으로 옵션 보기
    • `cat /etc/kubernetes/mainifests/kube-scheduler.yaml`
    • kubeadm 안사용하고 옵션 보기
      • Kube-Scheduler 옵션 보기
      • `cat /etc/systemd/system/kube-scheduler.sesrvice`
      • 프로세스 실행과 효과적인 옵션도 볼 수 있음
      • `ps -aux | grep kube-scheduler`

1.6. Kubelet

  • 역할
    • 클러스터로 노드를 등록
    • POD를 생성
    • Kube-scheduler에 의해
    • Node와 POD를 모니터링
  • 설치 방법
    • 직접 다운로드해서 설치
    • `wget https:``//storage.googleapis.com/kubernetes-release/release/v1.13.0/bin/linux/amd64/kubelet`
  • 옵션 보기
    • kubeadm 안사용하고 옵션 보기
    • `ps -aux | grep kubelet`

1.7. Kube Proxy

  • 역할
    • 클러스터 내 모든 포드 연결
  • 설치 방법
    • 직접 다운로드해서 설치
    • `wget https:``//storage.googleapis.com/kubernetes-release/v1.13.0/bin/linux/amd64/kube-proxy`
  • 확인하기
    • kubeadm으로 Kube Proxy 확인하기
    • `kubectl get daemonset -n kube-system`

'CI CD > K8S' 카테고리의 다른 글

Core Concept  (0) 2023.08.22