Dell NativeEdge: Come risolvere i limiti della velocità di pull quando si tenta di implementare Calico per il deployment di NativeEdge
Summary: Questo articolo descrive come eseguire l'autenticazione con Docker Hub per evitare problemi di limite di velocità di download.
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Symptoms
Per NativeEdge Orchestrator 2.1.0.0, Calico è consigliato come interfaccia di rete container (CNI)
Le istruzioni per le modifiche per l'installazione di Calico sono contenute nella Guida al deployment di NativeEdge Orchestrator. Tuttavia, durante il processo di installazione, Calico viene scaricato da Docker Hub. Docker Hub implementa un limite di velocità di download, che può essere riscontrato durante l'installazione di Calico. (Ulteriori dettagli sul limite di velocità sono disponibili su docker.com.)
Quando l'utente elenca i pod dopo l'installazione, può vedere che il pod calico si trova in un Init:ImagePullBackOff, il che indica che si sono verificati problemi durante il download del container.
Questo può essere visto ulteriormente quando descriviamo il pod calico-node
Come l'utente può vedere da quanto sopra, il pod non riesce a essere scaricato a causa di:
"Too Many Requests - Server message: toomanyrequests: È stato raggiunto il limite della velocità di pull. È possibile aumentare il limite eseguendo l'autenticazione e l'aggiornamento: https://www.docker.com/increase-rate-limit"
Le istruzioni per le modifiche per l'installazione di Calico sono contenute nella Guida al deployment di NativeEdge Orchestrator. Tuttavia, durante il processo di installazione, Calico viene scaricato da Docker Hub. Docker Hub implementa un limite di velocità di download, che può essere riscontrato durante l'installazione di Calico. (Ulteriori dettagli sul limite di velocità sono disponibili su docker.com.)
Quando l'utente elenca i pod dopo l'installazione, può vedere che il pod calico si trova in un Init:ImagePullBackOff, il che indica che si sono verificati problemi durante il download del container.
#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
Questo può essere visto ulteriormente quando descriviamo il pod calico-node
#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
Come l'utente può vedere da quanto sopra, il pod non riesce a essere scaricato a causa di:
"Too Many Requests - Server message: toomanyrequests: È stato raggiunto il limite della velocità di pull. È possibile aumentare il limite eseguendo l'autenticazione e l'aggiornamento: https://www.docker.com/increase-rate-limit"
Cause
Questo problema si verifica a causa dei limiti di velocità pull impostati da dockerhub. Vedere https://www.docker.com/increase-rate-limit per i dettagli.
Resolution
Se l'utente utilizza un account hub Docker autenticato, ciò significa che l'utente può avere un limite di velocità di pull individuale più elevato.
- Crea un account su docker.io
- Creare un segreto nel namespace kube-system. In questo esempio viene creato un segreto denominato regcred utilizzando le credenziali utilizzate per registrare un account in 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"
- L'utente deve modificare il file calico.yaml per utilizzare il segreto (regcred) appena creato.
- All'interno di template.spec l'utente deve includere quanto segue:
imagePullSecrets: - name: regcred- Per riferimento, ecco un esempio reale
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 - Importante: Solo il modello calico-node richiede l'aggiunta della funzione imagePullSecrets.
- Per riferimento, ecco un esempio reale
- Applicare il file calico.yaml dopo le modifiche
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
- L'utente dovrebbe visualizzare il cluster Kubernetes attivo e in esecuzione.
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
Affected Products
NativeEdge Solutions, NativeEdgeArticle Properties
Article Number: 000225940
Article Type: Solution
Last Modified: 01 Oct 2024
Version: 4
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.