Wie behebe ich Probleme mit vertraulichen Containern?
Überprüfen Sie diese möglichen Probleme.
Die Probleme könnten durch eine Fehlkonfiguration während der Einrichtung verursacht werden.
Um mit der Fehlersuche zu beginnen, führen Sie die folgenden Befehle aus, um so viele Daten wie möglich über Ihre vertraulichen Container zu sammeln.
-
Sammeln Sie Informationen über den Betreiber.
oc get csv -n openshift-sandboxed-containers-operatoroc describe csv -n openshift-sandboxed-containers-operatoroc get all -n openshift-sandboxed-containers-operator -
Abrufen von Protokollen und Ereignissen von allen Pods, die mit dem DaemonSets in Verbindung stehen.
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 -
Sammle Informationen über die Pods.
a. Sammeln Sie Informationen über den Controller-Manager.
oc describe pod/controller-manager-<random string> -n openshift-sandboxed-containers-operatoroc logs pod/controller-manager-<random string> -n openshift-sandboxed-containers-operatorb. Protokollierungen für eine zufällige Zeichenfolge sammeln.
oc logs pod/<random string>oc describe pod/<random string>c. Sammeln Sie Informationen über die
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> -
Informieren Sie sich über die „ ConfigMaps “.
a. Sammeln Sie Informationen über die Feature Gates.
oc get configmap/osc-feature-gates -n openshift-sandboxed-containers-operator -o yamlb. Sammeln Sie Informationen über die Peer Pods.
oc get configmap/peer-pods-cm -n openshift-sandboxed-containers-operator -o yamlc. Sammle Informationen über die Geheimnisse.
oc get secret/auth-json-secret -n openshift-sandboxed-containers-operatoroc get secret/peer-pods-secret -n openshift-sandboxed-containers-operatord. Informieren Sie sich über die „ KataConfig “.
oc get kataconfigs.kataconfiguration.openshift.io/kata-runtime-settings -n openshift-sandboxed-containers-operator -o yamle. Sammeln Sie Informationen über die benutzerdefinierten Ressourcendefinitionen.
oc get crd/peerpods.confidentialcontainers.orgoc get crd/kataconfigs.kataconfiguration.openshift.io -
Prüfen Sie die Kapazität und die Grenzen der Peer Pods.
a. Prüfen Sie das aktuelle Peer-Pods-Limit für alle Arbeitsknoten.
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. Überprüfen Sie die zugewiesenen Ressourcen auf jedem Arbeitsknoten.
for n in $(oc get nodes -o name); do echo "=== $n ===" oc describe "$n" | sed -n '/Allocated resources:/,/Events:/p' donec. Zählt die Anzahl der derzeit laufenden Peer-Pods.
oc get pods -A -o json | jq '.items[] | select(.spec.runtimeClassName == "kata-remote") | "\(.metadata.namespace)/\(.metadata.name)"' | wc -l
Häufige Probleme und Lösungen
Unzureichend kata.peerpods.io/vm Fehler
Wenn Sie bei der Planung von Peer-Pods eine Fehlermeldung wie die folgende erhalten:
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.
Dieser Fehler zeigt an, dass Sie das Limit von PEERPODS_LIMIT_PER_NODE auf Ihren Worker Nodes erreicht haben. Die Standardgrenze liegt bei 10 Peer-Pods pro Arbeitsknoten.
Gehen Sie wie folgt vor, um das Problem zu lösen:
-
Überprüfen Sie das aktuelle Limit und die Anzahl der laufenden Peer-Pods.
oc get nodes -o json | jq '.items[] | {name: .metadata.name, allocatable: .status.allocatable["kata.peerpods.io/vm"], capacity: .status.capacity["kata.peerpods.io/vm"]}' -
Erhöhen Sie den Wert
PEERPODS_LIMIT_PER_NODEin derpeer-pods-cmConfigMap. Weitere Informationen finden Sie unter Erstellen vertraulicher Container.oc -n openshift-sandboxed-containers-operator patch cm peer-pods-cm \ --type merge \ -p '{"data":{"PEERPODS_LIMIT_PER_NODE":"24"}}' -
Starten Sie den Cloud-API-Adapter-Dämonensatz neu.
oc -n openshift-sandboxed-containers-operator rollout restart daemonset/osc-caa-ds -
Überprüfen Sie, ob der neue Grenzwert angewendet wird.
oc get nodes -o json | jq -r '[.items[] | select (.status.allocatable["kata.peerpods.io/vm"] != null)| .status.allocatable["kata.peerpods.io/vm"] | tonumber] | add'
Weitere Informationen über Peer-Pods-Grenzen und Kapazitätsplanung finden Sie unter Wie viele Peer-Pods kann ich pro Arbeitsknoten ausführen?
IAM-Authentifizierungsfehler nach dem Upgrade auf OSC Operator 1.12.1
Wenn Sie nach dem Upgrade auf die Version des „ OpenShift “ Sandboxed Containers Operator in den Protokollen des Cloud API Adapters (CAA) einen Fehler ähnlich dem folgenden sehen 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..."
}
}
Mit der Version „ 1.12.1 “ wurde eine neue Anforderung eingeführt, wonach die Sicherheitsgruppe des Clusters automatisch über die IKS-Clusterdienst-API unter IBM Cloud abgerufen werden muss. Wenn Sie „ IBMCLOUD_IAM_PROFILE_ID “ zur Authentifizierung verwenden (Identität der Rechenressource), verfügt das IAM-Profil möglicherweise nicht über die erforderlichen Berechtigungen, um die Cluster-Service-API abzufragen.
Wählen Sie eine der folgenden Optionen aus:
- Zusätzliche IAM-Berechtigungen erteilen (empfohlen)
-
Aktualisieren Sie das IAM-Profil, um Berechtigungen für die IKS-Cluster-Service-API hinzuzufügen, insbesondere die Berechtigung zum Aufruf von
GetClusterTypeSecurityGroups(). Wenden Sie sich an Ihren „ IBM Cloud “-Administrator, um die erforderlichen Berechtigungen hinzuzufügen. - Die ID der Sicherheitsgruppe explizit festlegen
-
Konfigurieren Sie die Umgebungsvariable „
IBMCLOUD_VPC_SG_ID“ in der Datei „peer-pods-cm“ ( ConfigMap ), um die automatische Suche nach der Cluster-Sicherheitsgruppe zu umgehen. Starten Sie anschließend das Daemonset des Cloud-API-Adapters neu.- Ersetzen Sie „ ConfigMap “ durch die ID Ihrer Sicherheitsgruppe.
oc -n openshift-sandboxed-containers-operator patch cm peer-pods-cm \ --type merge \ -p '{"data":{"IBMCLOUD_VPC_SG_ID":"<your-security-group-id>"}}' ``` 2. Starten Sie den Cloud-API-Adapter-Dämonensatz neu. ```sh {: pre} oc -n openshift-sandboxed-containers-operator rollout restart daemonset/osc-caa-ds ``` - Zur API-Schlüssel-Authentifizierung wechseln
-
Wechseln Sie von der Authentifizierung über „
IBMCLOUD_IAM_PROFILE_ID“ zur Authentifizierung über „IBMCLOUD_API_KEY“. Bei der API-Schlüssel-Authentifizierung wird eine Dienst-ID mit expliziten IAM-Richtlinien verwendet, deren Geltungsbereich Sie so festlegen können, dass er die erforderlichen Cluster-Dienstberechtigungen umfasst. Ersetzen Sie den geheimen Schlüssel „peer-pods-secret“ durch Ihren API-Schlüssel anstelle der IAM-Profil-ID.
Weitere Informationen zu der zugrunde liegenden Änderung finden Sie unter „ Commit zum „upstream cloud-api-adaptor“ dde66055 “.
Fehler bei unzureichender CPU
Wenn Sie bei der Planung von Peer-Pods eine Fehlermeldung wie die folgende erhalten:
Warning FailedScheduling 0/3 nodes are available: 3 Insufficient cpu. preemption: 0/3 nodes are available: 3 No preemption victims found for incoming pod.
Dieser Fehler zeigt an, dass Ihre Arbeitsknoten nicht genügend CPU-Ressourcen zur Verfügung haben. Jeder Peer-Pod verbraucht etwa 250m CPU auf dem Arbeitsknoten für das Kubernetes Pod-Konstrukt, obwohl die eigentliche Arbeitslast in einem separaten VSI läuft.
Gehen Sie wie folgt vor, um das Problem zu lösen:
-
Überprüfen Sie die CPU-Zuweisung auf Ihren Worker-Knoten.
for n in $(oc get nodes -o name); do echo "=== $n ===" oc describe "$n" | sed -n '/Allocated resources:/,/Events:/p' done -
Wählen Sie eine der folgenden Optionen aus:
- Fügen Sie Ihrem Cluster weitere Worker-Knoten hinzu
- Verwenden Sie Arbeitsknoten mit mehr vCPUs
- Verringern Sie den Wert
PEERPODS_LIMIT_PER_NODEentsprechend der Kapazität Ihrer Arbeitsknoten - Entfernen Sie andere Arbeitslasten von den Arbeitsknoten, um CPU-Ressourcen freizugeben