Dell NativeEdge: Como resolver limites de taxa de extração ao tentar implementar o Calico para implementação do NativeEdge
Summary: Este artigo descreve como autenticar com o Docker Hub para evitar problemas de limite de taxa de 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
Para o NativeEdge Orchestrator 2.1.0.0, o Calico é recomendado como uma interface de rede de contêiner (CNI).
As instruções de modificações para instalar o Calico estão contidas no Guia de implementação do NativeEdge Orchestrator. No entanto, durante o processo de instalação do Calico, ele é baixado do Docker Hub. O Docker Hub implementa um limite de taxa de download, que pode ser encontrado durante a instalação do Calico. (Mais detalhes sobre o limite da taxa podem ser encontrados em docker.com.)
Quando o usuário lista os pods após a instalação, o usuário pode ver que o pod calico está em um Init:ImagePullBackOff, o que indica que há problemas ao fazer download do contêiner.
Isso pode ser visto ainda mais quando descrevemos o pod do nó de calico
Como o usuário pode ver acima, o pod não consegue fazer download por:
"Too Many Requests - Server message: toomanyrequests: Você atingiu seu limite de taxa de extração. Você pode aumentar o limite autenticando e atualizando: https://www.docker.com/increase-rate-limit"
As instruções de modificações para instalar o Calico estão contidas no Guia de implementação do NativeEdge Orchestrator. No entanto, durante o processo de instalação do Calico, ele é baixado do Docker Hub. O Docker Hub implementa um limite de taxa de download, que pode ser encontrado durante a instalação do Calico. (Mais detalhes sobre o limite da taxa podem ser encontrados em docker.com.)
Quando o usuário lista os pods após a instalação, o usuário pode ver que o pod calico está em um Init:ImagePullBackOff, o que indica que há problemas ao fazer download do contêiner.
#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
Isso pode ser visto ainda mais quando descrevemos o pod do nó de calico
#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
Como o usuário pode ver acima, o pod não consegue fazer download por:
"Too Many Requests - Server message: toomanyrequests: Você atingiu seu limite de taxa de extração. Você pode aumentar o limite autenticando e atualizando: https://www.docker.com/increase-rate-limit"
Cause
Esse problema ocorre devido aos limites de taxa de pull definidos pelo dockerhub — consulte https://www.docker.com/increase-rate-limit para obter detalhes.
Resolution
Se o usuário usar uma conta autenticada do hub do docker, isso significa que o usuário pode ter um limite de taxa de extração individual mais alto.
- Criar uma conta no docker.io
- Crie um segredo no namespace kube-system. Este exemplo cria um segredo chamado regcred usando as credenciais usadas para registrar uma conta em 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"
- O usuário deve editar o calico.yaml para usar o segredo (regcred) acabou de ser criado.
- Dentro template.spec o usuário deve incluir o seguinte:
imagePullSecrets: - name: regcred- Para referência, aqui está um exemplo real
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: Somente o modelo calico-node requer que o recurso imagePullSecrets seja adicionado a ele.
- Para referência, aqui está um exemplo real
- Aplique o calico.yaml após as alterações
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
- O usuário deve ver o cluster do Kubernetes funcionando com sucesso.
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.