Dell NativeEdge: Anleitung zum Beheben von Pull-Ratenlimits bei der Bereitstellung von Calico für die NativeEdge-Bereitstellung
摘要: In diesem Artikel wird beschrieben, wie Sie sich bei Docker Hub authentifizieren, um Probleme mit der Downloadratenbegrenzung zu vermeiden.
本文适用于
本文不适用于
本文并非针对某种特定的产品。
本文并非包含所有产品版本。
症状
Für NativeEdge Orchestrator 2.1.0.0 wird Calico als Container-Netzwerkschnittstelle (CNI) empfohlen.
Anweisungen für Änderungen an der Installation von Calico sind im Bereitstellungshandbuch für NativeEdge Orchestrator enthalten. Während des Installationsprozesses von Calico wird es jedoch von Docker Hub heruntergeladen. Docker Hub implementiert eine Begrenzung der Downloadrate, die während der Installation von Calico auftreten kann. (Weitere Details zur Ratenbegrenzung finden Sie unter docker.com.)
Wenn der Nutzer die Pods nach der Installation auflistet, kann er sehen, dass sich der Calico-Pod in einem Init:ImagePullBackOff befindet, was darauf hinweist, dass Probleme beim Herunterladen des Containers vorliegen.
Dies wird deutlich, wenn wir den Calico-Node-Pod beschreiben
Wie der Nutzer oben sehen kann, kann der Pod nicht heruntergeladen werden, und zwar aus folgenden Gründen:
"Too Many Requests - Server message: toomanyrequests: Sie haben Ihr Limit für die Abrufrate erreicht. Sie können das Limit erhöhen, indem Sie sich authentifizieren und aktualisieren: https://www.docker.com/increase-rate-limit"
Anweisungen für Änderungen an der Installation von Calico sind im Bereitstellungshandbuch für NativeEdge Orchestrator enthalten. Während des Installationsprozesses von Calico wird es jedoch von Docker Hub heruntergeladen. Docker Hub implementiert eine Begrenzung der Downloadrate, die während der Installation von Calico auftreten kann. (Weitere Details zur Ratenbegrenzung finden Sie unter docker.com.)
Wenn der Nutzer die Pods nach der Installation auflistet, kann er sehen, dass sich der Calico-Pod in einem Init:ImagePullBackOff befindet, was darauf hinweist, dass Probleme beim Herunterladen des Containers vorliegen.
#kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system local-path-provisioner-957fdf8bc-cl2nl 0/1 Pending 0 6m50s kube-system metrics-server-648b5df564-bncjh 0/1 Pending 0 6m50s kube-system coredns-77ccd57875-cng6c 0/1 Pending 0 6m50s kube-system calico-kube-controllers-67c64d8b8f-p868c 0/1 Pending 0 6m39s kube-system calico-node-6q82x 0/1 Init:ImagePullBackOff 0 6m37s
Dies wird deutlich, wenn wir den Calico-Node-Pod beschreiben
#kubectl describe pod calico-node-6q82x -n kube-system Name: calico-node-xscmk Namespace: kube-system .. Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 2m4s default-scheduler Successfully assigned kube-system/calico-node-xscmk to sre08129 Warning Failed 81s (x2 over 2m2s) kubelet Failed to pull image "docker.io/calico/cni:v3.28.0": rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/calico/cni:v3.28.0": failed to copy: httpReadSeeker: failed open: unexpected status code https://registry-1.docker.io/v2/calico/cni/manifests/sha256:7a3a5cf6c79243ba2de9eef8cb20fac7c46ef75b858956b9884b0ce87b9a354d: 429 Too Many Requests - Server message: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit Normal Pulling 41s (x4 over 2m3s) kubelet Pulling image "docker.io/calico/cni:v3.28.0" Warning Failed 40s (x2 over 106s) kubelet Failed to pull image "docker.io/calico/cni:v3.28.0": rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/calico/cni:v3.28.0": failed to copy: httpReadSeeker: failed open: unexpected status code https://registry-1.docker.io/v2/calico/cni/manifests/sha256:cef0c907b8f4cadc63701d371e6f24d325795bcf0be84d6a517e33000ff35f70: 429 Too Many Requests - Server message: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit Warning Failed 40s (x4 over 2m2s) kubelet Error: ErrImagePull Normal BackOff 13s (x6 over 2m1s) kubelet Back-off pulling image "docker.io/calico/cni:v3.28.0" Warning Failed 13s (x6 over 2m1s) kubelet Error: ImagePullBackOff
Wie der Nutzer oben sehen kann, kann der Pod nicht heruntergeladen werden, und zwar aus folgenden Gründen:
"Too Many Requests - Server message: toomanyrequests: Sie haben Ihr Limit für die Abrufrate erreicht. Sie können das Limit erhöhen, indem Sie sich authentifizieren und aktualisieren: https://www.docker.com/increase-rate-limit"
原因
Dieses Problem tritt aufgrund der von Dockerhub festgelegten Pull-Ratenlimits auf – siehe https://www.docker.com/increase-rate-limit für weitere Informationen.
解决方案
Wenn der Benutzer ein authentifiziertes Docker-Hub-Konto verwendet, bedeutet dies, dass der Benutzer ein höheres individuelles Pull-Ratenlimit verwenden kann.
- Erstellen Sie ein Konto auf docker.io
- Erstellen Sie einen geheimen Schlüssel im kube-system-Namespace. In diesem Beispiel wird ein geheimer Schlüssel namens regcred mithilfe der Anmeldeinformationen erstellt, die zum Registrieren eines Kontos bei docker.io
kubectl create secret docker-registry regcred --docker-server=https://index.docker.io/v1/ --docker-username=dockeriousername --docker-password=dockeriopassword --docker-email=emailusertoregsisterondockerio --namespace="kube-system"
- Der Benutzer muss calico.yaml bearbeiten, um den Schlüssel (regcred) zu verwenden, der gerade erstellt wurde.
- In template.spec muss der Nutzer Folgendes angeben:
imagePullSecrets: - name: regcred- Als Referenz hier ein reales Beispiel
spec: selector: matchLabels: k8s-app: calico-node ... template: metadata: labels: k8s-app: calico-node spec: nodeSelector: ... hostNetwork: true tolerations: ... serviceAccountName: calico-node ... initContainers: ... imagePullSecrets: - name: regcred - Wichtig: Nur für die Vorlage calico-node muss die imagePullSecrets-Funktion hinzugefügt werden.
- Als Referenz hier ein reales Beispiel
- Wenden Sie calico.yaml nach den Änderungen an
kubectl apply -f calico.yaml poddisruptionbudget.policy/calico-kube-controllers created serviceaccount/calico-kube-controllers created serviceaccount/calico-node created serviceaccount/calico-cni-plugin created configmap/calico-config created customresourcedefinition.apiextensions.k8s.io/bgpconfigurations.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/bgpfilters.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/bgppeers.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/blockaffinities.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/caliconodestatuses.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/clusterinformations.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/felixconfigurations.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/globalnetworkpolicies.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/globalnetworksets.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/hostendpoints.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/ipamblocks.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/ipamconfigs.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/ipamhandles.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/ippools.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/ipreservations.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/kubecontrollersconfigurations.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/networkpolicies.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/networksets.crd.projectcalico.org created clusterrole.rbac.authorization.k8s.io/calico-kube-controllers created clusterrole.rbac.authorization.k8s.io/calico-node created clusterrole.rbac.authorization.k8s.io/calico-cni-plugin created clusterrolebinding.rbac.authorization.k8s.io/calico-kube-controllers created clusterrolebinding.rbac.authorization.k8s.io/calico-node created clusterrolebinding.rbac.authorization.k8s.io/calico-cni-plugin created daemonset.apps/calico-node created deployment.apps/calico-kube-controllers created
- Der Nutzer sollte sehen, dass der Kubernetes-Cluster erfolgreich ausgeführt wird.
kubectl get po -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system local-path-provisioner-957fdf8bc-x5bn6 1/1 Running 0 22h kube-system coredns-77ccd57875-hf82q 1/1 Running 0 22h kube-system calico-kube-controllers-8498bff86b-tprzt 1/1 Running 0 9m18s kube-system calico-node-pxwqm 1/1 Running 0 9m18s kube-system metrics-server-648b5df564-xdh4h 1/1 Running 0 22h
受影响的产品
NativeEdge Solutions, NativeEdge文章属性
文章编号: 000225940
文章类型: Solution
上次修改时间: 01 10月 2024
版本: 4
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。