본문 바로가기
GOORM

GOORM: Kubernetes-37

by hxunz 2021. 12. 31.
  1. Facts 
    : 배운것 - 쿠버네티스로 컨테이너 실행하기 / 쿠버네티스 아키텍쳐 / 파드

  2. Findings
    :
    kubectl
     - 쿠버네티스 클러스터를 관리하는 동작은 대부분이 kubectl 이라는 커맨드라인 인터페이스로 실행
     - 셸 스크립트의 일부분으로 사용하여 클러스터의 많은 동작을 자동화
     
    플래그
     - 전역플래그 : 모든 명령에서 사용 가능
     - 개별 플래그 : 개별 명령에서만 사용 가능

    kubeconfig
     - 클러스터 구성 정보

    쿠버네티스를 이용해서 컨테이너 실행
     - kubectl run 명령어 사용
     - YAML 형식의 템플릿으로 컨테이너 실행
     - 쿠버네티스 서비스 : 쿠버네티스 내부에서 실행한 컨테이너를 외부에서 접근하기 위함

    쿠버네티스의 주요 컴포넌트
     - 마스터용 컴포넌트
    etcd 코어OS에서 개발한 고가용성을 제공하는 키-값 저장소
    kube-apiserver 쿠버네티스 클러스터의 API를 사용할 수 있도록 하는 컴포넌트
    kube-scheduler 현재 클러스터 안에서 자원 할당이 가능한 노드 중 알맞은 노드를 선택해서 새롭게 만든 파드를 실행
    kube-controller-manager 컨트롤러 각각을 실행한 컴포넌트
    cloud-controller-manager 노드 컨트롤러 : 클라우드 서비스 안에서 노드를 관리
    라우트 컨트롤러 : 각 클라우드 서비스 안의 네트워크 라우팅을 관리
    서비스 컨트롤러 : 각 클라우드 서비스에서 제공하는 로드밸런서를 생성, 갱신, 삭제
    볼륨 컨트롤러 : 클라우드 서비스에서 생성한 볼륨을 노드에 연결하거나 마운트
     - 노드용 컴포넌트 : 쿠버네티스 실행 환경을 관리
    kubelet 클러스터 안 모든 노드에서 실행되는 에이전트
    kube-proxy 가상 네트워크의 동작을 관리하는 컴포넌트
    컨테이너 런타임 실제로 컨테이너를 실행 (도커)
     - 애드온 : 클러스터 안에서 필요한 기능을 실행하는 파드
    네트워킹 애드온 클러스터 안에 가상 네트워크를 구성해 사용할 때 사용
    DNS 애드온 클러스터 안에서 동작하는 DNS 서버
    쿠버네티스 서비스에 DNS 레코드를 제공
    쿠버네티스 안에 실행된 컨테이너들은 자동으로 DNS 서버에 등록
    대시보드 애드온 클러스터 현황이나 파드 상태를 한눈에 쉽게 파악
    컨테이너 자원 모니터링 클러스터 안에서 실행 중인 컨테이너의 상태를 모니터링하는 애드온
    클러스터 로깅 클러스터 안 개별 컨테이너의 로그와 쿠버네티스 구성 요소의 로그들을 중앙화한 로그 수집 시스템에 모아서 보는 애드온

    네임스페이스
     - 쿠버네티스 클러스터 하나를 여러 개 논리적인 단위로 나눠서 사용하는 것
     - 특정 네임스페이스의 사용량을 제한할 수도 있음

    파드
     - 컨테이너를 묶어서 관리하는 단위
     - 컨테이너 여러개를 한꺼번에 관리할 때는 컨테이너마다 역할을 부여할 수 있다.
     - 파드 하나 안에 있는 컨테이너들이 IP 하나를 공유

    파드 생명 주기
     - 파드의 생성부터 삭제까지의 과정
     - Pending : 쿠버네티스 시스템에 파드를 생성하는 중
     - Succeeded : 파드 안 모든 컨테이너가 정상 실행 종료된 상태로 재시작되지 않는다.

    kubelet으로 컨테이너 진단
     - 프로브
    livenessProbe 컨테이너가 실행됐는지 확인
    readinessProbe 컨테이너가 실행된 후 실제로 서비스 요청에 응답할 수 있는지 진단
    startupProbe 컨테이너 안 애플리케이션이 시작되었는지 나타냄
     - 핸들러
    ExecAction 컨테이너 안에 지정된 명령을 실행하고 종료 코드가 0일 때 Success라고 진단
    TCPSocketAction 컨테이너 안에 지정된 IP와 포트로 TCP 상태를 확인하고 포트가 열려 있으면 Success라고 진단
    HTTPGetAction 컨테이너 안에 지정된 IP, 포트, 경로로 HTTP GET 요청을 보낸다.
    응답 상태 코드가 200에서 400 사이면 Success라고 진단




