9장. Machine [machine.openshift.io/v1beta1]
- 설명
- 머신은 최소 9 개월 또는 3 개의 마이너 릴리스 (더 긴 버전) 동안 시스템 API 호환성 수준 2의 스키마입니다.
- 유형
-
object
9.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 | |
|
| MachineSpec은 원하는 머신 상태를 정의합니다. |
|
| MachineStatus는 머신의 관찰 상태를 정의합니다. |
9.1.1. .spec
- 설명
- MachineSpec은 원하는 머신 상태를 정의합니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| LifecycleHooks를 사용하면 머신 라이프사이클 내에서 사전 정의된 특정 시점에서 머신에서 작업을 일시 중지할 수 있습니다. |
|
| ObjectMeta가 생성된 노드를 자동으로 채웁니다. 이를 사용하여 노드를 생성할 때 사용해야 하는 레이블, 주석, 이름 접두사 등을 나타냅니다. |
|
| providerID는 공급자가 제공하는 머신의 ID입니다. 이 필드는 이 머신에 해당하는 노드 오브젝트에 표시된 공급자 ID와 일치해야 합니다. 이 필드는 cluster-api의 상위 수준 소비자에 필요합니다. 사용 사례는 cluster-api가 공급자인 클러스터 자동 스케일러입니다. 자동 스케일러의 정리 논리는 머신을 노드와 비교하여 Kubernetes 노드로 등록할 수 없는 공급자의 시스템을 찾습니다. 자동 스케일러의 일반 out-of-tree 공급자인 cluster-api를 사용하면 자동 스케일러에 시스템 목록의 공급자 보기를 사용할 수 있어야 합니다. k8s apiserver에서 다른 노드 목록을 쿼리한 다음, 등록되지 않은 시스템을 확인하기 위해 비교가 수행되며 삭제로 표시됩니다. 이 필드는 액추에이터에 의해 설정되며 일반 공급자로서 cluster-api와 상호 작용할 자동 스케일러와 같은 상위 수준 엔티티에서 사용합니다. |
|
| 노드 생성 중에 사용할 providerSpec 세부 정보 공급자별 구성입니다. |
|
| 추가 방식으로 해당 노드에 적용할 테인트 목록입니다. 이 목록은 다른 엔티티에 의해 지속적으로 노드에 추가된 다른 테인트를 덮어쓰지 않습니다. 예를 들어 머신 컨트롤러에서 테인트를 적용하도록 요청한 다음 테인트를 수동으로 제거하도록 요청하는 경우 이러한 테인트를 적극적으로 조정해야 하지만 머신 컨트롤러에서 테인트를 제거하지는 않습니다. |
|
| 이 테인트가 연결된 노드에는 테인트를 허용하지 않는 Pod에 "효과"가 있습니다. |
9.1.2. .spec.lifecycleHooks
- 설명
- LifecycleHooks를 사용하면 머신 라이프사이클 내에서 사전 정의된 특정 시점에서 머신에서 작업을 일시 중지할 수 있습니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| PreDrain 후크를 사용하면 시스템이 드레이닝되지 않습니다. 또한 종료와 같은 추가 라이프사이클 이벤트가 차단됩니다. |
|
| LifecycleHook은 라이프사이클 후크의 단일 인스턴스를 나타냅니다. |
|
| 사전 종료 후크를 사용하면 시스템이 종료되지 않습니다. 사전 종료 후크는 머신이 드레인된 후 작동합니다. |
|
| LifecycleHook은 라이프사이클 후크의 단일 인스턴스를 나타냅니다. |
9.1.3. .spec.lifecycleHooks.preDrain
- 설명
- PreDrain 후크를 사용하면 시스템이 드레이닝되지 않습니다. 또한 종료와 같은 추가 라이프사이클 이벤트가 차단됩니다.
- 유형
-
array
9.1.4. .spec.lifecycleHooks.preDrain[]
- 설명
- LifecycleHook은 라이프사이클 후크의 단일 인스턴스를 나타냅니다.
- 유형
-
object
- 필수 항목
-
name
-
소유자
-
속성 | 유형 | 설명 |
---|---|---|
|
| name은 lifcycle 후크의 고유한 이름을 정의합니다. 이름은 CamelCase에서 고유하고 설명적으로 1~3단어여야 하며, 네임스페이스(예: foo.example.com/CamelCase)여야 합니다. 이름은 고유해야 하며 단일 엔티티에서만 관리해야 합니다. |
|
| owner는 라이프사이클 후크의 소유자를 정의합니다. 이는 사용자가 라이프사이클 차단을 담당하는 사람/누구를 식별할 수 있도록 충분히 설명해야 합니다. 컨트롤러의 이름(예: clusteroperator/etcd) 또는 후크를 관리하는 관리자일 수 있습니다. |
9.1.5. .spec.lifecycleHooks.preTerminate
- 설명
- 사전 종료 후크를 사용하면 시스템이 종료되지 않습니다. 사전 종료 후크는 머신이 드레인된 후 작동합니다.
- 유형
-
array
9.1.6. .spec.lifecycleHooks.preTerminate[]
- 설명
- LifecycleHook은 라이프사이클 후크의 단일 인스턴스를 나타냅니다.
- 유형
-
object
- 필수 항목
-
name
-
소유자
-
속성 | 유형 | 설명 |
---|---|---|
|
| name은 lifcycle 후크의 고유한 이름을 정의합니다. 이름은 CamelCase에서 고유하고 설명적으로 1~3단어여야 하며, 네임스페이스(예: foo.example.com/CamelCase)여야 합니다. 이름은 고유해야 하며 단일 엔티티에서만 관리해야 합니다. |
|
| owner는 라이프사이클 후크의 소유자를 정의합니다. 이는 사용자가 라이프사이클 차단을 담당하는 사람/누구를 식별할 수 있도록 충분히 설명해야 합니다. 컨트롤러의 이름(예: clusteroperator/etcd) 또는 후크를 관리하는 관리자일 수 있습니다. |
9.1.7. .spec.metadata
- 설명
- ObjectMeta가 생성된 노드를 자동으로 채웁니다. 이를 사용하여 노드를 생성할 때 사용해야 하는 레이블, 주석, 이름 접두사 등을 나타냅니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 주석은 임의의 메타데이터를 저장 및 검색하기 위해 외부 툴에서 설정할 수 있는 리소스와 함께 저장되는 구조화되지 않은 키 값 맵입니다. 오브젝트를 수정할 때 쿼리할 수 없으며 보존해야 합니다. 자세한 내용은 http://kubernetes.io/docs/user-guide/annotations |
|
| generateName은 서버에서 사용하는 선택적 접두사로, Name 필드가 제공되지 않은 고유한 이름만 생성하는 데 사용됩니다. 이 필드를 사용하면 클라이언트에 반환되는 이름이 전달된 이름과 다릅니다. 이 값은 고유한 접미사와 결합됩니다. 제공된 값은 Name 필드와 동일한 검증 규칙을 가지며 서버에서 고유 값을 만드는 데 필요한 접미사 길이로 잘릴 수 있습니다. 이 필드가 지정되고 생성된 이름이 있는 경우 서버는 409를 반환하지 않습니다. 대신 201 Created 또는 500을 반환합니다. Reason ServerTimeout은 할당된 시간에 고유 이름을 찾을 수 없으며 클라이언트가 재시도해야 함을 나타냅니다(선택적으로 Retry-After 헤더에 표시된 시간 후). Name이 지정되지 않은 경우에만 적용됩니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency |
|
| 개체를 구성 및 분류(범위 및 선택)하는 데 사용할 수 있는 문자열 키와 값의 맵입니다. 복제 컨트롤러 및 서비스의 선택기와 일치할 수 있습니다. 자세한 내용은 http://kubernetes.io/docs/user-guide/labels |
|
| 이름은 네임스페이스 내에서 고유해야 합니다. 일부 리소스는 클라이언트가 적절한 이름의 생성을 자동으로 요청할 수 있지만 리소스를 생성할 때 필요합니다. 이름은 주로 생성 멱등 및 구성 정의를 위한 것입니다. CamelCase로 자세한 내용은 http://kubernetes.io/docs/user-guide/identifiers#names |
|
| namespace는 각 이름 내의 공간을 고유해야 합니다. 빈 네임스페이스는 "default" 네임스페이스와 동일하지만 "default"는 표준 표현입니다. 모든 오브젝트의 범위를 네임스페이스로 지정해야 하는 것은 아닙니다. 해당 오브젝트에 대한 이 필드의 값은 비어 있습니다. DNS_LABEL이어야 합니다. CamelCase로 자세한 내용은 http://kubernetes.io/docs/user-guide/namespaces |
|
| 이 오브젝트에서 사용하는 오브젝트 목록입니다. 목록에 있는 모든 개체가 삭제된 경우 이 개체는 가비지 수집됩니다. 컨트롤러에서 이 오브젝트를 관리하는 경우 이 목록의 항목이 이 컨트롤러를 가리키며 controller 필드가 true로 설정됩니다. 컨트롤러가 여러 개 있을 수 없습니다. |
|
| OwnerReference에는 소유 개체를 식별할 수 있는 충분한 정보가 포함되어 있습니다. 소유 오브젝트는 종속 항목과 동일한 네임스페이스에 있거나 클러스터 범위여야 하므로 네임스페이스 필드가 없습니다. |
9.1.8. .spec.metadata.ownerReferences
- 설명
- 이 오브젝트에서 사용하는 오브젝트 목록입니다. 목록에 있는 모든 개체가 삭제된 경우 이 개체는 가비지 수집됩니다. 컨트롤러에서 이 오브젝트를 관리하는 경우 이 목록의 항목이 이 컨트롤러를 가리키며 controller 필드가 true로 설정됩니다. 컨트롤러가 여러 개 있을 수 없습니다.
- 유형
-
array
9.1.9. .spec.metadata.ownerReferences[]
- 설명
- OwnerReference에는 소유 개체를 식별할 수 있는 충분한 정보가 포함되어 있습니다. 소유 오브젝트는 종속 항목과 동일한 네임스페이스에 있거나 클러스터 범위여야 하므로 네임스페이스 필드가 없습니다.
- 유형
-
object
- 필수 항목
-
apiVersion
-
kind
-
name
-
uid
-
속성 | 유형 | 설명 |
---|---|---|
|
| 참조의 API 버전입니다. |
|
| If true, and if the owner has the "foreworkspaceDeletion" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. 가비지 수집기가 이 필드와 상호 작용하고 전경 삭제를 적용하는 방법은 https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion 를 참조하십시오. 기본값은 false입니다. 이 필드를 설정하려면 사용자에게 소유자의 "삭제" 권한이 필요하며, 그렇지 않으면 422(프로세스할 수 없는 엔티티)가 반환됩니다. |
|
| true인 경우 이 참조는 관리 컨트롤러를 가리킵니다. |
|
| 일종의 추천입니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
|
| 추천자의 이름입니다. 자세한 내용은 http://kubernetes.io/docs/user-guide/identifiers#names |
|
| 참조의 UID입니다. 자세한 내용은 http://kubernetes.io/docs/user-guide/identifiers#uids |
9.1.10. .spec.providerSpec
- 설명
- 노드 생성 중에 사용할 providerSpec 세부 정보 공급자별 구성입니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
| `` | value는 리소스 구성을 인라인으로 직렬화한 표현입니다. 공급자는 이 필드에서 직렬화/직렬화해야 하는 자체 버전이 지정된 API 유형을 구성 요소와 유사한 상태로 유지하는 것이 좋습니다. |
9.1.11. .spec.taints
- 설명
- 추가 방식으로 해당 노드에 적용할 테인트 목록입니다. 이 목록은 다른 엔티티에 의해 지속적으로 노드에 추가된 다른 테인트를 덮어쓰지 않습니다. 예를 들어 머신 컨트롤러에서 테인트를 적용하도록 요청한 다음 테인트를 수동으로 제거하도록 요청하는 경우 이러한 테인트를 적극적으로 조정해야 하지만 머신 컨트롤러에서 테인트를 제거하지는 않습니다.
- 유형
-
array
9.1.12. .spec.taints[]
- 설명
- 이 테인트가 연결된 노드에는 테인트를 허용하지 않는 Pod에 "효과"가 있습니다.
- 유형
-
object
- 필수 항목
-
effect
-
key
-
속성 | 유형 | 설명 |
---|---|---|
|
| 필수 항목입니다. 테인트를 허용하지 않는 pod에 테인트의 영향을 미칩니다. 유효한 영향은 NoSchedule, PreferNoSchedule 및 NoExecute입니다. |
|
| 필수 항목입니다. 노드에 적용할 taint 키입니다. |
|
| TimeAdded는 테인트가 추가된 시간을 나타냅니다. NoExecute 테인트에만 작성됩니다. |
|
| taint 키에 해당하는 taint 값입니다. |
9.1.13. .status
- 설명
- MachineStatus는 머신의 관찰 상태를 정의합니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| address는 시스템에 할당된 주소 목록입니다. 사용 가능한 경우 클라우드 공급자에서 쿼리합니다. |
|
| NodeAddress에는 노드 주소에 대한 정보가 포함되어 있습니다. |
|
| 조건은 머신의 현재 상태를 정의합니다. |
|
| Condition은 Machine API 리소스 작동 상태를 관찰합니다. |
|
| 시스템 조정 터미널 문제가 있는 경우 errorMessage가 설정되며 로깅 및 사용자 소비에 적합한 더 자세한 문자열이 포함됩니다. 이 필드는 시간이 지남에 따라 컨트롤러가 자동으로 수정될 것으로 예상되는 전송 오류(예: 서비스 중단)에 대해 설정하지 않아야 하지만 대신 머신 사양 또는 컨트롤러 구성에 근본적으로 문제가 있음을 나타내며 수동 개입이 필요하다는 것을 나타냅니다. 터미널 오류의 예로는 사양의 설정이 유효하지 않거나, 컨트롤러에서 지원하지 않는 값 또는 담당 컨트롤러 자체가 매우 잘못 구성되어 있습니다. 머신 조정 중에 발생하는 일시적인 오류는 머신 오브젝트에 이벤트로 추가 및/또는 컨트롤러의 출력에 로그인할 수 있습니다. |
|
| ErrorReason은 머신을 조정하는데 터미널 문제가 있는 경우 설정되며, 머신 해석에 적합한 succinct 값을 포함합니다. 이 필드는 시간이 지남에 따라 컨트롤러가 자동으로 수정될 것으로 예상되는 전송 오류(예: 서비스 중단)에 대해 설정하지 않아야 하지만 대신 머신 사양 또는 컨트롤러 구성에 근본적으로 문제가 있음을 나타내며 수동 개입이 필요하다는 것을 나타냅니다. 터미널 오류의 예로는 사양의 설정이 유효하지 않거나, 컨트롤러에서 지원하지 않는 값 또는 담당 컨트롤러 자체가 매우 잘못 구성되어 있습니다. 머신 조정 중에 발생하는 일시적인 오류는 머신 오브젝트에 이벤트로 추가 및/또는 컨트롤러의 출력에 로그인할 수 있습니다. |
|
| LastOperation은 machine-controller에서 수행한 마지막 작동을 설명합니다. 이 API는 특정 머신에서 수행되는 최신 작업의 관점에서 기록으로 유용할 수 있습니다. 또한 최신 작동 상태를 전달해야 합니다. 예를 들어 계속 진행 중이거나 실패하거나 성공적으로 완료된 경우입니다. |
|
| LastUpdated는 이 상태가 마지막으로 관찰된 시기를 식별합니다. |
|
| NodeRef는 해당 노드가 있는 경우 해당 노드를 가리킵니다. |
|
| 단계(Step)는 머신 작동의 현재 단계를 나타냅니다. 다음 중 하나: Failed, Provisioning, Provisioned, Running, Deleting |
| `` | providerStatus는 공급자별 상태를 자세히 설명합니다. 공급자는 이 필드에서 직렬화/직렬화해야 하는 자체 버전의 API 유형을 유지 관리하는 것이 좋습니다. |
9.1.14. .status.addresses
- 설명
- address는 시스템에 할당된 주소 목록입니다. 사용 가능한 경우 클라우드 공급자에서 쿼리합니다.
- 유형
-
array
9.1.15. .status.addresses[]
- 설명
- NodeAddress에는 노드 주소에 대한 정보가 포함되어 있습니다.
- 유형
-
object
- 필수 항목
-
address
-
type
-
속성 | 유형 | 설명 |
---|---|---|
|
| 노드 주소입니다. |
|
| 노드 주소 유형, 호스트 이름, ExternalIP 또는 InternalIP 중 하나 |
9.1.16. .status.conditions
- 설명
- 조건은 머신의 현재 상태를 정의합니다.
- 유형
-
array
9.1.17. .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 기능이 중요합니다. |
9.1.18. .status.lastOperation
- 설명
- LastOperation은 machine-controller에서 수행한 마지막 작동을 설명합니다. 이 API는 특정 머신에서 수행되는 최신 작업의 관점에서 기록으로 유용할 수 있습니다. 또한 최신 작동 상태를 전달해야 합니다. 예를 들어 계속 진행 중이거나 실패하거나 성공적으로 완료된 경우입니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 설명은 마지막 작업에 대해 사람이 읽을 수 있는 설명입니다. |
|
| LastUpdated는 LastOperation API가 마지막으로 업데이트된 타임스탬프입니다. |
|
| state는 마지막으로 수행된 작업의 현재 상태입니다. 예: 처리, 실패, 성공 등 |
|
| type은 마지막으로 수행된 작업 유형입니다. 예: 생성, 삭제, 업데이트 등 |
9.1.19. .status.nodeRef
- 설명
- NodeRef는 해당 노드가 있는 경우 해당 노드를 가리킵니다.
- 유형
-
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 |