3.3. CLI를 사용하여 OpenShift 샌드박스 컨테이너 워크로드 배포
CLI를 사용하여 OpenShift 샌드박스 컨테이너 워크로드를 배포할 수 있습니다. 먼저 OpenShift 샌드박스 컨테이너 Operator를 설치한 다음 KataConfig
사용자 정의 리소스를 생성해야 합니다. 샌드박스 컨테이너에 워크로드를 배포할 준비가 되면 kata
를 워크로드 YAML 파일에 runtimeClassName
으로 추가해야 합니다.
3.3.1. CLI를 사용하여 OpenShift 샌드박스 컨테이너 Operator 설치
OpenShift 샌드박스 컨테이너 Operator는 OpenShift Container Platform CLI를 사용하여 설치할 수 있습니다.
사전 요구 사항
- 클러스터에 OpenShift Container Platform 4.12가 설치되어 있어야 합니다.
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. OpenShift 샌드박스 컨테이너 카탈로그를 구독하고 있습니다.
참고OpenShift 샌드박스 컨테이너 카탈로그를 구독하면
openshift-sandboxed-containers-operator
네임스페이스에서 OpenShift 샌드박스 컨테이너 Operator에 액세스할 수 있습니다.
절차
OpenShift 샌드박스 컨테이너 Operator의
Namespace
오브젝트를 생성합니다.다음 매니페스트가 포함된
Namespace
오브젝트 YAML 파일을 생성합니다.apiVersion: v1 kind: Namespace metadata: name: openshift-sandboxed-containers-operator
Namespace
오브젝트를 생성합니다.$ oc create -f Namespace.yaml
OpenShift 샌드박스 컨테이너 Operator의
OperatorGroup
오브젝트를 생성합니다.다음 매니페스트가 포함된
OperatorGroup
오브젝트 YAML 파일을 생성합니다.apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-sandboxed-containers-operator namespace: openshift-sandboxed-containers-operator spec: targetNamespaces: - openshift-sandboxed-containers-operator
OperatorGroup
개체를 생성합니다.$ oc create -f OperatorGroup.yaml
Subscription
오브젝트를 생성하여 OpenShift 샌드박스 컨테이너 Operator에네임스페이스
를 등록합니다.다음 매니페스트를 포함하는
Subscription
오브젝트 YAML 파일을 생성합니다.apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: openshift-sandboxed-containers-operator namespace: openshift-sandboxed-containers-operator spec: channel: "stable-1.3" installPlanApproval: Automatic name: sandboxed-containers-operator source: redhat-operators sourceNamespace: openshift-marketplace startingCSV: sandboxed-containers-operator.v1.3.2
Subscription
오브젝트를 생성합니다.$ oc create -f Subscription.yaml
OpenShift 샌드박스 컨테이너 Operator가 클러스터에 설치되었습니다.
위에 나열된 모든 오브젝트 파일 이름은 제안 사항입니다. 다른 이름을 사용하여 오브젝트 YAML 파일을 생성할 수 있습니다.
검증
Operator가 올바르게 설치되었는지 확인합니다.
$ oc get csv -n openshift-sandboxed-containers-operator
출력 예
NAME DISPLAY VERSION REPLACES PHASE openshift-sandboxed-containers openshift-sandboxed-containers-operator 1.3.2 1.3.1 Succeeded
추가 리소스
3.3.2. CLI를 사용하여 KataConfig 사용자 지정 리소스 생성
kata
를 노드에 RuntimeClass
로 설치하려면 하나의 KataConfig
CR(사용자 정의 리소스)을 생성해야 합니다. KataConfig
CR을 생성하면 OpenShift 샌드박스 컨테이너 Operator가 트리거되어 다음을 수행합니다.
-
RHCOS 노드에 QEMU 및
kata-containers
와 같은 필요한 RHCOS 확장을 설치합니다. -
CRI-O 런타임이 올바른
kata
런타임 처리기로 구성되었는지 확인합니다. -
기본 구성으로
kata
라는RuntimeClass
CR을 생성합니다. 이를 통해 사용자는RuntimeClassName
필드의 CR을 참조하여kata
를 런타임으로 사용하도록 워크로드를 구성할 수 있습니다. 이 CR은 런타임의 리소스 오버헤드도 지정합니다.
Kata는 기본적으로 모든 작업자 노드에 설치됩니다. kata
를 특정 노드에만 RuntimeClass
로 설치하려면 해당 노드에 라벨을 추가한 다음 이를 생성할 때 KataConfig
CR에 라벨을 정의할 수 있습니다.
사전 요구 사항
- 클러스터에 OpenShift Container Platform 4.12가 설치되어 있습니다.
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - OpenShift 샌드박스 컨테이너 Operator가 설치되어 있습니다.
KataConfig
CR을 생성하면 작업자 노드가 자동으로 재부팅됩니다. 재부팅에는 10분에서 60분 이상 걸릴 수 있습니다. 재부팅 시간을 방해하는 요소는 다음과 같습니다.
- 더 많은 수의 작업자 노드가 있는 대규모 OpenShift Container Platform 배포
- BIOS 및ECDHE 유틸리티 활성화
- SSD가 아닌 하드 드라이브에 배포합니다.
- 가상 노드가 아닌 베어 메탈과 같은 물리적 노드에 배포합니다.
- 느린 CPU 및 네트워크
절차
다음 매니페스트를 사용하여 YAML 파일을 생성합니다.
apiVersion: kataconfiguration.openshift.io/v1 kind: KataConfig metadata: name: cluster-kataconfig spec: checkNodeEligibility: false 1 logLevel: info
- 1
- 노드 자격을 감지하려면 'checkNodeEligibility'를
true
로 설정하여kata
를RuntimeClass
로 실행합니다. 자세한 내용은 "클러스터 노드가 OpenShift 샌드박스 컨테이너를 실행할 수 있는지 확인"을 참조하십시오.
(선택 사항) 선택한 노드에만
kata
를RuntimeClass
로 설치하려면 매니페스트에 라벨이 포함된 YAML 파일을 생성합니다.apiVersion: kataconfiguration.openshift.io/v1 kind: KataConfig metadata: name: cluster-kataconfig spec: checkNodeEligibility: false logLevel: info kataConfigPoolSelector: matchLabels: <label_key>: '<label_value>' 1
- 1
kataConfigPoolSelector
의 라벨은 단일 값만 지원합니다.nodeSelector
구문은 지원되지 않습니다.
KataConfig
리소스를 생성합니다.$ oc create -f <file name>.yaml
새 KataConfig
CR이 생성되고 작업자 노드에 kata
를 RuntimeClass
로 설치합니다. kata
설치가 완료되고 작업자 노드가 재부팅될 때까지 기다린 후 다음 단계를 계속합니다.
OpenShift 샌드박스 컨테이너는 Kata를 기본 런타임이 아닌 클러스터의 선택적 런타임으로만 설치합니다.
검증
설치 진행 상황을 모니터링합니다.
$ watch "oc describe kataconfig | sed -n /^Status:/,/^Events/p"
Is In Progress 의 값이
false
로 표시되면 설치가 완료됩니다.
추가 리소스
3.3.3. CLI를 사용하여 샌드박스 컨테이너에서 워크로드 배포
OpenShift 샌드박스 컨테이너는 Kata를 기본 런타임이 아닌 클러스터의 선택적 런타임으로 설치합니다.
샌드박스 컨테이너에 pod 템플릿 워크로드를 배포하려면 kata
를 워크로드 YAML 파일에 runtimeClassName
으로 추가해야 합니다.
사전 요구 사항
- 클러스터에 OpenShift Container Platform 4.12가 설치되어 있습니다.
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - OpenShift 샌드박스 컨테이너 Operator가 설치되어 있습니다.
-
KataConfig
CR(사용자 정의 리소스)을 생성했습니다.
절차
pod 템플릿 오브젝트에
runtimeClassName: kata
를 추가합니다.-
Pod
오브젝트 -
ReplicaSet
오브젝트 -
ReplicationController
오브젝트 -
StatefulSet
오브젝트 -
Deployment
오브젝트 -
DeploymentConfig
오브젝트
-
Pod 오브젝트의 예
apiVersion: v1 kind: Pod metadata: name: hello-openshift labels: app: hello-openshift spec: runtimeClassName: kata containers: - name: hello-openshift image: quay.io/openshift/origin-hello-openshift ports: - containerPort: 8888 securityContext: privileged: false allowPrivilegeEscalation: false runAsNonRoot: true runAsUser: 1001 capabilities: drop: - ALL seccompProfile: type: RuntimeDefault
OpenShift Container Platform은 워크로드를 생성하고 예약하기 시작합니다.
검증
-
Pod 템플릿 오브젝트에서
runtimeClassName
필드를 검사합니다.runtimeClassName
이kata
인 경우 워크로드는 OpenShift 샌드박스 컨테이너에서 실행됩니다.