<수업 필기>

 

* 쿠버네티스 리소스 관리 방식

  1. 명령형 커맨드 방식 (Imperative Commands)
  • 생성할 리소스에 대한 정의를 명령어에 포함
  • 일회성 작업
  • 개발/테스트 등의 단계에서 사용
  • 간단한 실행 방식

    2. 명령형 오브젝트 구성 방식 (Imperative Object Configuration)
  • 리소스에 대한 정의를 오브젝트 파일에 명시함
  • 오브젝트 파일은 JSON 또는 YAML 포맷으로 작성
  • 오브젝트 파일은 지정된 형식에 맞추어 작성되어야 함
  • 오브젝트 정의 파일을 사용하여 리소스 생성 및 관리
  1. 선언형 오브젝트 구성 방식 (Declarative Object Configuration)
  • 디렉토리 내에 오브젝트 파일을 배치
  • 명령형 오브젝트 구성 방식에 따라 작성된 오브젝트 파일들을 일괄적으로 처리

* API 버전 특징

  1. 알파버전 ( ex) v1alpha1 )
  • 초기 테스트 버전
  • api 버전 이름에 alpha 포함
  • 버그가 있을 가능성이 있음. 안정성이 떨어짐
  • 운영 용도로는 사용해서는 안됨
  • 기본적으로 비활성화
  • 기능에 대한 기술 지원이 없고, 공지 없이 사라질 수도 있음
  • 기능이 유지가 된다 하더라도 이전 버전과의 호환성이 보장되지 않음
  1. 베타버전 ( ex) v1beta1 )
  • 버전 이름에 beta 가 포함
  • 테스트가 꽤 진행되어 안정적인 상태
  • 기본적으로 활성화되어 있음
  • 완벽하게 유지된다는 보장은 없으나, 유지될 가능성이 높음
  • 이후 기능상의 변경이 있을 수 있으나, 버전 변경에 따른 가이드 등이 제공
  • 운영용도로 사용하는 것은 고려를 해 보아야 함
  1. 안정화 버전 (v1)
  • 버전 이름이 v1, v2 와 같이 alpha , beta등이 포함되지 않음
  • 운영용도로 사용하기 적합

 

apiVersion에 표시되는 항목의 분류

코어 그룹 : v1, v1beta1 등 별도의 그룹 이름 없이 표기

코어 그룹 이외의 그룹 : [그룹이름]/[버전]

 

* 초기화 컨테이너 활용 - 볼륨

  • 과거 git을 사용하여 데이터를 받아오는 형태로 구성되는 gitRepo 볼륨이 있었음
  • 초기화 컨테이너를 사용하여 유사한 형태로 동작하는 볼륨을 구성할 수 있음

 

'GOORM' 카테고리의 다른 글

GOORM: Kubernetes-39  (0) 2022.01.04
GOORM: Kubernetes-38  (0) 2022.01.04
GOORM: Kubernetes-36  (0) 2021.12.30
GOORM: Kubernetes-35  (0) 2021.12.25
GOORM: Kubernetes-34  (0) 2021.12.25

댓글