기밀 컨테이너 문제를 해결하려면 어떻게 해야 하나요?
발생 가능한 문제를 검토하세요.
이 문제는 설정 중 잘못된 구성으로 인해 발생할 수 있습니다.
문제 해결을 시작하려면 다음 명령을 실행하여 기밀 컨테이너에 대한 데이터를 최대한 많이 수집하세요.
-
운영자에 대한 정보를 수집하십시오.
oc get csv -n openshift-sandboxed-containers-operatoroc describe csv -n openshift-sandboxed-containers-operatoroc get all -n openshift-sandboxed-containers-operator -
DaemonSets 와 관련된 모든 파드에서 로그와 이벤트를 검색합니다.
oc describe pod/osc-caa-ds-<random string> -n openshift-sandboxed-containers-operatoroc logs pod/osc-caa-ds-<random string> -n openshift-sandboxed-containers-operatoroc describe pod/osc-config-sync-install-<random string> -n openshift-sandboxed-containers-operatoroc logs pod/osc-config-sync-install-<random string> -n openshift-sandboxed-containers-operatoroc describe pod/osc-rpm-install-<random string> -n openshift-sandboxed-containers-operatoroc logs pod/osc-rpm-install-<random string> -n openshift-sandboxed-containers-operator -
포드에 대한 정보를 수집하십시오.
a. 컨트롤러 관리자에 대한 정보를 수집합니다.
oc describe pod/controller-manager-<random string> -n openshift-sandboxed-containers-operatoroc logs pod/controller-manager-<random string> -n openshift-sandboxed-containers-operatorb. 임의의 문자열에 대한 로그를 수집합니다.
oc logs pod/<random string>oc describe pod/<random string>c.
openshift-sandboxed-containers-operator-bundle에 대한 정보를 수집합니다.oc logs pod/trikprot-openshift-sandboxed-containers-operator-bundle-<version>oc describe pod/trikprot-openshift-sandboxed-containers-operator-bundle-<version> -
ConfigMaps 에 대한 정보를 수집하십시오.
a. 기능 게이트에 대한 정보를 수집합니다.
oc get configmap/osc-feature-gates -n openshift-sandboxed-containers-operator -o yamlb. 피어 포드에 대한 정보를 수집합니다.
oc get configmap/peer-pods-cm -n openshift-sandboxed-containers-operator -o yamlc. 비밀에 관한 정보를 수집하세요.
oc get secret/auth-json-secret -n openshift-sandboxed-containers-operatoroc get secret/peer-pods-secret -n openshift-sandboxed-containers-operatord. KataConfig 에 대한 정보를 수집하십시오.
oc get kataconfigs.kataconfiguration.openshift.io/kata-runtime-settings -n openshift-sandboxed-containers-operator -o yamle. 사용자 지정 리소스 정의에 대한 정보를 수집합니다.
oc get crd/peerpods.confidentialcontainers.orgoc get crd/kataconfigs.kataconfiguration.openshift.io -
피어 포드 용량 및 제한을 확인합니다.
a. 모든 워커 노드에서 현재 피어 파드 제한을 확인합니다.
oc get nodes -o json | jq -r '[.items[] | select (.status.allocatable["kata.peerpods.io/vm"] != null)| .status.allocatable["kata.peerpods.io/vm"] | tonumber] | add'b. 각 워커 노드에 할당된 리소스를 확인합니다.
for n in $(oc get nodes -o name); do echo "=== $n ===" oc describe "$n" | sed -n '/Allocated resources:/,/Events:/p' donec. 현재 실행 중인 피어 파드의 수를 계산합니다.
oc get pods -A -o json | jq '.items[] | select(.spec.runtimeClassName == "kata-remote") | "\(.metadata.namespace)/\(.metadata.name)"' | wc -l
일반적인 문제 및 해결 방법
불충분 kata.peerpods.io/vm 오류
피어 파드를 예약할 때 다음과 같은 오류가 표시되는 경우:
Warning FailedScheduling 0/30 nodes are available: 9 Insufficient kata.peerpods.io/vm. preemption: 0/30 nodes are available: 9 No preemption victims found for incoming pod.
이 오류는 작업자 노드에서 PEERPODS_LIMIT_PER_NODE 제한에 도달했음을 나타냅니다. 기본 제한은 워커 노드당 피어 파드 10개입니다.
이 문제를 해결하려면 다음과 같이 하십시오.
-
현재 제한과 실행 중인 피어 포드 수를 확인합니다.
oc get nodes -o json | jq '.items[] | {name: .metadata.name, allocatable: .status.allocatable["kata.peerpods.io/vm"], capacity: .status.capacity["kata.peerpods.io/vm"]}' -
peer-pods-cmConfigMap 에서PEERPODS_LIMIT_PER_NODE값을 늘립니다. 자세한 내용은 기밀 컨테이너 만들기를 참조하세요.oc -n openshift-sandboxed-containers-operator patch cm peer-pods-cm \ --type merge \ -p '{"data":{"PEERPODS_LIMIT_PER_NODE":"24"}}' -
클라우드 API 어댑터 데몬 세트를 다시 시작합니다.
oc -n openshift-sandboxed-containers-operator rollout restart daemonset/osc-caa-ds -
새 한도가 적용되었는지 확인합니다.
oc get nodes -o json | jq -r '[.items[] | select (.status.allocatable["kata.peerpods.io/vm"] != null)| .status.allocatable["kata.peerpods.io/vm"] | tonumber] | add'
피어 파드 제한 및 용량 계획에 대한 자세한 내용은 워커 노드당 몇 개의 피어 파드를 실행할 수 있는지 도움말을 참조하세요.
OSC Operator로 업그레이드한 후 IAM 인증 오류 발생 1.12.1
OpenShift 샌드박스 컨테이너 오퍼레이터 버전을 업그레이드한 후 Cloud API 어댑터(CAA) 로그에서 다음과 유사한 오류가 표시되는 경우 1.12.1:
cloud-api-adaptor: cluster error with:
Unauthorized
further details:
{
"StatusCode": 401,
"Result": {
"code": "A0007",
"description": "You do not have the correct permissions to perform this action..."
}
}
1.12.1 버전부터는 IBM Cloud IKS 클러스터 서비스 API를 통해 클러스터의 보안 그룹을 자동으로 가져와야 하는 새로운 요구 사항이 도입되었습니다. IBMCLOUD_IAM_PROFILE_ID 를 인증 수단(컴퓨팅 리소스 ID)으로 사용할 경우, IAM 프로필에 클러스터 서비스 API를 조회하는 데 필요한 권한이 없을 수 있습니다.
다음 옵션 중 하나를 선택하십시오.
- 추가 IAM 권한 부여 (권장)
-
IAM 프로필을 업데이트하여 IKS 클러스터 서비스 API에 대한 권한, 특히
GetClusterTypeSecurityGroups()을 호출할 수 있는 권한을 포함시키십시오. IBM Cloud 관리자에게 문의하여 필요한 권한을 추가해 주십시오. - 보안 그룹 ID를 명시적으로 설정합니다
-
peer-pods-cm의 ConfigMap 에서IBMCLOUD_VPC_SG_ID환경 변수를 설정하여 클러스터 보안 그룹의 자동 조회를 우회하십시오. 그런 다음 Cloud API 어댑터 데몬셋을 다시 시작하십시오.- ConfigMap 에 보안 그룹 ID를 입력하세요.
oc -n openshift-sandboxed-containers-operator patch cm peer-pods-cm \ --type merge \ -p '{"data":{"IBMCLOUD_VPC_SG_ID":"<your-security-group-id>"}}' ``` 2. 클라우드 API 어댑터 데몬 세트를 다시 시작합니다. ```sh {: pre} oc -n openshift-sandboxed-containers-operator rollout restart daemonset/osc-caa-ds ``` - API 키 인증으로 전환
-
IBMCLOUD_IAM_PROFILE_ID인증에서IBMCLOUD_API_KEY인증으로 전환하십시오. API 키 인증은 명시적인 IAM 정책이 적용된 서비스 ID를 사용하며, 이 정책의 적용 범위를 조정하여 필요한 클러스터 서비스 권한을 포함시킬 수 있습니다.peer-pods-secret시크릿을 IAM 프로필 ID 대신 자신의 API 키로 업데이트하십시오.
이번 변경 사항에 대한 자세한 내용은 업스트림 cloud-api-adaptor의 커밋 dde66055 을 참조하십시오.
CPU 부족 오류
피어 파드를 예약할 때 다음과 같은 오류가 표시되는 경우:
Warning FailedScheduling 0/3 nodes are available: 3 Insufficient cpu. preemption: 0/3 nodes are available: 3 No preemption victims found for incoming pod.
이 오류는 작업자 노드에 사용 가능한 CPU 리소스가 충분하지 않음을 나타냅니다. 각 피어 파드는 실제 워크로드가 별도의 VSI에서 실행되더라도 Kubernetes 포드 구성의 작업자 노드에서 약 250m CPU를 소비합니다.
이 문제를 해결하려면 다음과 같이 하십시오.
-
워커 노드의 CPU 할당을 확인하세요.
for n in $(oc get nodes -o name); do echo "=== $n ===" oc describe "$n" | sed -n '/Allocated resources:/,/Events:/p' done -
다음 옵션 중 하나를 선택하십시오.
- 클러스터에 워커 노드 추가하기
- 더 많은 워커 노드 사용 vCPUs
PEERPODS_LIMIT_PER_NODE값을 워커 노드 용량에 맞게 줄이세요- 워커 노드에서 다른 워크로드를 제거하여 CPU 리소스를 확보하세요