2.4. 확인된 문제
OpenShift Container Platform 클러스터의
hostPath볼륨에서 마운트된 파일 또는 디렉터리에 액세스할 때 SELinux 거부를 수신할 수 있습니다. 권한 있는 샌드박스 컨테이너가 SELinux 검사를 비활성화하지 않기 때문에 권한 있는 샌드박스 컨테이너를 실행하는 경우에도 이러한 거부가 발생할 수 있습니다.호스트의 SELinux 정책에 따라 기본적으로 샌드박스 워크로드에서 호스트 파일 시스템을 완전히 격리할 수 있습니다. 또한
virtiofsd데몬 또는 QEMU의 잠재적인 보안 결함에 대해 더 강력한 보호 기능을 제공합니다.마운트된 파일 또는 디렉터리에 호스트에 특정 SELinux 요구 사항이 없는 경우 로컬 영구 볼륨을 대안으로 사용할 수 있습니다. 컨테이너 런타임의 SELinux 정책에 따라 파일이 자동으로
container_file_t로 레이블이 다시 지정됩니다. 로컬 볼륨을 사용한 영구 스토리지를 참조하십시오.마운트된 파일 또는 디렉터리에 호스트의 특정 SELinux 레이블이 있을 것으로 예상되는 경우 자동 레이블은 옵션이 아닙니다. 대신
virtiofsd데몬이 이러한 특정 라벨에 액세스할 수 있도록 호스트에서 사용자 지정 SELinux 규칙을 설정할 수 있습니다. (KATA-469)일부 OpenShift 샌드박스 컨테이너 Operator Pod는 컨테이너 CPU 리소스 제한을 사용하여 Pod에 사용 가능한 CPU 수를 늘립니다. 이러한 Pod는 요청된 것보다 적은 CPU를 수신할 수 있습니다. 컨테이너 내에서 기능을 사용할 수 있는 경우
oc rsh <pod>를 사용하여 Pod에 액세스하고lscpu명령을 실행하여 CPU 리소스 문제를 진단할 수 있습니다.lscpu
$ lscpuCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
CPU(s): 16 On-line CPU(s) list: 0-12,14,15 Off-line CPU(s) list: 13
CPU(s): 16 On-line CPU(s) list: 0-12,14,15 Off-line CPU(s) list: 13Copy to Clipboard Copied! Toggle word wrap Toggle overflow 오프라인 CPU 목록은 실행에서 실행으로 예기치 않게 변경될 수 있습니다.
이 문제를 해결하려면 Pod 주석을 사용하여 CPU 제한을 설정하지 않고 추가 CPU를 요청할 수 있습니다. 프로세서 할당 방법이 다르기 때문에 Pod 주석을 사용하는 CPU 요청은 이 문제의 영향을 받지 않습니다. CPU 제한을 설정하지 않고 Pod의 메타데이터에 다음 주석을 추가해야 합니다.
metadata: annotations: io.katacontainers.config.hypervisor.default_vcpus: "16"metadata: annotations: io.katacontainers.config.hypervisor.default_vcpus: "16"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너의 보안 컨텍스트에서 SELinux MCS(Multi-Category Security) 레이블을 설정하면 Pod가 시작되지 않고 Pod 로그에 다음 오류가 표시됩니다.
Error: CreateContainer failed: EACCES: Permission denied: unknown
Error: CreateContainer failed: EACCES: Permission denied: unknownCopy to Clipboard Copied! Toggle word wrap Toggle overflow 샌드박스 컨테이너가 생성될 때 런타임은 컨테이너의 보안 컨텍스트에 액세스할 수 없습니다. 즉
virtiofsd는 적절한 SELinux 레이블로 실행되지 않으며 컨테이너의 호스트 파일에 액세스할 수 없습니다. 결과적으로 MCS 레이블을 사용하여 컨테이너별로 샌드박스 컨테이너의 파일을 격리할 수 없습니다. 즉, 모든 컨테이너가 샌드박스 컨테이너 내의 모든 파일에 액세스할 수 있습니다. 현재 이 문제에 대한 해결방법이 없습니다.-
OpenShift 샌드박스 컨테이너에 대한 FIPS 컴플라이언스는
kata런타임 클래스에만 적용됩니다. 새로운 피어 Pod 런타임 클래스kata-remote는 아직 완전히 지원되지 않으며 FIPS 컴플라이언스를 위해 테스트되지 않았습니다. (KATA-2166) -
--announce-submounts 주석이 있는 Pod가 시작되지 않습니다. 이는 OpenShift Container Platform 4.13 및 4.14의 OpenShift 샌드박스 컨테이너 Operator에서 사용하는s또는--thread-pool-size가 포함된 io.katacontainers.config.hypervisor.virtio_extra_argvirtiofsd구성 요소의 회귀입니다. OpenShift Container Platform 4.12 및 4.11은 영향을 받지 않습니다. (KATA-2146) 임시 메모리 볼륨의
sizeLimit옵션은 OpenShift 샌드박스 컨테이너에서 작동하지 않습니다. 임시 볼륨 크기는 기본적으로 샌드박스 컨테이너에 할당된 메모리의 50%입니다. 볼륨을 다시 마운트하여 이 볼륨의 크기를 수동으로 변경할 수 있습니다. 예를 들어 샌드박스 컨테이너에 할당된 메모리가 6GB이고 임시 볼륨이/var/lib/containers에 마운트된 경우 다음 명령을 사용하여 VM 메모리의 기본 50% 이상으로 이 볼륨의 크기를 늘릴 수 있습니다.mount -o remount,size=4G /var/lib/containers
$ mount -o remount,size=4G /var/lib/containersCopy to Clipboard Copied! Toggle word wrap Toggle overflow io.katacontainers.config.hypervisor.default_vcpus및io.katacontainers.config.hypervisor.default_memory주석은 QEMU의 의미 체계를 따릅니다. 여기에는 피어 Pod에 대한 다음과 같은 제한 사항이 있습니다.io.katacontainers.config.hypervisor.default_memory주석의 값을256미만으로 설정하면 다음 오류가 발생합니다.Failed to create pod sandbox: rpc error: code = Unknown desc = CreateContainer failed: Memory specified in annotation io.katacontainers.config.hypervisor.default_memory is less than minimum required 256, please specify a larger value: unknown
Failed to create pod sandbox: rpc error: code = Unknown desc = CreateContainer failed: Memory specified in annotation io.katacontainers.config.hypervisor.default_memory is less than minimum required 256, please specify a larger value: unknownCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
io.katacontainers.config.hypervisor.default_memory: 256및io.katacontainers.config.hypervisor.default_vcpus: 1주석을 사용하는 경우 가장 작은 인스턴스가 목록에서 시작됩니다. -
io.katacontainers.config.hypervisor.default_vcpus: 0주석을 사용하면 모든 주석이 무시되고 기본 인스턴스가 시작됩니다.
대신 유연한 Pod VM 크기에
io.katacontainers.config.hypervisor.machine_type: <instance type/instance size> 주석을 사용하는 것이 좋습니다. (KATA-2575, KATA-2577, KATA-2578)OpenShift 샌드박스 컨테이너 Operator 1.4.1에서 버전 1.5로 자동 업그레이드하는 동안 업그레이드가
보류 중 상태로 유지됩니다.서브스크립션이 자동 업데이트로 설정된 경우 OpenShift 샌드박스 컨테이너의 업그레이드가 설치됩니다. 그러나
KataConfigCR(사용자 정의 리소스)이 설치된 경우 CSV가보류 중 상태로 유지됩니다.다음 명령을 실행하여
Subscription오브젝트의 상태를 확인할 수 있습니다.oc get sub osc-operator -n openshift-osc-operator -o yaml
$ oc get sub osc-operator -n openshift-osc-operator -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 오류는
Subscription오브젝트의status섹션과 upgradeInstallPlan오브젝트의status섹션에 표시됩니다.message: 'error validating existing CRs against new CRD''s schema for "kataconfigs.kataconfiguration.openshift.io": error validating custom resource against new schema for KataConfig /example-kataconfig: [].status.runtimeClass: Invalid value: "string": status.runtimeClass in body must be of type array: "string"'message: 'error validating existing CRs against new CRD''s schema for "kataconfigs.kataconfiguration.openshift.io": error validating custom resource against new schema for KataConfig /example-kataconfig: [].status.runtimeClass: Invalid value: "string": status.runtimeClass in body must be of type array: "string"'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 오류가 발생하면 OpenShift 샌드박스 컨테이너 Operator를 제거한 다음 다시 설치해야 합니다.
-
kata또는kata-remote런타임에서 실행되는 모든 워크로드(Pod, 배포, 데몬 세트)를 삭제합니다. 이러한 워크로드를 다시 설치한 후 다시 생성해야 합니다. 워크로드 삭제에 대한 자세한 내용은 CLI를 사용하여 OpenShift 샌드박스 컨테이너 Pod 삭제를 참조하십시오. KataConfigCR을 삭제합니다. CLI를 사용하여 KataConfig 사용자 지정 리소스 삭제를 참조하십시오.중요워크로드가 실행 중인 경우
KataConfigCR을 삭제하지 마십시오.다음 명령을 사용하여
KataConfigCR의 삭제 상태를 확인할 수 있습니다.oc get kataconfig -n openshift-osc-operator
$ oc get kataconfig -n openshift-osc-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Operator를 설치 제거합니다. CLI를 사용하여 OpenShift 샌드박스 컨테이너 Operator 삭제를참조하십시오.
OpenShift 샌드박스 컨테이너 Operator를 다시 설치합니다. CLI를 사용하여 OpenShift 샌드박스 컨테이너 Operator 설치를 참조하십시오.
OpenShift 샌드박스 컨테이너 Operator를 다시 설치하면 버전 1.5.0이 설치됩니다.
-
KataConfigCR을 생성합니다. CLI를 사용하여 KataConfig 사용자 지정 리소스 생성을 참조하십시오. - 워크로드를 다시 생성합니다. CLI를 사용하여 샌드박스 컨테이너에 워크로드 배포를 참조하십시오.
참고수동 업데이트로 서브스크립션을 설정하는 경우 OpenShift 샌드박스 컨테이너 Operator 1.5.1을 사용할 수 있을 때까지 업그레이드를 승인하지 마십시오.
-