4장. IBM에 워크로드 배포
IBM Z® 및 IBM® LinuxONE에 OpenShift 샌드박스 컨테이너 워크로드를 배포할 수 있습니다.
IBM Z® 및 IBM® LinuxONE에 OpenShift 샌드박스 컨테이너 워크로드를 배포하는 것은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
클러스터 사전 요구 사항
- Red Hat OpenShift Container Platform 4.14 이상을 설치했습니다.
- 클러스터에는 컨트롤 노드와 두 개의 작업자 노드가 있습니다.
배포 흐름
이 문서는 IBM Z®에 대해서만 설명하지만 모든 절차는 IBM® LinuxONE에도 적용됩니다.
다음 단계를 수행하여 OpenShift 샌드박스 컨테이너 워크로드를 배포합니다.
- KVM 호스트에 libvirt 볼륨을 구성합니다.
- KVM 게스트 이미지를 생성하여 libvirt 볼륨에 업로드합니다.
- 피어 포드 VM 이미지를 생성하여 libvirt 볼륨에 업로드합니다.
- libvirt 공급자에 대한 시크릿을 생성합니다.
- libvirt 공급자에 대한 구성 맵을 만듭니다.
- KVM 호스트에 대한 SSH 키 시크릿을 생성합니다.
-
KataConfig
CR을 생성합니다. - 선택 사항: 노드당 피어 Pod VM 제한을 수정합니다.
-
kata-remote
런타임 클래스를 사용하도록 워크로드 오브젝트를 구성합니다.
- 클러스터 노드와 피어 Pod는 동일한 IBM Z® KVM 호스트 논리 파티션(LPAR)에 있어야 합니다.
- 클러스터 노드와 피어 Pod는 동일한 서브넷에 연결되어 있어야 합니다.
4.1. 환경 준비
환경을 준비하려면 다음 단계를 수행합니다.
- 클러스터에 충분한 리소스가 있는지 확인합니다.
- OpenShift 샌드박스 컨테이너 Operator를 설치합니다.
4.1.1. 리소스 요구 사항
피어 Pod 가상 머신(VM)에는 다음 두 위치에 있는 리소스가 필요합니다.
-
작업자 노드입니다. 작업자 노드는 메타데이터, Kata shim 리소스(
containerd-shim-kata-v2
), remote-hypervisor 리소스(cloud-api-adaptor
) 및 작업자 노드와 피어 Pod VM 간의 터널 설정을 저장합니다. - 클라우드 인스턴스입니다. 클라우드에서 실행되는 실제 피어 Pod VM입니다.
Kubernetes 작업자 노드에 사용되는 CPU 및 메모리 리소스는 피어 Pod를 생성하는 데 사용되는 RuntimeClass(kata-remote
) 정의에 포함된 Pod 오버헤드 에 의해 처리됩니다.
클라우드에서 실행되는 총 피어 Pod VM 수는 Kubernetes 노드 확장 리소스로 정의됩니다. 이 제한은 노드당이며 peerpodConfig
CR(사용자 정의 리소스)의 limit
속성으로 설정됩니다.
peerpodconfig-openshift
라는 peerpodConfig
CR은 kataConfig
CR을 생성하고 피어 Pod를 활성화할 때 생성되며 openshift-sandboxed-containers-operator
네임스페이스에 있습니다.
다음 peerpodConfig
CR 예제에서는 기본 사양
값을 표시합니다.
apiVersion: confidentialcontainers.org/v1alpha1
kind: PeerPodConfig
metadata:
name: peerpodconfig-openshift
namespace: openshift-sandboxed-containers-operator
spec:
cloudSecretName: peer-pods-secret
configMapName: peer-pods-cm
limit: "10" 1
nodeSelector:
node-role.kubernetes.io/kata-oc: ""
- 1
- 기본 제한은 노드당 VM 10개입니다.
확장된 리소스의 이름은 kata.peerpods.io/vm
이며 Kubernetes 스케줄러에서 용량 추적 및 계정을 처리할 수 있습니다.
환경의 요구 사항에 따라 노드당 제한을 편집할 수 있습니다. 자세한 내용은 "Peer pods에서 노드당 VM 제한 수정"을 참조하십시오.
변경 웹 후크 는 확장된 리소스 kata.peerpods.io/vm
을 Pod 사양에 추가합니다. 또한 Pod 사양에서 리소스별 항목도 제거합니다(있는 경우). 이를 통해 Kubernetes 스케줄러에서 이러한 확장 리소스를 고려하여 리소스를 사용할 수 있는 경우에만 피어 Pod를 예약할 수 있습니다.
변경 웹 후크는 다음과 같이 Kubernetes Pod를 수정합니다.
-
변경 웹 후크는
TARGET_RUNTIME_CLASS
환경 변수에 지정된 예상RuntimeClassName
값을 Pod에 확인합니다. Pod 사양의 값이TARGET_RUNTIME_CLASS
의 값과 일치하지 않으면 Pod를 수정하지 않고 웹 후크가 종료됩니다. RuntimeClassName
값이 일치하는 경우 Webhook에서 Pod 사양을 다음과 같이 변경합니다.-
Webhook는 Pod에 있는 모든 컨테이너 및 init 컨테이너의
resources
필드에서 모든 리소스 사양을 제거합니다. -
Webhook는 Pod의 첫 번째 컨테이너의 resources 필드를 수정하여 확장 리소스(
kata.peerpods.io/vm
)를 사양에 추가합니다. 확장된 리소스kata.peerpods.io/vm
은 회계 목적으로 Kubernetes 스케줄러에서 사용합니다.
-
Webhook는 Pod에 있는 모든 컨테이너 및 init 컨테이너의
변경 웹 후크는 OpenShift Container Platform의 특정 시스템 네임스페이스가 변경되지 않습니다. 해당 시스템 네임스페이스에 피어 Pod가 생성되면 Pod 사양에 확장 리소스가 포함되지 않는 한 Kubernetes 확장 리소스를 사용하는 리소스 계정이 작동하지 않습니다.
특정 네임스페이스에서 피어 Pod 생성만 허용하도록 클러스터 전체 정책을 정의하는 것이 좋습니다.
4.1.2. OpenShift 샌드박스 컨테이너 Operator 설치
OpenShift Container Platform 웹 콘솔 또는 CLI(명령줄 인터페이스)를 사용하여 OpenShift 샌드박스 컨테이너 Operator를 설치할 수 있습니다.
4.1.2.1. 웹 콘솔을 사용하여 Operator 설치
Red Hat OpenShift Container Platform 웹 콘솔을 사용하여 OpenShift 샌드박스 컨테이너 Operator를 설치할 수 있습니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
프로세스
-
OpenShift Container Platform 웹 콘솔에서 Operator
OperatorHub로 이동합니다. -
키워드로 필터링 필드에
OpenShift sandboxed containers
를 입력합니다. - OpenShift 샌드박스 컨테이너 Operator 타일을 선택하고 설치를 클릭합니다.
- Operator 설치 페이지의 사용 가능한 업데이트 채널 옵션 목록에서 stable 을 선택합니다.
설치된 네임스페이스 용으로 Operator 권장 네임스페이스 가 선택되어 있는지 확인합니다. 이렇게 하면 필수
openshift-sandboxed-containers-operator
네임스페이스에 Operator가 설치됩니다. 이 네임스페이스가 아직 존재하지 않으면 자동으로 생성됩니다.참고openshift-sandboxed-containers-operator
이외의 네임스페이스에 OpenShift 샌드박스 컨테이너 Operator를 설치하려고 하면 설치가 실패합니다.- 승인 전략에 대해 자동 이 선택되어 있는지 확인합니다. Automatic 은 기본값이며 새 z-stream 릴리스를 사용할 수 있을 때 OpenShift 샌드박스 컨테이너에 대한 자동 업데이트를 활성화합니다.
- 설치를 클릭합니다.
OpenShift 샌드박스 컨테이너 Operator가 클러스터에 설치되었습니다.
검증
-
Operators
설치된 Operator로 이동합니다. - OpenShift 샌드박스 컨테이너 Operator가 표시되는지 확인합니다.
추가 리소스
4.1.2.2. CLI를 사용하여 Operator 설치
CLI를 사용하여 OpenShift 샌드박스 컨테이너 Operator를 설치할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
프로세스
Namespace.yaml
매니페스트 파일을 생성합니다.apiVersion: v1 kind: Namespace metadata: name: openshift-sandboxed-containers-operator
다음 명령을 실행하여 네임스페이스를 생성합니다.
$ oc create -f Namespace.yaml
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
다음 명령을 실행하여 operator 그룹을 생성합니다.
$ oc create -f OperatorGroup.yaml
Subscription.yaml
매니페스트 파일을 생성합니다.apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: openshift-sandboxed-containers-operator namespace: openshift-sandboxed-containers-operator spec: channel: stable installPlanApproval: Automatic name: sandboxed-containers-operator source: redhat-operators sourceNamespace: openshift-marketplace startingCSV: sandboxed-containers-operator.v1.6.0
다음 명령을 실행하여 서브스크립션을 생성합니다.
$ oc create -f Subscription.yaml
OpenShift 샌드박스 컨테이너 Operator가 클러스터에 설치되었습니다.
검증
다음 명령을 실행하여 Operator가 올바르게 설치되었는지 확인합니다.
$ oc get csv -n openshift-sandboxed-containers-operator
출력 예
NAME DISPLAY VERSION REPLACES PHASE openshift-sandboxed-containers openshift-sandboxed-containers-operator 1.6.0 1.5.3 Succeeded