Dell NativeEdge: Jak rozwiązać problem z limitami szybkości ściągania podczas próby wdrożenia Calico dla wdrożenia NativeEdge
Summary: W tym artykule opisano sposób uwierzytelniania za pomocą usługi Docker Hub w celu uniknięcia problemów z limitem szybkości pobierania.
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
W przypadku programu NativeEdge Orchestrator 2.1.0.0 zalecany jest Calico jako interfejs sieciowy kontenera (CNI)
Instrukcje dotyczące modyfikacji instalacji Calico znajdują się w Podręczniku wdrażania programu NativeEdge Orchestrator. Jednak podczas procesu instalacji Calico pobiera się go z Docker Hub. Docker Hub implementuje limit szybkości pobierania, który można napotkać podczas instalacji Calico. (Więcej informacji na temat limitu szybkości można znaleźć na docker.com).
Gdy użytkownik wyświetli listę zasobników po zainstalowaniu, użytkownik może zobaczyć, że zasobnik calico znajduje się w pliku Init:ImagePullBackOff, co oznacza, że występują problemy z pobieraniem kontenera.
Można to zobaczyć dalej, gdy opiszemy zasobnik perkalu
Jak widać z powyższego, pobieranie zasobnika kończy się niepowodzeniem z powodu:
"Too Many Requests - Server message: toomanyrequests: Osiągnąłeś limit szybkości ściągania. Limit można zwiększyć, uwierzytelniając i uaktualniając: https://www.docker.com/increase-rate-limit"
Instrukcje dotyczące modyfikacji instalacji Calico znajdują się w Podręczniku wdrażania programu NativeEdge Orchestrator. Jednak podczas procesu instalacji Calico pobiera się go z Docker Hub. Docker Hub implementuje limit szybkości pobierania, który można napotkać podczas instalacji Calico. (Więcej informacji na temat limitu szybkości można znaleźć na docker.com).
Gdy użytkownik wyświetli listę zasobników po zainstalowaniu, użytkownik może zobaczyć, że zasobnik calico znajduje się w pliku Init:ImagePullBackOff, co oznacza, że występują problemy z pobieraniem kontenera.
#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
Można to zobaczyć dalej, gdy opiszemy zasobnik perkalu
#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
Jak widać z powyższego, pobieranie zasobnika kończy się niepowodzeniem z powodu:
"Too Many Requests - Server message: toomanyrequests: Osiągnąłeś limit szybkości ściągania. Limit można zwiększyć, uwierzytelniając i uaktualniając: https://www.docker.com/increase-rate-limit"
Cause
Ten problem występuje z powodu limitów szybkości ściągania ustawionych przez dockerhub — szczegółowe informacje można znaleźć w https://www.docker.com/increase-rate-limit .
Resolution
Jeśli użytkownik korzysta z uwierzytelnionego konta centrum platformy Docker, oznacza to, że użytkownik może mieć wyższy indywidualny limit szybkości ściągania.
- Załóż konto na docker.io
- Utwórz wpis tajny w kube-system przestrzeni nazw. W tym przykładzie tworzony jest wpis tajny o nazwie regcred przy użyciu poświadczeń użytych do zarejestrowania konta w 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"
- Użytkownik musi edytować plik calico.yaml, aby użyć właśnie utworzonego wpisu tajnego (regcred).
- Wewnątrz template.spec użytkownik musi zawrzeć następujące informacje:
imagePullSecrets: - name: regcred- Dla porównania, oto prawdziwy przykład
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 - Ważne: Tylko szablon węzła calico-node wymaga dodania do niego funkcji imagePullSecrets.
- Dla porównania, oto prawdziwy przykład
- Zastosuj plik calico.yaml po zmianach
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
- Użytkownik powinien zobaczyć, że klaster kubernetes został pomyślnie uruchomiony.
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.