6.2. 스케줄링 메커니즘을 캡슐화하기 위해 RuntimeClass 오브젝트 생성
RuntimeClass
오브젝트를 사용하면 테인트 및 허용 오차와 같은 스케줄링 방식을 편리하게 사용할 수 있습니다. 사용자는 테인트 및 허용 오차를 캡슐화는 런타임 클래스를 배포한 후 이를 Pod에 적용하여 적절한 노드에 예약할 수 있습니다. 여러 운영 체제 변형을 지원하는 클러스터에도 런타임 클래스를 생성해야 합니다.
절차
RuntimeClass
오브젝트 YAML 파일을 생성합니다. 예를 들어,runtime-class.yaml
은 다음과 같습니다.apiVersion: node.k8s.io/v1 kind: RuntimeClass metadata: name: windows2019 1 handler: 'runhcs-wcow-process' scheduling: nodeSelector: 2 kubernetes.io/os: 'windows' kubernetes.io/arch: 'amd64' node.kubernetes.io/windows-build: '10.0.17763' tolerations: 3 - effect: NoSchedule key: os operator: Equal value: "windows" - effect: NoSchedule key: os operator: Equal value: "Windows"
- 1
RuntimeClass
오브젝트 이름을 지정하며, 이는 이 런타임 클래스로 관리할 Pod에 정의됩니다.- 2
- 이 런타임 클래스를 지원하는 노드에 존재해야 하는 레이블을 지정합니다. 이 런타임 클래스를 사용하는 Pod는 이 선택기와 일치하는 노드에만 예약할 수 있습니다. 런타임 클래스의 노드 선택기는 Pod의 기존 노드 선택기와 병합됩니다. 충돌이 발생하면 Pod를 노드에 예약할 수 없습니다.
-
Windows 2019의 경우
node.kubernetes.io/windows-build: '10.0.17763'
라벨을 지정합니다. -
Windows 2022의 경우
node.kubernetes.io/windows-build: '10.0.20348'
라벨을 지정합니다.
-
Windows 2019의 경우
- 3
- 허용 중에 이 런타임 클래스와 함께 실행 중인 pod(중복 제외)에 추가하려면 허용 오차를 지정합니다. 이 작업을 수행하면 Pod 및 런타임 클래스에서 허용되는 노드 집합이 결합됩니다.
RuntimeClass
오브젝트를 생성합니다.$ oc create -f <file-name>.yaml
예를 들면 다음과 같습니다.
$ oc create -f runtime-class.yaml
Pod에
RuntimeClass
오브젝트를 적용하여 적절한 운영 체제 변형에 예약되어 있는지 확인합니다.apiVersion: v1 kind: Pod metadata: name: my-windows-pod spec: runtimeClassName: windows2019 1 # ...
- 1
- Pod 예약을 관리할 런타임 클래스를 지정합니다.