Come si risolvono i problemi dei contenitori riservati?
Esaminate questi possibili problemi.
I problemi potrebbero essere causati da una configurazione errata durante la configurazione.
Per iniziare a risolvere i problemi, eseguire i seguenti comandi per raccogliere il maggior numero possibile di dati sui container riservati.
-
Raccogliere informazioni sull'operatore.
oc get csv -n openshift-sandboxed-containers-operatoroc describe csv -n openshift-sandboxed-containers-operatoroc get all -n openshift-sandboxed-containers-operator -
Recupera i log e gli eventi da tutti i pod relativi a 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 -
Raccogliere informazioni sui baccelli.
a. Raccogliere informazioni sul gestore del controllore.
oc describe pod/controller-manager-<random string> -n openshift-sandboxed-containers-operatoroc logs pod/controller-manager-<random string> -n openshift-sandboxed-containers-operatorb. Raccogli i log relativi a una stringa casuale.
oc logs pod/<random string>oc describe pod/<random string>c. Raccogliere informazioni su
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> -
Raccogliere informazioni su ConfigMaps.
a. Raccogliere informazioni sulle porte delle caratteristiche.
oc get configmap/osc-feature-gates -n openshift-sandboxed-containers-operator -o yamlb. Raccogliere informazioni sui pod peer.
oc get configmap/peer-pods-cm -n openshift-sandboxed-containers-operator -o yamlc. Raccogliere informazioni sui segreti.
oc get secret/auth-json-secret -n openshift-sandboxed-containers-operatoroc get secret/peer-pods-secret -n openshift-sandboxed-containers-operatord. Raccogliere informazioni su KataConfig.
oc get kataconfigs.kataconfiguration.openshift.io/kata-runtime-settings -n openshift-sandboxed-containers-operator -o yamle. Raccogliere informazioni sulle definizioni di risorse personalizzate.
oc get crd/peerpods.confidentialcontainers.orgoc get crd/kataconfigs.kataconfiguration.openshift.io -
Controllare la capacità e i limiti dei pod peer.
a. Controlla il limite attuale di pod peer in tutti i nodi worker.
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. Controllare le risorse allocate su ciascun nodo worker.
for n in $(oc get nodes -o name); do echo "=== $n ===" oc describe "$n" | sed -n '/Allocated resources:/,/Events:/p' donec. Conta il numero di pod peer attualmente in esecuzione.
oc get pods -A -o json | jq '.items[] | select(.spec.runtimeClassName == "kata-remote") | "\(.metadata.namespace)/\(.metadata.name)"' | wc -l
Problemi e soluzioni comuni
Errore insufficiente kata.peerpods.io/vm
Se viene visualizzato un errore come il seguente durante la pianificazione dei pod peer:
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.
Questo errore indica che è stato raggiunto il limite di PEERPODS_LIMIT_PER_NODE sui nodi worker. Il limite predefinito è di 10 pod peer per nodo worker.
Per risolvere questo problema:
-
Verificare il limite attuale e il numero di pod peer in esecuzione.
oc get nodes -o json | jq '.items[] | {name: .metadata.name, allocatable: .status.allocatable["kata.peerpods.io/vm"], capacity: .status.capacity["kata.peerpods.io/vm"]}' -
Aumentare il valore
PEERPODS_LIMIT_PER_NODEnel campopeer-pods-cmConfigMap. Per ulteriori informazioni, vedere Creazione di contenitori riservati.oc -n openshift-sandboxed-containers-operator patch cm peer-pods-cm \ --type merge \ -p '{"data":{"PEERPODS_LIMIT_PER_NODE":"24"}}' -
Riavviare il daemonset di Cloud API Adapter.
oc -n openshift-sandboxed-containers-operator rollout restart daemonset/osc-caa-ds -
Verificare l'applicazione del nuovo limite.
oc get nodes -o json | jq -r '[.items[] | select (.status.allocatable["kata.peerpods.io/vm"] != null)| .status.allocatable["kata.peerpods.io/vm"] | tonumber] | add'
Per ulteriori informazioni sui limiti dei peer pod e sulla pianificazione della capacità, vedere Quanti peer pod posso eseguire per nodo worker?
Errore di autenticazione IAM dopo l'aggiornamento a OSC Operator 1.12.1
Se nei log del Cloud API Adapter (CAA) viene visualizzato un errore simile al seguente dopo l'aggiornamento alla versione dell' OpenShift-Sandboxed Containers Operator 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 versione 1.12.1 ha introdotto un nuovo requisito che prevede il recupero automatico del gruppo di sicurezza del cluster tramite l'API del servizio cluster IKS all'indirizzo IBM Cloud. Quando si utilizza " IBMCLOUD_IAM_PROFILE_ID " per l'autenticazione (identità della risorsa di calcolo), il profilo IAM potrebbe non disporre delle autorizzazioni necessarie per interrogare l'API del servizio del cluster.
Scegli una delle seguenti opzioni.
- Concedi autorizzazioni IAM aggiuntive (consigliato)
-
Aggiornare il profilo IAM per includere le autorizzazioni relative all'API del servizio cluster IKS, in particolare la possibilità di richiamare
GetClusterTypeSecurityGroups(). Contatta l'amministratore di IBM Cloud per aggiungere le autorizzazioni necessarie. - Impostare esplicitamente l'ID del gruppo di sicurezza
-
Configurare la variabile d'ambiente
IBMCLOUD_VPC_SG_IDnel filepeer-pods-cm( ConfigMap ) per bypassare la ricerca automatica del gruppo di sicurezza del cluster. Quindi riavvia il daemonset dell'adattatore API Cloud.- Sostituisci " ConfigMap " con l'ID del tuo gruppo di sicurezza.
oc -n openshift-sandboxed-containers-operator patch cm peer-pods-cm \ --type merge \ -p '{"data":{"IBMCLOUD_VPC_SG_ID":"<your-security-group-id>"}}' ``` 2. Riavviare il daemonset di Cloud API Adapter. ```sh {: pre} oc -n openshift-sandboxed-containers-operator rollout restart daemonset/osc-caa-ds ``` - Passa all'autenticazione tramite chiave API
-
Passare dall'autenticazione
IBMCLOUD_IAM_PROFILE_IDa quellaIBMCLOUD_API_KEY. L'autenticazione tramite chiave API utilizza un ID servizio con politiche IAM esplicite, il cui ambito può essere definito in modo da includere le autorizzazioni di servizio del cluster richieste. Aggiorna il segreto "peer-pods-secret" inserendo la tua chiave API al posto dell'ID del profilo IAM.
Per ulteriori informazioni sulla modifica sottostante, consultare il commit del progetto upstream cloud-api-adaptor all’indirizzo dde66055.
Errore CPU insufficiente
Se viene visualizzato un errore come il seguente durante la pianificazione dei pod peer:
Warning FailedScheduling 0/3 nodes are available: 3 Insufficient cpu. preemption: 0/3 nodes are available: 3 No preemption victims found for incoming pod.
Questo errore indica che i nodi worker non dispongono di risorse CPU sufficienti. Ogni pod peer consuma circa 250m CPU sul nodo worker per il costrutto del pod Kubernetes, anche se il carico di lavoro effettivo viene eseguito in un VSI separato.
Per risolvere questo problema:
-
Controllare l'allocazione della CPU sui nodi worker.
for n in $(oc get nodes -o name); do echo "=== $n ===" oc describe "$n" | sed -n '/Allocated resources:/,/Events:/p' done -
Scegli una delle seguenti opzioni:
- Aggiungere altri nodi worker al cluster
- Utilizzare nodi worker con più vCPUs
- Ridurre il valore di
PEERPODS_LIMIT_PER_NODEper adattarlo alla capacità del nodo worker - Rimuovere altri carichi di lavoro dai nodi worker per liberare risorse di CPU