본문 바로가기
DevOps/Docker & K8s

쿠버네티스 구성요소(1/5) (Object/Controller)

by 카프리썬 2020. 4. 19.
728x90

K8S 구성요소 크게보면

 

1. 객체(Object)

가장 기본적인 구성단위

쿠버네티스가 애플리케이션을 배포하기 위해 원하는 상태(desired state)

-> '상태'를 관리하기 위한 대상

즉, 기본 오브젝트를 가지고 애플리케이션을 설정하고 배포함

 

1) 오브젝트 스펙 (Object Spec) 

오브젝트의 특성(설정정보)를 정의한 내용

CLI를 통해서 오브젝트 생성시 인자로 전달해서 정의하거나 yaml파일로 Spec정의

오브젝트의 종류와 원하는 상태 입력
생성,조회,삭제로 관리할 수 있어서 rest api로 쉽게 노출가능

접근권한 설정도 가능해서 누가 어떤 오브젝트에 요청을 할 수 있는지도 정의할 수 있음

apiVersion: v1
kind: Pod
metadata:
     name: example
spec:
    containers: -
    name: busybox
    image: busybox:1.25

 

2) 기본 오브젝트(Basic object)

쿠버네티스에 의해서 배포 및 관리되는 기본적인 오브젝트

컨테이너화 되서 애플리케이션 위의 워크로드를 기술함

  • Pod - 컨테이너화된 애플리케이션
  • Volume - 디스크
  • Service - 로드밸런서
  • Namespace - 패키지명

 

2. 컨트롤러(Controller)

오브젝트를 생성하고 관리하는 역할

즉, 오브젝트들을 좀더 편리하게 관리하기 위해서 사용

  • Replication Controller(RC) - Pod를 지정된 수로 유지 및 관리하는 역할 
  • Replication Set  - RC의 새버전
  • DeemonSet - Replication Set의 작성과 갱신 (blue/green deployment)
  • Job
  • StatefulSet
  • Deployment

 

 

 

3. 템플릿(Template) -> yaml 파일형식

이때 이들의 설정파일들(object spec)의 템플릿

즉, 객체나 컨트롤러가 어떤 상태였는지를 yaml파일형식으로 정의한다

템플릿 기본형식
---

apiVersion : v1
Kind : Pod

apiVersion : 사용하려는 api버전 -> 어떤 버전인지 정확하게 식별하는게 가장 중요해서 제일 먼저나옴
kind : 어떤 종류의 객체 혹은 컨트롤러에 대한 작업인지 명시 (ex : pod, deployment, ingress)
 


 4. 쿠버네티스의 배포방식

쿠버네티스는 애플리케이션을 배포하기 위해

원하는 상태(desired state)를 다양한 오브젝트(object)에

라벨Label을 붙여 정의(yaml)하고 API 서버에 전달하는 방식을 사용한다

 

예를 들어, 컨테이터 2개를 배포하고 80포트로 오픈해줘! 라는 작업을 위해 

쿠버네티스한테 해줘야하는 명령은

컨테이너를 pod로 감싸고(obejct),

type=app, tpye=web 이라는 라벨을 달아줘(label),

그리고 라벨이 달린 pod가 2개 있는지 체크해,

그런데 없으면 deployment Spect에 정의된 템플릿을 참고해서 pod생성 해줘

그리고 해당 라벨을 가진 pod를 바라보는 가상의 서비스ip를 만들고, 외부80랑 연결해줘

 

출처

https://galid1.tistory.com/413?category=767345

 

Kubernetes - 쿠버네티스(Kubernetes) 란? - 수정중(네임스페이스)

http://likefree.tistory.com/19 쿠버네티스와 마이그로서비스 아키텍쳐 - https://www.youtube.com/watch?v=xdqOxF2JqwU 쿠버네티스(Kubernetes)란? - 쿠버네티스를 이해하기 이전에 먼저 컨테이너 운영환경에 대..

galid1.tistory.com

https://subicura.com/2019/05/19/kubernetes-basic-1.html#%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4%EC%9D%98-%EA%B3%BC%EA%B1%B0-%ED%98%84%EC%9E%AC-%EB%AF%B8%EB%9E%98

 

쿠버네티스 시작하기 - Kubernetes란 무엇인가?

쿠버네티스는 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼입니다. 1주일에 수십억 개의 컨테이너를 생성하는 구글이 내부 배포시스템으로 사용하던 borg를 기반으로 2014년 프로젝트를 시작했고 여러 커뮤니티의 아이디어와 좋은 사례를 모아 빠르게 발전하고 있습니다. 이 글은 쿠버네티스가 무엇인지 궁금한 엔지니어를 대상으로 쿠버...

subicura.com

 

반응형

$(document).ready(function() { var $toc = $("#toc"); $toc.toc({content: ".tt_article_useless_p_margin", headings: "h2,h3,h4"}); });