마짱짱의 지식창고

Kubernetes? 쿠버네티스? 본문

Kubernetes

Kubernetes? 쿠버네티스?

마짱짱 2020. 7. 21. 10:35
반응형

*Kubernetes Docs

kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/

 

쿠버네티스란 무엇인가?

쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼으로, 선언적 구성과 자동화를 모두 지원한다. 쿠버네티스는 크고 빠르게 성장하�

kubernetes.io

쿠버네티스?

K8s 부르기도 한다.
구굴은 전 세계적으로 수십만 대의 서버를 운영하고 있으며 소프트웨어와 인프라를 전세계에 확장할 수있는 훨씬 더 진보한 방법이 필요했었고 
Borg 라는 내부 시스템을 개발해 개발자와 관리자가 수천 개의 어플리케이션과 서비스를 관리하는데 도움이 되었다. 
이 것을 논문으로 공개했고 쿠버네티스 라는 오픈소스로 공개하였다.

쿠버네티스 기능

  • 컨테이너 플랫폼

  • 마이크로서비스 플랫폼

  • 이식성 있는 클라우드 플랫폼

    컨테이너 기반의 분산 클러스터 환경을 제공하며 워크로드를 위해 컴퓨팅, 네트워킹 및 스토리지 인프라를 오케이션스트레이션 한다.
    쿠버네티스는 IaaS의 유연함을 더해주며, PaaS를 제공한다.

    But

  • CI/CD 즉, 지속적 통합, 지속적 배포를 제공하지 않음

  • 어플리케이션의 레벨의 서비스는 제공x

쿠버네티스의 기본 구성

마스터와 노드 구성요소로 이루어져있고 추가 구성요소가 있다.
이런 구성요소들은  api를 통해 메세지를 주고 받는다.

1. 마스터(Master) 
    컨트롤 플레인을 제공
    클러스터에 대한 전반적인 결정을 수행하고 클러스터 이벤트를 감지하고 이에 대응한다. 
    프로덕션 환경에서는 반드시 멀티 마스터 환경을 구성
1-1) API 서버(Kube-apiserver)
쿠버네티스 클러스트의 모든 구성요소들은 마스터의 API서버와 메세지를 주고 받는다.
컨트롤 플레인에 대한 프론트엔드를 담당한다.

1-2)etcd(엣시디)
쿠버네티스 클러스터의 모든 정보 데이터를 저장하는 일관성과 고가용성을 지원하는 키-값 저장소이다.

1-3)Kube-controller-manager
컨트롤러는 API서버를 통해 클러스터의 상태를 감시하고, 필요한 상태로 이행하는 기능
1-3-1) 노드컨트롤러 : 노드를 관리하고 다운되면 알림과대응
1-3-2) 리플리케이션 컨트롤러 : 복제 컨트롤러를 사용하는 모든 오브젝트를 관리하며 알맞은 수의 파드를 유지
1-3-3) 엔드포인트 컨트롤러 : 서비스와 파드를 연결
1-3-4) 서비스 어카운트 및 토큰 컨트롤러 : 쿠버네티스의 네임스페이스, 계정 토근을 담당

1-4)Cloud-controller-manager
클라우드를 제공하는 업체의 기능과 클라우드에서 동작하는 쿠버네티스 구성요소와 상호작용 할 수 있도록하는 컨트롤러
1-4-1)노드컨트롤러 : 노드가 응답이 없으면 클라우드상에서 노드가 삭제 및 확인
1-4-2)라우트 컨트롤러 : 클라우드 인프라의 네트워크 경로 구성 담당
1-4-3)서비스 컨트롤러 : 클라우드 로드밸런서 관리를 담당
1-4-4)볼륨 컨트롤러 : 클라우드 볼륨관리

2. 노드(Node) or Worker
    쿠버네티스의 컨테이너 런타임 환경을 제공, 동작중인 파드를 유지하는 기능
2-1)kublet
    각 노드에서 실행되는 에이전트,
    마스터로부터 제공받은 파드의 구성정보를 받아서 컨테이너가 확실하게
    동작하는 것을 관리하고 보장한다.
2-2)kube-proxy
    호스트 레벨의 네트워크 규칙을 구성하고 외부 연결을 파드에 대한 포워딩을 담당
    쿠버네티스의 서비스 추상화가 가능하도록 한다.
2-3)Container Runtime
    컨테이너의 동작을 책임지는 구성요소

애드온

쿠버네티스 클러스터에 추가할 수있는 확장기능을 제공
주요애드온

  • Kube-DNS : 쿠버네티스 내부에서만 사용
  • Dashboard : 웹 기반의 인터페이스 제공
  • Container Resource Mornitoring : 리소스사용량을 시계열 메트릭스로 사용하고 데이터저장, 열람가능
  • Cluster Loging : 컨테이너 로그를 중앙 로그 저장소에 저장하고 관리하는 기능

쿠버네티스의 아키텍쳐

쿠버네티스는 YAML 문법으로 정의한다.

예시로 파드 오브젝트 알아보기

apiVersion : 오브젝트를 생성하기위한 API 버전
kind : 오브젝트 종류
metadata : 기본적인 정보
spec : 오브젝트 상태 정의

* 참고(중요)
오브젝트 리소스 문서 확인명령
ex)파드
kubectl explain pod

오브젝트 관리

1. 명령형 명령어
kubectl 명령에 인수 또는 옵션을 사용하여 어플리케이션 관리
일회성작업, 개발환경에서 권장, 가장 단순한방법
ex) $kubectl run nginx --image nginx

2. 명령형 오브젝트 구성
오브젝트를 YAML OR JSON 형싱으로 정의
오브젝틔 완전한 정의를 포함해야함
ex) $kubectl create -f nginx.yaml

3. 선언형 오브젝트 구성
특정 디렉토르에 모든 오브젝트 파일을 배치함
kubectl 명령은 디렉토리를 인수로 사용하여 오브젝트를 관리함
ex)$kubectl diff -f cinfigs/
반응형