Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Symptome
Der Akshci-Telemetrie-Pod in einem AKS Arc-Cluster kann im Laufe der Zeit viele CPU- und Arbeitsspeicherressourcen verbrauchen. Wenn Metriken aktiviert sind, können Sie die CPU- und Arbeitsspeicherauslastung mithilfe des folgenden kubectl Befehls überprüfen:
kubectl -n kube-system top pod -l app=akshci-telemetry
Möglicherweise sehen Sie eine Ausgabe, die der folgenden ähnelt:
NAME CPU(cores) MEMORY(bytes)
akshci-telemetry-5df56fd5-rjqk4 996m 152Mi
Milderung
Dieses Problem wurde in AKS unter Azure Local, Version 2507, behoben. Aktualisieren Sie Ihre lokale Azure-Bereitstellung auf den Build 2507.
Problemumgehung für lokale Azure-Versionen 2506 und älter
Um dieses Problem zu beheben, legen Sie standardressourcengrenzwerte für die Pods im kube-system Namespace fest.
Wichtige Hinweise
- Überprüfen Sie, ob Im Kube-System-Namespace Pods vorhanden sind, die möglicherweise mehr Arbeitsspeicher als die Standardgrenzwerteeinstellung erfordern. In diesem Fällen können Anpassungen erforderlich sein.
- Das LimitRange wird auf den Namespace angewendet; in diesem Fall der
kube-systemNamespace. Die Standardressourcenbeschränkungen gelten auch für neue Pods, die keine eigenen Grenzwerte angeben. - Vorhandene Pods, einschließlich Pods, für die bereits Ressourcenlimits gelten, sind nicht betroffen.
- Neue Pods, die keine eigenen Ressourcenlimits angeben, werden durch die im nächsten Abschnitt festgelegten Grenzwerte eingeschränkt.
- Nachdem Sie die Ressourcenbeschränkungen festgelegt und den Telemetrie-Pod gelöscht haben, hat der neue Pod möglicherweise den Speichergrenzwert erreicht und OOM -Fehler (Out-Of-Memory) generiert. Dies ist eine temporäre Entschärfung.
Um mit dem Festlegen der Ressourcengrenzwerte fortzufahren, können Sie das folgende Skript ausführen. Während das Skript az aksarc get-credentials verwendet, können Sie auch az connectedk8s proxy verwenden, um den Proxy-Kubeconfig abzurufen und auf den Kubernetes-Cluster zuzugreifen.
Definieren von LimitRange YAML zum Festlegen von Standard-CPU- und Arbeitsspeichergrenzwerten
# Set the $cluster_name and $resource_group of the aksarc cluster
$cluster_name = ""
$resource_group = ""
# Connect to the aksarc cluster
az aksarc get-credentials -n $cluster_name -g $resource_group --admin -f "./kubeconfig-$cluster_name"
$limitRangeYaml = @'
apiVersion: v1
kind: LimitRange
metadata:
name: cpu-mem-resource-constraint
namespace: kube-system
spec:
limits:
- default: # this section defines default limits for containers that haven't specified any limits
cpu: 250m
memory: 250Mi
defaultRequest: # this section defines default requests for containers that haven't specified any requests
cpu: 10m
memory: 20Mi
type: Container
'@
$limitRangeYaml | kubectl apply --kubeconfig "./kubeconfig-$cluster_name" -f -
kubectl get pods -l app=akshci-telemetry -n kube-system --kubeconfig "./kubeconfig-$cluster_name"
kubectl delete pods -l app=akshci-telemetry -n kube-system --kubeconfig "./kubeconfig-$cluster_name"
sleep 5
kubectl get pods -l app=akshci-telemetry -n kube-system --kubeconfig "./kubeconfig-$cluster_name"
Überprüfen, ob die Ressourcengrenzwerte ordnungsgemäß angewendet wurden
Überprüfen Sie die Ressourcenbeschränkungen in der YAML-Konfiguration des Pods:
kubectl get pods -l app=akshci-telemetry -n kube-system --kubeconfig "./kubeconfig-$cluster_name" -o yamlÜberprüfen Sie in der Ausgabe, ob der
resourcesAbschnitt die Grenzwerte enthält:resources: limits: cpu: 250m memory: 250Mi requests: cpu: 10m memory: 20Mi