¿Cómo puedo solucionar los problemas de los contenedores confidenciales?
Revise estos posibles problemas.
Los problemas podrían deberse a un error de configuración durante la instalación.
Para empezar a solucionar problemas, ejecute los siguientes comandos para recopilar todos los datos que pueda sobre sus contenedores confidenciales.
-
Recopila información sobre el operador.
oc get csv -n openshift-sandboxed-containers-operatoroc describe csv -n openshift-sandboxed-containers-operatoroc get all -n openshift-sandboxed-containers-operator -
Recupere los registros y eventos de todos los pods relacionados con 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 -
Recopila información sobre las cápsulas.
a. Recopilar información sobre el gestor de controladores.
oc describe pod/controller-manager-<random string> -n openshift-sandboxed-containers-operatoroc logs pod/controller-manager-<random string> -n openshift-sandboxed-containers-operatorb. Recopila registros para una cadena aleatoria.
oc logs pod/<random string>oc describe pod/<random string>c. Recopilar información sobre la
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> -
Recopila información sobre la « ConfigMaps ».
a. Recopilar información sobre las puertas de acceso.
oc get configmap/osc-feature-gates -n openshift-sandboxed-containers-operator -o yamlb. Recopilar información sobre los pods pares.
oc get configmap/peer-pods-cm -n openshift-sandboxed-containers-operator -o yamlc. Recopila información sobre los secretos.
oc get secret/auth-json-secret -n openshift-sandboxed-containers-operatoroc get secret/peer-pods-secret -n openshift-sandboxed-containers-operatord. Recopila información sobre la « KataConfig ».
oc get kataconfigs.kataconfiguration.openshift.io/kata-runtime-settings -n openshift-sandboxed-containers-operator -o yamle. Recopilar información sobre las definiciones de recursos personalizados.
oc get crd/peerpods.confidentialcontainers.orgoc get crd/kataconfigs.kataconfiguration.openshift.io -
Compruebe la capacidad y los límites de los pods de pares.
a. Compruebe el límite actual de pods de pares en todos los nodos trabajadores.
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. Compruebe los recursos asignados en cada nodo trabajador.
for n in $(oc get nodes -o name); do echo "=== $n ===" oc describe "$n" | sed -n '/Allocated resources:/,/Events:/p' donec. Cuenta el número de pods pares actualmente en ejecución.
oc get pods -A -o json | jq '.items[] | select(.spec.runtimeClassName == "kata-remote") | "\(.metadata.namespace)/\(.metadata.name)"' | wc -l
Problemas comunes y soluciones
Error insuficiente kata.peerpods.io/vm
Si aparece un error como el siguiente al programar pods de pares:
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.
Este error indica que has alcanzado el límite de PEERPODS_LIMIT_PER_NODE en tus nodos trabajadores. El límite por defecto es de 10 pods por nodo trabajador.
Para resolver este problema:
-
Verifique el límite actual y cuántos pods de pares se están ejecutando.
oc get nodes -o json | jq '.items[] | {name: .metadata.name, allocatable: .status.allocatable["kata.peerpods.io/vm"], capacity: .status.capacity["kata.peerpods.io/vm"]}' -
Aumente el valor de
PEERPODS_LIMIT_PER_NODEenpeer-pods-cmConfigMap. Para más información, consulte Creación de contenedores confidenciales.oc -n openshift-sandboxed-containers-operator patch cm peer-pods-cm \ --type merge \ -p '{"data":{"PEERPODS_LIMIT_PER_NODE":"24"}}' -
Reinicie el conjunto de demonios del adaptador de API de nube.
oc -n openshift-sandboxed-containers-operator rollout restart daemonset/osc-caa-ds -
Compruebe que se aplica el nuevo límite.
oc get nodes -o json | jq -r '[.items[] | select (.status.allocatable["kata.peerpods.io/vm"] != null)| .status.allocatable["kata.peerpods.io/vm"] | tonumber] | add'
Para obtener más información sobre los límites de los pods de pares y la planificación de la capacidad, consulte ¿Cuántos pods de pares puedo ejecutar por nodo de trabajador?
Error de autenticación de IAM tras actualizar a OSC Operator 1.12.1
Si observas un error similar al siguiente en los registros del adaptador de API en la nube (CAA) tras actualizar a la versión del operador de contenedores en entorno de pruebas de « OpenShift », 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..."
}
}
La versión 1.12.1 introdujo un nuevo requisito para obtener automáticamente el grupo de seguridad del clúster a través de la API del servicio de clústeres IKS de IBM Cloud. Cuando se utiliza « IBMCLOUD_IAM_PROFILE_ID » para la
autenticación (identidad del recurso de computación), es posible que el perfil de IAM no disponga de los permisos necesarios para consultar la API de servicios del clúster.
Elija una de las opciones siguientes.
- Conceder permisos adicionales de IAM (recomendado)
-
Actualiza el perfil de IAM para incluir permisos para la API del servicio del clúster IKS, concretamente la capacidad de llamar a
GetClusterTypeSecurityGroups(). Ponte en contacto con el administrador de IBM Cloud para que te conceda los permisos necesarios. - Establecer explícitamente el ID del grupo de seguridad
-
Configura la variable de entorno
IBMCLOUD_VPC_SG_IDenpeer-pods-cmConfigMap para omitir la búsqueda automática del grupo de seguridad del clúster. A continuación, reinicia el daemonset del adaptador de la API en la nube.- Sustituye « ConfigMap » por el ID de tu grupo de seguridad.
oc -n openshift-sandboxed-containers-operator patch cm peer-pods-cm \ --type merge \ -p '{"data":{"IBMCLOUD_VPC_SG_ID":"<your-security-group-id>"}}' ``` 2. Reinicie el conjunto de demonios del adaptador de API de nube. ```sh {: pre} oc -n openshift-sandboxed-containers-operator rollout restart daemonset/osc-caa-ds ``` - Cambiar a la autenticación mediante clave API
-
Cambia de la autenticación «
IBMCLOUD_IAM_PROFILE_ID» a la de «IBMCLOUD_API_KEY». La autenticación mediante clave API utiliza un identificador de servicio con políticas de IAM explícitas, cuyo ámbito de aplicación puedes definir para que incluya los permisos de servicio del clúster necesarios. Actualiza el secreto «peer-pods-secret» con tu clave de API en lugar del ID del perfil de IAM.
Para obtener más información sobre el cambio subyacente, consulta la confirmación del proyecto original «cloud-api-adaptor» en dde66055.
Error de CPU insuficiente
Si aparece un error como el siguiente al programar pods de pares:
Warning FailedScheduling 0/3 nodes are available: 3 Insufficient cpu. preemption: 0/3 nodes are available: 3 No preemption victims found for incoming pod.
Este error indica que sus nodos trabajadores no tienen suficientes recursos de CPU disponibles. Cada pod de pares consume aproximadamente 250m CPU en el nodo trabajador para la construcción del pod Kubernetes, aunque la carga de trabajo real se ejecute en una VSI independiente.
Para resolver este problema:
-
Compruebe la asignación de CPU en sus nodos trabajadores.
for n in $(oc get nodes -o name); do echo "=== $n ===" oc describe "$n" | sed -n '/Allocated resources:/,/Events:/p' done -
Elija una de estas opciones:
- Añade más nodos de trabajo a tu clúster
- Utilizar nodos trabajadores con más vCPUs
- Reduzca el valor de
PEERPODS_LIMIT_PER_NODEpara ajustarlo a la capacidad de su nodo trabajador - Eliminar otras cargas de trabajo de los nodos trabajadores para liberar recursos de CPU