레플리카 세트
어느 정도 규모가 있는 어플리케이션을 구축하려면 같은 파드를 여러개 실행해서 가용성을 확보해야한다.
이런 경우 사용하는게 레플리카 세트다.
똑같은 정의를 갖는 파드를 여러개 생성해서 관리하게 된다.
yaml 파일에서
replicas 수 를 이용해서 파드의 복제본을 만든다
replicas 수를 작게 조절하면 그만큼 파드가 삭제된다.
삭제된 파드는 복원할 수 없기때문에 상태가 없는 (stateless) 어플리케이션에 사용하기 유리하다.
디플로이먼트
디플로이먼트는 레플리카 세트의 상위 개념으로
어플리케이션 배포의 기본단위가 되는 리소스다.
레플리카세트는 똑같은 파드의 레플리케이션 개수를 관리 및 제어하는 리소스라면,
디플로이먼트는 레플리카세트를 관리하는 리소스다.
레플리카세트의 생애주기
쿠버네티스는 디플로이먼트를 단위로 배포를 하는데 , 레플리카세트를 직접 변경하기보다 디플로이먼트 매니페스트 파일을 통해 다룬다.
디플로이먼트가 관리하는 레플리카세트는 새로운 버전의 파드로 교체하거나 이전 버전으로 롤백하는등 중요한 역할을 한다.
디플로이먼트에서 레플리카세트가 어떻게 동작하는지 정확히 알아야 알맞게 운영 할 수 있다.
replicas 개수만 수정하면 레플리카세트가 새로 생성되지 않는다.
replicas 만 3 에서 4로 바꾸면
원래 있던 파드는 그대로 남아있고, 컨테이너가 하나 새로 생성되서 파드가 하나 추가된다.
kubectl rollout history deployment 이름
으로 보면 revision 이 안바뀐걸 확인 할 수 있다.
컨테이너 이미지가 변경된 경우
새로운 이미지를 사용하면 기존 파드는 정지되고 새로운 파드가 생성되는걸 볼 수 있다.
revision도 새롭게 변경된다.
롤백 실행하기
디플로이먼트의 리비전 번호를 확인해서
undo 명령을 실행하면 롤백할수있다.
서비스
서비스는 클러스터 안에서 레플리카세트에 대한 경로나 api 주소가 동적으로 바뀌더라도 클라이언트가
접속 대상을 바꾸지 않고 하나의 이름으로 접근할 수 있는 기능을 제공하는 리소스다.
서비스의 대상은 selector 에서 정해진다.
예를들어보면 yaml 파일로 레플리카 세트 2개가 만들어졌다고하자
1번 . spring.yaml
spec:
...
template:
metadata:
labels:
release: spring
2번. summer.yaml
spec:
...
template:
metadata:
labels:
release: summer
release 가 spring인 파일이 있고 summer 도 있다고 쳤을때
kind:Service
spec:
selector:
app:echo
release:summer
로 설정을 해두면 파드의 레이블이 서비스에 정의된 셀렉터 값과 일치할때만 서비스의 대상이 된다.
'인프라 > kubernetes' 카테고리의 다른 글
kubernetes 서비스 (0) | 2021.08.24 |
---|---|
kubernetes 레플리케이션과 그밖의 컨트롤러 (0) | 2021.08.23 |
kubernetes 파드 (0) | 2021.08.23 |
Kubernetes 첫걸음 (0) | 2021.08.19 |
kubernetes - kubernetes 란? (0) | 2020.11.16 |