카테고리 없음

[DevOps] Kubenetes 공부 #2 - 리소스(1)

깜태 2022. 6. 22. 00:58
728x90

쿠버네티스에서는 실행 환경 관리를 소프트웨어로 수행하기 때문에 다양하게 추상화하였는데, 이 추상화한 것을 리소스라고 부른다.

쿠버네티스에서 실행되는 리소스는 목적에 따라 대표적으로 아래와 같이 나뉜다.

 

  • 애플리케이션 실행 : 포드(Pod), 레플리카셋(ReplicaSet), 디플로이(Deployment)
  • 네트워크 관리 : 서비스(Service), 인그레스(Ingress)
  • 어플리케이션 설정 정보 관리 : 컨피그맵(ConfigMap), 시크릿(Secrets)
  • 배치 잡 관리 : 잡(Job), 크론잡(CronJob)

 

포드(Pod)

쿠버네티스에서는 여러 개의 컨테이너를 모아 하나의 포드로 관리하고, 최소 단위를 포드로 사용한다.

포드 안의 컨테이너들은 가상 NIC(프라이빗 IP)를 공유하는 구성을 취하기 때문에

컨테이너끼리 localhost를 경유하여 통신 및 디렉토리를 공유할 수도 있다.

 

레플리카셋(ReplicaSet)

클러스터 안에서 지정된 수의 포드를 가동시키는 리소스로, 가동중인 포드가 정지된 경우 해당 포드를 삭제하고 새로운 포드를 가동한다.

항상 가동된 포드를 가동시켜 클러스터 안에 만드는 역할을 한다.

 

디플로이먼트(Deployment)

애플리케이션의 배포 단위를 관리하는 리소스로, 기존 레플리카셋의 상위 호환으로 버전에 따라 롤링 업데이트나,
롤백을 진행할 수 있게 한다. 개인적으로 궁금했던 내용이 디플로이와 레플리카의 차이가 무엇인가였는데,
아래의 블로그를 참조하여 버전 관리를 할 수 있다는 차이를 알게 됐다.

https://bcho.tistory.com/1266

 

deploy 와 replicaSet의 차이 [출처 : https://blog.uniqbuild.co.kr/?p=734]

데몬셋(DaemonSet)

포드가 어떤 노드에서 생성될지에 관한 스케줄링은 쿠버네티스가 결정한다.

하지만 로그콜렉터나 감시 에이전트같은 경우같이 각 노드에서 반드시 하나씩 작동시키고 싶은 경우 사용하는 것이 데몬셋이다.

데몬셋은 레플리카셋과는 다르게 수를 지정할 수는 없지만, 매니페스트 파일에서 정의한대로 상태를 유지하도록 움직인다.

 

스테이트풀셋(StatefulSet)

컨테이너는 기본적으로 스테이트리스로, 상태를 갖지 않고 이름이나 주소가 랜덤으로 할당된다.

하지만 DB와 같이 영구 데이터와 연계되는 경우는 상태를 유지해야한다.

이런 경우에 필요한 리소스가 스테이트풀셋으로, 레플리카셋과 달리 포드의 고유성을 보증한다.

 

서비스(Service)

쿠버네티스 클러스터 안에서 실행된 포드에 액세스 할 때 필요한 리소스로, 쿠버네티스의 네트워크를 관리한다.

대표적으로 로드밸런서 기능이 있는데, 서비스에 대응하는 IP 주소와 포트 번호에 액세스하면 L4 레벨의 부하 분산을 수행한다.

서비스로 할당되면, 클러스터 IP가 할당되는데, 클러스터 내부 다른 노드들과 소통하며 전달한다.

 

인그레스(Ingress)

인그레스는 클러스터 외부의 네트워크로부터 액세스를 받기 위한 리소스로, HTTP/HTTPS의 엔드포인트로 기능한다.

URL 경로 대응이나 라우팅, SSL, 버추얼 호스팅 등의 L7 기능을 제공한다.

 

https://medium.com/google-cloud/kubernetes-nodeport-vs-loadbalancer-vs-ingress-when-should-i-use-what-922f010849e0

 

참고

https://bcho.tistory.com/1266

https://5equal0.tistory.com/entry/Kubernetes-쿠버네티스-서비스Service와-인그레스Ingress-비교

 

728x90