Web/Kubernetes
쿠버네티스 아키텍처 (오브젝트)
tose33
2024. 1. 5. 13:17
https://www.inflearn.com/course/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EC%9E%85%EB%AC%B8
초보를 위한 쿠버네티스 안내서 강의 - 인프런
쿠버네티스를 1도 모르는 입문자, 초보자를 위한 쿠버네티스 안내서 입니다. 초보자도 이해하기 쉬운 내용과 흐름으로 구성했어요., 데브옵스(DevOps) 입문자라면 주목! 쿠버네티스의 첫발을 함
www.inflearn.com
Pod
- 가장 작은 배포 단위
- kubelete는 컨테이너를 pod으로 감싸서, 컨테이너와 직접 소통하지 않고 pod과 소통한다
- 각 pod 마다 고유 ip 부여 받는다
- pod 하나에는 여러개의 컨테이너가 있을수 있다
- 같은 pod에 존재하는 컨테이너들은 host 폴더를 공유할수 있다
- 포트를 localhost 로 공유할수 있다
ReplicaSet
- 여러개의 pod 관리
- 신규 pod을 생성하거나 기존 pod을 제거하여 원하는 수(replicas)를 유지 한다
Deployment
- 배포 버전을 관리한다
버전을 변경할때 replicaset을 이용하는데 흐름은 다음과 같다.
버전1에서 버전2로 바꾸고 싶다면?
1. 버전2를 갖는 pod를 1개, 버전1을 갖는 pod를 2개로 설정한다.
pod 3개 보유 중인 replicaset 이 각각 pod 2개 ,1개를 갖는 두개의 replicaset으로 나뉜다.
2. 버전 2를 갖는 pod를 2개, 버전1을 갖는 pod를 1개로 설정한다.
3. 버전 2를 갖는 pod를 3개로 설정한다.
이런 방식으로 deployment는 겉으로 봤을때 모든 pod 들이 자연스럽게 버전 변경이 되도록 할수 있다.
Service - ClusterIP
- pod를 로드밸런싱 한다
- ClusterIp로 요청이 가면 로드밸런서 처럼 자동으로 연결된 pod 중 적합한것 찾아 요청 보낸다
- pod의 ip는 바뀔수있고, ClusterIp는 바뀌지 않는다
- 내부에서만 통신 가능 (외부 브라우저 접근 불가)
- 따라서 NodePort 라는 또 다른 Service를 만들어서 웹브라우저는 NodePort와 소통하고, NodePort가 ClusterIP와 소통한다
Ingress
- 도메인, 경로 별로 내부의 ClusterIP와 연결한다
일반적인 구성
- Deployment 를 생성하면 Deployment가 ReplicaSet을 생성하고, ReplicaSet이 Pod를 생성한다
- Ingress 붙이면 Nodeport, LoadBalancer가 자동으로 붙는다
- 이제 클라이언트가 도메인으로 접속하면 Ingress가 라우팅 시키고, LoadBalanacer, NodePort, ClusterIP를 거쳐서 pod과 소통하게 된다