규턴의 개발블로그
article thumbnail

 

컨테이너

 

쿠버네티스를 다루는데 가장 핵심적인 개념은 컨테이너임

지금까지 컨테이너화 까지 이루어지게된 배경이다

 

1. 예전에는 하나의 os에서 여러 APP을 구동
-> 리소스 할당문제 발생 

 

2. VM 사용

-> 리소스 할당문제는 어느정도해결

-> 각 app마다 격리된 환경으로 보안 및 리소스 문제 해결

-> 하지만 VM각각 OS를 가지기에 무겁고 비효율적일 수 있음

 

3.컨테이너

-> VM가 큰 차이는 OS를 공유하기에 가볍다고 여겨짐

-> 격리된 환경제공

 

 

 

쿠버네티스(Docker와 비교)

나는 처음에 쿠버네티스랑 docker랑 같은 개념인줄 알았음

backend에서 spring,django와 같은 느낌인줄

 

하지만 docker랑 쿠버네티스는 완전 다른것임

 

docker는 app을 이미지화 해주고 해당 이미지를 통해 container화 한다.

docker의 역할은 여기서 끝임

즉, 이 컨테이너를 어떻게하면 무중단 배포를 하고 운영 관리할 수 있을까??

 

해당 답이 바로 쿠버네티스가 될 수 있음

 

쿠버네티스는 다음과 같은 기능이 있음(https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/ 참고)

  • 서비스 디스커버리와 로드 밸런싱 
    쿠버네티스는 DNS 이름을 사용하거나 자체 IP 주소를 사용하여 컨테이너를 노출할 수 있다. 컨테이너에 대한 트래픽이 많으면, 쿠버네티스는 네트워크 트래픽을 로드밸런싱하고 배포하여 배포가 안정적으로 이루어질 수 있다.
  • 스토리지 오케스트레이션 
    쿠버네티스를 사용하면 로컬 저장소, 공용 클라우드 공급자 등과 같이 원하는 저장소 시스템을 자동으로 탑재 할 수 있다.
  • 자동화된 롤아웃과 롤백 
    쿠버네티스를 사용하여 배포된 컨테이너의 원하는 상태를 서술할 수 있으며 현재 상태를 원하는 상태로 설정한 속도에 따라 변경할 수 있다. 예를 들어 쿠버네티스를 자동화해서 배포용 새 컨테이너를 만들고, 기존 컨테이너를 제거하고, 모든 리소스를 새 컨테이너에 적용할 수 있다.
  • 자동화된 빈 패킹(bin packing) 
    컨테이너화된 작업을 실행하는데 사용할 수 있는 쿠버네티스 클러스터 노드를 제공한다. 각 컨테이너가 필요로 하는 CPU와 메모리(RAM)를 쿠버네티스에게 지시한다. 쿠버네티스는 컨테이너를 노드에 맞추어서 리소스를 가장 잘 사용할 수 있도록 해준다.
  • 자동화된 복구(self-healing) 
    쿠버네티스는 실패한 컨테이너를 다시 시작하고, 컨테이너를 교체하며, '사용자 정의 상태 검사'에 응답하지 않는 컨테이너를 죽이고, 서비스 준비가 끝날 때까지 그러한 과정을 클라이언트에 보여주지 않는다.
  • 시크릿과 구성 관리 
    쿠버네티스를 사용하면 암호, OAuth 토큰 및 SSH 키와 같은 중요한 정보를 저장하고 관리 할 수 있다. 컨테이너 이미지를 재구성하지 않고 스택 구성에 시크릿을 노출하지 않고도 시크릿 및 애플리케이션 구성을 배포 및 업데이트 할 수 있다.

 

 

이렇게 글로만 봐선 이해가 안될 수 있음

근데 k8s 공식문서가 진짜 설명이 잘되어 있음(실습환경 터미널도 제공)

 

 

 

profile

규턴의 개발블로그

@규턴이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!