8장. MachineHealthCheck [machine.openshift.io/v1beta1]
- 설명
- MachineHealthCheck는 machinehealthchecks API 호환성 수준 2의 스키마입니다. 최소 9 개월 또는 3 개의 마이너 릴리스 (더 긴 버전)에 대한 주요 릴리스 내에서 사용할 수 있습니다.
- 유형
-
object
8.1. 사양
속성 | 유형 | 설명 |
---|---|---|
|
| APIVersion은 버전이 지정된 이 오브젝트 표현의 스키마를 정의합니다. 서버는 인식된 스키마를 최신 내부 값으로 변환해야 하며, 인식되지 않는 값을 거부할 수 있습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
| kind는 이 오브젝트가 나타내는 REST 리소스에 해당하는 문자열 값입니다. 서버는 클라이언트에서 요청을 제출한 끝점에서 이를 유추할 수 있습니다. CamelCase로 업데이트할 수 없습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| 표준 오브젝트의 메타데이터입니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
|
| 머신 상태 점검 정책 사양 |
|
| 최근 MachineHealthCheck 리소스의 상태 |
8.1.1. .spec
- 설명
- 머신 상태 점검 정책 사양
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| "selector"에서 선택한 대부분의 "MaxUnhealthy" 머신이 정상이 아닌 경우에만 훨씬 더 많은 업데이트가 허용됩니다. postive 정수 값 또는 백분율 값이 필요합니다. 백분율 값은 양의 정수여야 하며 100%로 제한되어야 합니다. 0과 0%는 모두 유효하며 모든 수정을 차단합니다. |
|
| 노드가 없는 이 기간보다 오래된 머신은 실패한 것으로 간주되며 수정됩니다. 노드가 없는 머신이 제거되지 않도록 하려면 이 값을 명시적으로 "0"으로 설정하여 시작 검사를 비활성화합니다. 각각 선택적 분수와 단위 접미사(예: "300ms", "1.5h" 또는 "2h45m"가 있는 10진수의 부호 없는 기간 문자열이 필요합니다. 유효한 시간 단위는 "ns", "us"(또는 "us"), "ms", "s", "m", "h"입니다. |
|
| RemediationTemplate은 인프라 공급자가 제공하는 수정 템플릿에 대한 참조입니다. 이 필드는 완전히 선택 사항으로 채워지면 MachineHealthCheck 컨트롤러는 참조된 템플릿에서 새 오브젝트를 생성하고 머신 API Operator 외부에 있는 컨트롤러로 머신 수정을 종료합니다. |
|
| 상태를 실행할 시스템과 일치하는 라벨 선택기입니다. 참고: 빈 선택기는 모든 시스템과 일치합니다. |
|
| UnhealthyConditions에는 노드가 비정상으로 간주되는지 여부를 결정하는 조건 목록이 포함되어 있습니다. 조건은 논리 OR로 결합됩니다. 즉, 조건이 충족되면 노드가 비정상입니다. |
|
| UnhealthyCondition은 기간으로 지정된 타임아웃이 있는 노드 조건 유형 및 값을 나타냅니다. named 조건이 적어도 타임아웃 값에 대해 지정된 상태에 있는 경우 노드는 비정상으로 간주됩니다. |
8.1.2. .spec.remediationTemplate
- 설명
- RemediationTemplate은 인프라 공급자가 제공하는 수정 템플릿에 대한 참조입니다. 이 필드는 완전히 선택 사항으로 채워지면 MachineHealthCheck 컨트롤러는 참조된 템플릿에서 새 오브젝트를 생성하고 머신 API Operator 외부에 있는 컨트롤러로 머신 수정을 종료합니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 참조의 API 버전입니다. |
|
| 전체 오브젝트 대신 오브젝트 조각을 참조하는 경우 이 문자열에는 desiredState.manifest.containers[2]와 같은 유효한 JSON/Go 필드 액세스 문이 포함되어야 합니다. 예를 들어 오브젝트 참조가 Pod 내의 컨테이너에 대한 경우 "spec.containers{name}"과 같은 값을 사용합니다(여기서 "name"은 이벤트를 트리거한 컨테이너 이름을 참조하거나 컨테이너 이름이 "spec.containers[2]"이 Pod에서 인덱스 2가 있는 컨테이너를 참조하는 경우). 이 구문은 오브젝트의 일부를 참조하는 잘 정의된 방법을 사용하는 경우에만 선택됩니다. TODO: 이 설계는 최종적이지 않으며 이 필드는 향후 변경될 수 있습니다. |
|
| 일종의 추천입니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
|
| 추천자의 이름입니다. 자세한 내용은 https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names |
|
| 참조의 네임스페이스입니다. 자세한 내용은 https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ |
|
| 이 참조가 수행되는 특정 resourceVersion(있는 경우). 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency |
|
| 참조의 UID입니다. 자세한 내용은 https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids |
8.1.3. .spec.selector
- 설명
- 상태를 실행할 시스템과 일치하는 라벨 선택기입니다. 참고: 빈 선택기는 모든 시스템과 일치합니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| matchExpressions는 라벨 선택기 요구 사항 목록입니다. 요구 사항은 AND로 설정됩니다. |
|
| 레이블 선택기 요구 사항은 값, 키 및 키와 관련된 연산자를 포함하는 선택기입니다. |
|
| matchLabels는 {key,value} 쌍으로 구성된 맵입니다. matchLabels 맵의 단일 {key,value}는 키 필드가 "key"이고, 연산자는 "In"이고, values 배열에는 "value"만 포함된 matchExpressions 요소와 동일합니다. 요구 사항은 AND로 설정됩니다. |
8.1.4. .spec.selector.matchExpressions
- 설명
- matchExpressions는 라벨 선택기 요구 사항 목록입니다. 요구 사항은 AND로 설정됩니다.
- 유형
-
array
8.1.5. .spec.selector.matchExpressions[]
- 설명
- 레이블 선택기 요구 사항은 값, 키 및 키와 관련된 연산자를 포함하는 선택기입니다.
- 유형
-
object
- 필수 항목
-
key
-
operator
-
속성 | 유형 | 설명 |
---|---|---|
|
| key는 선택기가 적용되는 라벨 키입니다. |
|
| Operator는 일련의 값과의 키 관계를 나타냅니다. 유효한 연산자는 In, NotIn, Exists 및 DoesNotExist입니다. |
|
| 값은 문자열 값의 배열입니다. 연산자가 In 또는 NotIn인 경우 값 배열은 비어 있지 않아야 합니다. 연산자가 Exists 또는 DoesNotExist인 경우 값 배열은 비어 있어야 합니다. 이 배열은 전략적 병합 패치 중에 교체됩니다. |
8.1.6. .spec.unhealthyConditions
- 설명
- UnhealthyConditions에는 노드가 비정상으로 간주되는지 여부를 결정하는 조건 목록이 포함되어 있습니다. 조건은 논리 OR로 결합됩니다. 즉, 조건이 충족되면 노드가 비정상입니다.
- 유형
-
array
8.1.7. .spec.unhealthyConditions[]
- 설명
- UnhealthyCondition은 기간으로 지정된 타임아웃이 있는 노드 조건 유형 및 값을 나타냅니다. named 조건이 적어도 타임아웃 값에 대해 지정된 상태에 있는 경우 노드는 비정상으로 간주됩니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| |
|
| 각각 선택적 분수와 단위 접미사(예: "300ms", "1.5h" 또는 "2h45m"가 있는 10진수의 부호 없는 기간 문자열이 필요합니다. 유효한 시간 단위는 "ns", "us"(또는 "us"), "ms", "s", "m", "h"입니다. |
|
|
8.1.8. .status
- 설명
- 최근 MachineHealthCheck 리소스의 상태
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| conditions는 MachineHealthCheck의 현재 상태를 정의합니다. |
|
| Condition은 Machine API 리소스 작동 상태를 관찰합니다. |
|
| 이 머신 상태 점검에서 계산한 총 머신 수 |
|
| 이 머신 상태 점검에서 계산한 총 머신 수 |
|
| RemediationsAllowed는 maxUnhealthy 단축 회로를 적용하기 전에 이 머신 상태 점검에서 허용하는 추가 수정 횟수입니다. |
8.1.9. .status.conditions
- 설명
- conditions는 MachineHealthCheck의 현재 상태를 정의합니다.
- 유형
-
array
8.1.10. .status.conditions[]
- 설명
- Condition은 Machine API 리소스 작동 상태를 관찰합니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 조건이 한 상태에서 다른 상태로 전환된 마지막 시간입니다. 기본 조건이 변경된 경우여야 합니다. 이를 알 수 없는 경우 API 필드가 변경된 시간을 사용합니다. |
|
| 전환에 대한 세부 정보를 나타내는 사람이 읽을 수 있는 메시지입니다. 이 필드는 비어 있을 수 있습니다. |
|
| CamelCase에서 조건의 마지막 전환 이유는 다음과 같습니다. 특정 API는 이 필드가 보장된 API로 간주되는지 여부를 선택할 수 있습니다. 이 필드는 비어 있지 않을 수 있습니다. |
|
| 심각도는 이유 코드에 대한 명시적 분류를 제공하므로 사용자 또는 머신이 현재 상황을 즉시 이해하고 그에 따라 조치를 취할 수 있습니다. 심각도 필드는 Status=False인 경우에만 설정해야 합니다. |
|
| 조건의 상태, True, False, 알 수 없음. |
|
| CamelCase 또는 foo.example.com/CamelCase의 조건 유형입니다. 많은 .condition.type 값은 Available와 같은 리소스 간에 일관되지만 임의의 조건이 유용할 수 있으므로 (.node.status.conditions 참조), deconflict 기능이 중요합니다. |