3장. PodDisruptionBudget [policy/v1]


설명
PodDisruptionBudget은 Pod 컬렉션으로 인해 발생할 수 있는 최대 중단을 정의하는 오브젝트입니다.
유형
object

3.1. 사양

속성유형설명

apiVersion

string

APIVersion은 버전이 지정된 이 오브젝트 표현의 스키마를 정의합니다. 서버는 인식된 스키마를 최신 내부 값으로 변환해야 하며, 인식되지 않는 값을 거부할 수 있습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

kind

string

kind는 이 오브젝트가 나타내는 REST 리소스에 해당하는 문자열 값입니다. 서버는 클라이언트에서 요청을 제출한 끝점에서 이를 유추할 수 있습니다. CamelCase로 업데이트할 수 없습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

메타데이터

ObjectMeta

표준 오브젝트의 메타데이터입니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

spec

object

PodDisruptionBudgetSpec은 PodDisruptionBudget에 대한 설명입니다.

status

object

PodDisruptionBudgetStatus는 PodDisruptionBudget의 상태에 대한 정보를 나타냅니다. 상태는 시스템의 실제 상태를 추적할 수 있습니다.

3.1.1. .spec

설명
PodDisruptionBudgetSpec은 PodDisruptionBudget에 대한 설명입니다.
유형
object
속성유형설명

maxUnavailable

IntOrString

제거된 Pod가 없는 경우에도 "selector"에서 선택한 대부분의 "maxUnavailable" Pod를 제거할 수 없는 경우 제거가 허용됩니다. 예를 들어 0을 지정하여 모든 자발적으로 제거되는 것을 방지할 수 있습니다. 이는 "minAvailable"과 함께 사용할 수 있는 설정입니다.

minAvailable

IntOrString

제거된 Pod가 없는 경우에도 "selector"에서 선택한 "minAvailable" Pod를 제거 후에도 계속 사용할 수 있는 경우에도 제거할 수 있습니다. 예를 들어 "100%"를 지정하여 모든 자발적으로 제거되는 것을 방지할 수 있습니다.

선택기

LabelSelector

중단 예산에서 제거를 관리하는 Pod에 대한 라벨 쿼리입니다. null 선택기는 Pod와 일치하지 않지만 비어 있는 ({}) 선택기는 네임스페이스 내의 모든 Pod를 선택합니다.

unhealthyPodEvictionPolicy

string

UnhealthyPodEvictionPolicy는 비정상 Pod를 제거로 고려해야 하는 시기에 대한 기준을 정의합니다. 현재 구현은 정상 Pod를 type="Ready",status="True"가 있는 status.conditions 항목이 있는 Pod로 간주합니다.

유효한 정책은 IfHealthyBudget 및 AlwaysAllow입니다. 정책을 지정하지 않으면 IfHealthyBudget 정책에 해당하는 기본 동작이 사용됩니다.

IfHealthyBudget 정책은 실행 중인 Pod(status.phase="Running")를 의미하지만 보호된 애플리케이션이 중단되지 않는 경우에만 제거할 수 있습니다(status.currentHealthy는 적어도 status.desiredHealthy와 동일). 정상 Pod는 제거를 위해 PDB가 적용됩니다.

AlwaysAllow 정책은 실행 중인 모든 Pod(status.phase="Running")를 의미하지만 아직 정상적이지 않은 것으로 간주되며 PDB의 기준이 충족되는지 여부와 관계없이 제거할 수 있습니다. 즉, 중단된 애플리케이션에서 실행 중인 Pod가 정상 상태가 되지 않을 수 있습니다. 정상 Pod는 제거를 위해 PDB가 적용됩니다.

향후에 추가 정책이 추가될 수 있습니다. 제거 결정을 수행하는 클라이언트는 이 필드에서 인식되지 않는 정책이 발생하면 비정상 Pod를 제거할 수 없습니다.

이 필드는 베타 수준입니다. 제거 API는 기능 게이트 PDBUnhealthyPodEvictionPolicy가 활성화된 경우(기본적으로 활성화) 이 필드를 사용합니다.

가능한 enum 값: - "AlwaysAllow" 정책은 실행 중인 모든 Pod(status.phase="Running")를 의미하지만 아직 정상이 아닌 것으로 간주되며 PDB의 기준이 충족되는지 여부와 관계없이 제거할 수 있습니다. 즉, 중단된 애플리케이션에서 실행 중인 Pod가 정상 상태가 되지 않을 수 있습니다. 정상 Pod는 제거에 대한 PDB의 영향을 받습니다. - "IfHealthyBudget" 정책은 Pod 실행(status.phase="Running")을 의미합니다. 그러나 가드된 애플리케이션이 중단되지 않는 경우에만 정상이 제거될 수 있습니다(status.currentHealthy는 status.desiredHealthy와 최소 동일). 정상 Pod는 제거를 위해 PDB가 적용됩니다.

3.1.2. .status

설명
PodDisruptionBudgetStatus는 PodDisruptionBudget의 상태에 대한 정보를 나타냅니다. 상태는 시스템의 실제 상태를 추적할 수 있습니다.
유형
object
필수 항목
  • disruptionsAllowed
  • currentHealthy
  • desiredHealthy
  • expectedPods
속성유형설명

conditions

배열(Condition)

조건에는 PDB 조건이 포함됩니다. 중단 컨트롤러에서 DisruptionAllowed 조건을 설정합니다. 다음은 reason 필드의 알려진 값입니다( 향후 추가 이유는 추가할 수 있습니다. - SyncFailed: 컨트롤러에 오류가 발생하여 허용된 중단 수를 계산할 수 없었습니다. 따라서 중단이 허용되지 않으며 조건 상태는 False입니다. - InsufficientPods: PodDisruptionBudget에 필요한 수 또는 그 이하의 Pod 수입니다. 중단이 허용되지 않으며 조건 상태는 False입니다. - SufficientPods: PodDisruptionBudget에 필요한 것보다 더 많은 Pod가 있습니다. 조건은 True이고, 허용되는 중단 횟수는 disruptionsAllowed 속성에서 제공합니다.

currentHealthy

integer

현재 정상 Pod 수

desiredHealthy

integer

원하는 최소 정상 Pod 수

disruptedPods

오브젝트(시간)

DisruptedPods에는 API 서버 제거 하위 리소스에서 제거가 처리되었지만 PodDisruptionBudget 컨트롤러에서 아직 관찰되지 않은 Pod에 대한 정보가 포함되어 있습니다. Pod는 PDB 컨트롤러에서 삭제 또는 시간 초과로 표시된 것으로 표시되는 시간에 API 서버가 제거 요청을 처리할 때 이 맵에 있습니다. 맵의 키는 Pod 이름이며 값은 API 서버가 제거 요청을 처리하는 시간입니다. 삭제가 발생하지 않고 Pod가 여전히 있는 경우 일정 시간 후에 PodDisruptionBudget 컨트롤러에서 자동으로 목록에서 제거됩니다. 모든 것이 순조롭게 진행되면 이 맵은 대부분의 시간 동안 비어 있어야 합니다. 맵의 많은 수의 항목은 Pod 삭제 관련 문제를 나타낼 수 있습니다.

disruptionsAllowed

integer

현재 허용되는 Pod 중단 수입니다.

expectedPods

integer

이 중단 예산으로 계산되는 총 Pod 수

observedGeneration

integer

이 PDB 상태를 업데이트할 때 관찰된 대부분의 최근 생성 DisruptionsAllowed 및 기타 상태 정보는 observedGeneration이 PDB의 개체 생성과 동일한 경우에만 유효합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.