[k8s] 4. 디플로이먼트 - 레플리카셋, 파드 배포 관리
SightStudio
·2020. 10. 11. 08:47
실제 운영환경에서는 레플리카셋을 YAML 파일에서 사용하는 경우는 거의 없습니다.
대부분 레플리카 셋과 파드의 정보를 정의하는 Deployment라는 이름의 오브젝트를
YAML 파일에 정의해 사용합니다.
1. 디플로이먼트
레플리카 셋의 상위 오브젝트이기 때문에 디플로이먼트를 생성하면 레플리카 셋도 함께 생성됩니다.
따라서 디플로이먼트를 사용하면 파드와 레플리카 셋을 직접 사용할 필요가 없습니다.
생성 예시)
deployment-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-nginx
template:
metadata:
name: my-nginx-pod
labels:
app: my-nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
kubectl apply -f depoyment-nginx.yaml
아래와 같이 deployment 오브젝트를 조회할 수 있습니다.
위에서 우리는 3개의 레플리카셋을 지정했기 때문에 파드개 3개로 항상 유지되는걸 볼 수 있습니다.
그냥 레플리카 셋으로 쓰면 안되나요?
디플로이먼트는 애플리케이션의 업데이트와 배포를 더욱 편하게 해줍니다.
--record 옵션과 함께 디플로이먼트를 생성합니다.
이때 이미지를 nginx:latest에서 nginx:1.11로 변경해보겠습니다.
kubectl set imgae deployment my-nginx-deployment nginx=nginx:1.11 --record
이미지가 변경되었기 때문에 k8s는 레플리카셋의 파드들을 전부 변경합니다.
이는 deployment에 기록으로 남습니다.
즉, 버저닝이 가능하며 아래와 같이 이전 버전으로 롤백 할 수 있습니다.
2. 마치며
디플로이먼트는 여러개의 레플리카셋을 편리하게 관리할 수 있는 상위 오브젝트입니다.
디플로이먼트를 사용하면 레플리카 셋의 리비전 관리 뿐 아니라 다양한 파드들의
롤링 업데이트 정책을 사용할 수 있다는 장점이 있습니다.
아래의 명령어를 통해 실습한 모든 리소스를 삭제 할 수 있습니다. (주의)
kubectl delete deployment,pod,rs --all
kubernetes.io/docs/concepts/workloads/controllers/deployment/
www.yes24.com/Product/Goods/84927385
'개발 > devops' 카테고리의 다른 글
로드밸런서에 대해 알아보자 (3) | 2021.10.13 |
---|---|
프로메테우스에 대해 알아보자 (0) | 2021.08.07 |
[k8s] 5. 서비스 - 파드를 연결하고 외부에 노출 (1) | 2020.10.11 |
[k8s] 2. 파드 - 컨테이너의 기본 단위 (0) | 2020.10.10 |