Comment dépanner les conteneurs confidentiels?
Examinez ces problèmes éventuels.
Les problèmes peuvent être dus à une mauvaise configuration lors de l'installation.
Pour commencer à résoudre les problèmes, exécutez les commandes suivantes afin de recueillir autant de données que possible sur vos conteneurs confidentiels.
-
Recueillir des informations sur l'opérateur.
oc get csv -n openshift-sandboxed-containers-operatoroc describe csv -n openshift-sandboxed-containers-operatoroc get all -n openshift-sandboxed-containers-operator -
Récupérer les journaux et les événements de tous les pods liés à l'adresse 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 -
Recueillez des informations sur les pods.
a. Recueillir des informations sur le responsable du contrôleur.
oc describe pod/controller-manager-<random string> -n openshift-sandboxed-containers-operatoroc logs pod/controller-manager-<random string> -n openshift-sandboxed-containers-operatorb. Collecter des journaux pour une chaîne aléatoire.
oc logs pod/<random string>oc describe pod/<random string>c. Recueillir des informations sur le site
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> -
Recueillez des informations sur l' ConfigMaps.
a. Recueillir des informations sur les points de contrôle.
oc get configmap/osc-feature-gates -n openshift-sandboxed-containers-operator -o yamlb. Recueillir des informations sur les pods homologues.
oc get configmap/peer-pods-cm -n openshift-sandboxed-containers-operator -o yamlc. Rassemblez des informations sur ces secrets.
oc get secret/auth-json-secret -n openshift-sandboxed-containers-operatoroc get secret/peer-pods-secret -n openshift-sandboxed-containers-operatord. Recueillez des informations sur l' KataConfig.
oc get kataconfigs.kataconfiguration.openshift.io/kata-runtime-settings -n openshift-sandboxed-containers-operator -o yamle. Recueillir des informations sur les définitions de ressources personnalisées.
oc get crd/peerpods.confidentialcontainers.orgoc get crd/kataconfigs.kataconfiguration.openshift.io -
Vérifier la capacité et les limites des pods pairs.
a. Vérifier la limite actuelle de pods pairs sur tous les nœuds de travail.
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. Vérifier les ressources allouées à chaque nœud de travailleur.
for n in $(oc get nodes -o name); do echo "=== $n ===" oc describe "$n" | sed -n '/Allocated resources:/,/Events:/p' donec. Compte le nombre de pods pairs en cours d'exécution.
oc get pods -A -o json | jq '.items[] | select(.spec.runtimeClassName == "kata-remote") | "\(.metadata.namespace)/\(.metadata.name)"' | wc -l
Problèmes courants et solutions
Erreur kata.peerpods.io/vm insuffisante
Si vous rencontrez une erreur du type suivant lors de l'ordonnancement des pods pairs :
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.
Cette erreur indique que vous avez atteint la limite de PEERPODS_LIMIT_PER_NODE sur vos nœuds de travail. La limite par défaut est de 10 pods pairs par nœud de travail.
Pour résoudre cet incident, procédez comme suit :
-
Vérifiez la limite actuelle et le nombre de pods pairs en cours d'exécution.
oc get nodes -o json | jq '.items[] | {name: .metadata.name, allocatable: .status.allocatable["kata.peerpods.io/vm"], capacity: .status.capacity["kata.peerpods.io/vm"]}' -
Augmenter la valeur de
PEERPODS_LIMIT_PER_NODEdanspeer-pods-cmConfigMap. Pour plus d'informations, voir Création de conteneurs confidentiels.oc -n openshift-sandboxed-containers-operator patch cm peer-pods-cm \ --type merge \ -p '{"data":{"PEERPODS_LIMIT_PER_NODE":"24"}}' -
Redémarrez le daemonset de l'adaptateur API Cloud.
oc -n openshift-sandboxed-containers-operator rollout restart daemonset/osc-caa-ds -
Vérifier que la nouvelle limite est appliquée.
oc get nodes -o json | jq -r '[.items[] | select (.status.allocatable["kata.peerpods.io/vm"] != null)| .status.allocatable["kata.peerpods.io/vm"] | tonumber] | add'
Pour plus d'informations sur les limites des pods pairs et la planification de la capacité, voir Combien de pods pairs puis-je exécuter par nœud de travail?
Erreur d'authentification IAM après la mise à niveau vers OSC Operator 1.12.1
Si vous constatez une erreur similaire à celle ci-dessous dans les journaux de l'adaptateur d'API cloud (CAA) après la mise à niveau vers la version de l'opérateur de conteneurs en mode sandbox d' 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 version 1.12.1 a introduit une nouvelle exigence consistant à récupérer automatiquement le groupe de sécurité du cluster via l'API du service de cluster IKS de IBM Cloud. Lorsque vous utilisez « IBMCLOUD_IAM_PROFILE_ID » pour
l'authentification (identité de la ressource de calcul), il se peut que le profil IAM ne dispose pas des autorisations nécessaires pour interroger l'API du service de cluster.
Sélectionnez l'une des options suivantes.
- Accorder des autorisations IAM supplémentaires (recommandé)
-
Mettez à jour le profil IAM afin d'y inclure les autorisations nécessaires pour l'API du service de cluster IKS, notamment la possibilité d'appeler
GetClusterTypeSecurityGroups(). Contactez votre administrateur d' IBM Cloud pour qu'il vous attribue les autorisations nécessaires. - Définir explicitement l'ID du groupe de sécurité
-
Configurez la variable d'environnement
IBMCLOUD_VPC_SG_IDdans le fichierpeer-pods-cm( ConfigMap ) afin de contourner la recherche automatique du groupe de sécurité du cluster. Redémarrez ensuite le daemonset de l'adaptateur API Cloud.- Remplacez « ConfigMap » par l'ID de votre groupe de sécurité.
oc -n openshift-sandboxed-containers-operator patch cm peer-pods-cm \ --type merge \ -p '{"data":{"IBMCLOUD_VPC_SG_ID":"<your-security-group-id>"}}' ``` 2. Redémarrez le daemonset de l'adaptateur API Cloud. ```sh {: pre} oc -n openshift-sandboxed-containers-operator rollout restart daemonset/osc-caa-ds ``` - Passer à l'authentification par clé API
-
Passez de l'authentification «
IBMCLOUD_IAM_PROFILE_ID» à l'authentification «IBMCLOUD_API_KEY». L'authentification par clé API utilise un identifiant de service associé à des politiques IAM explicites, dont vous pouvez définir la portée afin d'inclure les autorisations de service de cluster requises. Remplacez le secret «peer-pods-secret» par votre clé API au lieu de l'ID du profil IAM.
Pour plus d'informations sur la modification sous-jacente, consultez le commit du projet en amont « cloud-api-adaptor » à l'adresse dde66055.
Erreur de CPU insuffisante
Si vous rencontrez une erreur du type suivant lors de l'ordonnancement des pods pairs :
Warning FailedScheduling 0/3 nodes are available: 3 Insufficient cpu. preemption: 0/3 nodes are available: 3 No preemption victims found for incoming pod.
Cette erreur indique que vos nœuds de travail ne disposent pas de suffisamment de ressources CPU. Chaque pod pair consomme environ 250m CPU sur le nœud de travail pour la construction du pod Kubernetes, même si la charge de travail réelle s'exécute dans un VSI séparé.
Pour résoudre cet incident, procédez comme suit :
-
Vérifiez l'allocation de l'unité centrale sur vos nœuds de travail.
for n in $(oc get nodes -o name); do echo "=== $n ===" oc describe "$n" | sed -n '/Allocated resources:/,/Events:/p' done -
Sélectionnez l'une des options suivantes :
- Ajoutez d'autres nœuds de travail à votre cluster
- Utiliser des nœuds de travail avec plus de vCPUs
- Réduisez la valeur de
PEERPODS_LIMIT_PER_NODEpour qu'elle corresponde à la capacité de votre nœud de travail - Retirer d'autres charges de travail des nœuds de travail afin de libérer des ressources CPU