Dell NativeEdge: Як вирішити обмеження швидкості витягування при спробі розгорнути Calico для розгортання NativeEdge
Summary: У цій статті описано, як пройти автентифікацію за допомогою Docker Hub, щоб уникнути проблем із обмеженням швидкості завантаження.
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
Для NativeEdge Orchestrator 2.1.0.0 Calico рекомендується використовувати як мережевий інтерфейс контейнера (CNI).
Інструкції щодо модифікацій для встановлення Calico містяться в NativeEdge Orchestrator Deployment Guide. Однак у процесі встановлення Calico він завантажується з Docker Hub. У Docker Hub реалізовано обмеження швидкості завантаження, з яким можна зіткнутися під час встановлення Calico. (Більш детальну інформацію про ліміт тарифу можна знайти на docker.com.)
Коли користувач перераховує поди після встановлення, користувач може побачити, що ситцевий под знаходиться в Init:ImagePullBackOff, що вказує на проблеми із завантаженням контейнера.
Це можна побачити далі, коли ми опишемо стручок ситцевого вузла
Як користувач може бачити з вищесказаного, под не завантажується через:
"Занадто багато запитів - Повідомлення сервера: toomanyrequests: Ви досягли свого ліміту швидкості зтягування. Ви можете збільшити ліміт, пройшовши автентифікацію та оновивши: https://www.docker.com/increase-rate-limit"
Інструкції щодо модифікацій для встановлення Calico містяться в NativeEdge Orchestrator Deployment Guide. Однак у процесі встановлення Calico він завантажується з Docker Hub. У Docker Hub реалізовано обмеження швидкості завантаження, з яким можна зіткнутися під час встановлення Calico. (Більш детальну інформацію про ліміт тарифу можна знайти на docker.com.)
Коли користувач перераховує поди після встановлення, користувач може побачити, що ситцевий под знаходиться в Init:ImagePullBackOff, що вказує на проблеми із завантаженням контейнера.
#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
Це можна побачити далі, коли ми опишемо стручок ситцевого вузла
#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
Як користувач може бачити з вищесказаного, под не завантажується через:
"Занадто багато запитів - Повідомлення сервера: toomanyrequests: Ви досягли свого ліміту швидкості зтягування. Ви можете збільшити ліміт, пройшовши автентифікацію та оновивши: https://www.docker.com/increase-rate-limit"
Cause
Ця проблема виникає через обмеження швидкості витягування, встановлені dockerhub - детальніше дивіться https://www.docker.com/increase-rate-limit .
Resolution
Якщо користувач використовує автентифікований обліковий запис docker hub, це означає, що користувач може мати вищий ліміт індивідуальної частоти витягування.
- Створіть обліковий запис на docker.io
- Створіть секрет у просторі імен kube-system. Цей приклад створює секрет під назвою regcred з використанням облікових даних, які використовуються для реєстрації облікового запису на 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"
- Користувач повинен відредагувати calico.yaml, щоб використовувати секрет (regcred), який був тільки що створений.
- Усередині template.spec користувач повинен включити наступне:
imagePullSecrets: - name: regcred- Для довідки наведемо реальний приклад
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 - Важливий: Лише шаблон calico-node вимагає додавання до нього функції imagePullSecrets.
- Для довідки наведемо реальний приклад
- Застосуйте calico.yaml після змін
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
- Користувач повинен побачити, що кластер kubernetes запущений і успішно працює.
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.