Dell NativeEdge: Como resolver limites de taxa de extração ao tentar implementar o Calico para implementação do NativeEdge
摘要: Este artigo descreve como autenticar com o Docker Hub para evitar problemas de limite de taxa de download.
本文适用于
本文不适用于
本文并非针对某种特定的产品。
本文并非包含所有产品版本。
症状
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"
原因
Esse problema ocorre devido aos limites de taxa de pull definidos pelo dockerhub — consulte https://www.docker.com/increase-rate-limit para obter detalhes.
解决方案
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
受影响的产品
NativeEdge Solutions, NativeEdge文章属性
文章编号: 000225940
文章类型: Solution
上次修改时间: 01 10月 2024
版本: 4
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。