개요
쿠버네티스 배포는 애플리케이션에 선언적 업데이트를 제공하는 쿠버네티스 리소스 개체입니다. 배포를 통해 애플리케이션에 사용할 이미지, 있어야 할 포드의 수, 업데이트 방식과 같은 애플리케이션 라이프사이클을 설명할 수 있습니다.
쿠버네티스 개체는 사용자가 원하는 클러스터 워크로드의 형태를 쿠버네티스 시스템에 알리는 방법입니다. 개체가 생성되면 클러스터가 작동하여 개체를 유지하므로 쿠버네티스 클러스터를 원하는 상태로 둘 수 있습니다.
애플리케이션 컨테이너를 수동으로 업데이트하는 프로세스는 시간이 많이 걸리고 지루할 수 있습니다. 서비스를 다음 버전으로 업그레이드하려면 새 버전의 포드를 시작하고, 이전 버전의 포드를 중지하고, 대기한 후 새 버전이 성공적으로 시작되었는지 확인해야 합니다. 실패한 경우에는 이전 버전으로 모두 롤백합니다.
이러한 단계를 수작업으로 진행하면 인적 오류가 발생하고 제대로 스크립팅하려면 상당한 노력이 들 수 있으므로, 두 경우 모두 릴리스 프로세스가 걸림돌이 될 수 있습니다.
쿠버네티스 배포는 이러한 프로세스를 자동화하고 반복 가능하게 만들어 줍니다. 배포는 쿠버네티스 백엔드에서 전적으로 관리되고, 전체 업데이트 프로세스는 클라이언트 상호 작용 없이 서버 측에서 수행됩니다.
배포를 통해 원하는 수의 포드가 항상 실행되고 가용 상태를 유지하도록 할 수 있습니다. 또한 업데이트 프로세스는 모두 기록되며 일시 중지, 계속 및 이전 버전으로 롤백 등의 옵션을 통해 버전이 지정됩니다.
쿠버네티스 배포 개체를 사용해 다음과 같은 작업을 수행할 수 있습니다.
- 복제본 세트 또는 포드 배포
- 포드 및 복제본 세트 업데이트
- 이전 배포 버전으로 롤백
- 배포 스케일 조정
- 배포 일시 중지 또는 계속
쿠버네티스 배포를 통한 애플리케이션 관리 전략
쿠버네티스 배포를 통한 애플리케이션 관리에는 애플리케이션 업데이트 방식도 포함됩니다. 배포의 주요 이점은 예측을 통해 포드 세트를 시작하고 중지할 수 있다는 것입니다.
롤링 업데이트 전략
롤링 업데이트 전략을 사용하면 애플리케이션의 포드를 통제하며 단계적으로 교체 가능할 수 있으므로 가용 포드 개수를 항상 최소한으로 유지할 수 있습니다.
배포를 통해 기본적으로 최대 25%의 포드만 항상 비가용성을 유지하도록 합니다. 또한 배포 시 원하는 상태에서 지정된 포드 수 중 25% 이상을 초과 프로비저닝하지 않습니다.
가용성 임계값을 유지하기 위해, 배포에서 사용할 수 있는 새 포드가 충분할 때까지 이전 포드를 폐기하지 않으며 이전 포드가 충분히 제거될 때까지 새 포드를 생성하지 않습니다.
배포 개체를 이용하면 maxSurge 및 maxUnavailable 필드를 통해 가용 포드 및 과잉 포드의 범위를 제어할 수 있습니다.
롤링 업데이트 전략의 경우 업데이트 프로세스 중에 다운 타임이 없지만, 포드 폐기 및 생성 작업을 허용할 수 있도록 애플리케이션을 설계해야 합니다.
업데이트 프로세스 중에는 2가지 버전의 컨테이너가 동시에 실행됩니다. 이로 인해 서비스 사용자에게 문제가 발생할 수 있습니다.
재생성 전략
재생성 전략에서는 기존 포드를 모두 제거한 후 새 포드를 생성합니다. 쿠버네티스는 먼저 현재 버전의 모든 컨테이너를 종료한 후 이전 컨테이너가 모두 사라지면 모든 새 컨테이너를 동시에 시작합니다.
재생성 배포 전략의 경우 이전 버전의 모든 컨테이너가 중지되었고 들어오는 요청을 처리할 준비가 된 새 컨테이너가 없는 동안에 약간의 다운 타임이 발생합니다.
하지만 2가지 버전의 컨테이너가 동시에 실행되지는 않으므로 서비스 사용자에게는 더 간단할 수 있습니다.
Red Hat 리소스
쿠버네티스를 위한 선언적 배포 패턴
배포는 매니페스트를 작성하여 생성합니다. 그런 다음 kubectl 적용을 통해 매니페스트를 쿠버네티스 클러스터에 적용합니다. 또는 선언적 배포 패턴을 사용해도 됩니다. 쿠버네티스용 구성 파일은 YAML 또는 JSON을 사용하여 작성할 수 있습니다.
배포 생성 시 원하는 상태를 설명하면 쿠버네티스가 롤링 또는 재생성 배포 전략을 사용하여 상태를 구현합니다.
선언적 배포 패턴을 사용하는 경우 쿠버네티스 배포를 이용해 포드 그룹에 대한 업그레이드 및 롤백 프로세스 실행을 자동화할 수 있습니다. 쿠버네티스 패턴은 컨테이너 기반 애플리케이션 및 서비스를 위한 재사용 가능 설계 패턴입니다.
포드 템플릿 사양을 변경하여 배포를 업데이트할 수 있습니다. 사양 필드가 변경되면 업데이트 롤아웃이 자동으로 트리거됩니다.
롤아웃 라이프사이클은 '처리 중', '완료' 및 '실패' 상태로 구성됩니다. 배포는 포드 업데이트 또는 스케일 조정과 같은 업데이트 태스크와 함께 진행됩니다.
'완료'는 모든 태스크가 성공적으로 완료되어 시스템이 원하는 상태임을 나타냅니다. '실패'는 몇 가지 오류로 인해 배포 작업을 완료하지 못한 상태임을 나타냅니다.
kubectl 롤아웃 상태 커맨드를 사용하여 배포 상태를 확인하거나 모니터링할 수 있습니다.
쿠버네티스를 시작하는 데 도움이 필요하신가요? 쿠버네티스 및 Red Hat® OpenShift® 클러스터에 배포하기 위한 컨테이너 구축 및 관리 방법을 학습하세요. 이 교육 과정에서는 컨테이너 및 쿠버네티스를 사용한 핸즈온 경험을 통해 컨테이너 관리를 위한 핵심 지식을 함양할 수 있도록 지원합니다.
엔터프라이즈용 쿠버네티스
Red Hat OpenShift 는 엔터프라이즈 레디 쿠버네티스 플랫폼으로, 개발자는 셀프 서비스 환경을 구축하여 모든 인프라에서 자동화된 풀 스택 오퍼레이션을 구현할 수 있습니다.
Red Hat OpenShift에는 레지스트리, 네트워킹, 텔레메트리, 보안, 자동화, 서비스 등을 비롯한 부가 기술이 모두 내장되어 있어서 기업이 강력하고 실효성있는 쿠버네티스를 구축할 수 있습니다.
Red Hat OpenShift를 사용하면 개발자는 확장성, 제어, 오케스트레이션을 통해 컨테이너화된 새 애플케이션을 구축 및 호스팅하고 클라우드에 배포함으로써 우수한 아이디어를 새로운 비즈니스에 신속하게 연결할 수 있습니다.
레드햇 공식 블로그
레드햇 공식 블로그에서 고객, 파트너, 커뮤니티 에코시스템 등 현재 화제가 되는 최신 정보를 살펴 보세요.