Dell NativeEdge: Cómo resolver los límites de tasa de extracción cuando se intenta implementar Calico para la implementación de NativeEdge
摘要: En este artículo, se describe cómo autenticarse con Docker Hub para evitar problemas de límite de velocidad de descarga.
本文适用于
本文不适用于
本文并非针对某种特定的产品。
本文并非包含所有产品版本。
症状
Para NativeEdge Orchestrator 2.1.0.0, se recomienda Calico como una interfaz de red de contenedor (CNI).
Las instrucciones sobre las modificaciones para la instalación de Calico se encuentran en la Guía de implementación de NativeEdge Orchestrator. Sin embargo, durante el proceso de instalación de Calico, se descarga desde Docker Hub. Docker Hub implementa un límite de velocidad de descarga, que se puede encontrar durante la instalación de Calico. (Puede encontrar más detalles sobre el límite de velocidad en docker.com).
Cuando el usuario enumera las cápsulas después de la instalación, puede ver que la cápsula calicó está en un Init:ImagePullBackOff, lo que indica que hay problemas para descargar el contenedor.
Esto se puede ver más adelante cuando describimos la vaina de nodos calicó
Como el usuario puede ver en lo anterior, el pod no se puede descargar debido a lo siguiente:
"Too Many Requests - Server message: toomanyrequests: Alcanzó su límite de tasa de extracción. Puede aumentar el límite mediante la autenticación y la actualización: https://www.docker.com/increase-rate-limit"
Las instrucciones sobre las modificaciones para la instalación de Calico se encuentran en la Guía de implementación de NativeEdge Orchestrator. Sin embargo, durante el proceso de instalación de Calico, se descarga desde Docker Hub. Docker Hub implementa un límite de velocidad de descarga, que se puede encontrar durante la instalación de Calico. (Puede encontrar más detalles sobre el límite de velocidad en docker.com).
Cuando el usuario enumera las cápsulas después de la instalación, puede ver que la cápsula calicó está en un Init:ImagePullBackOff, lo que indica que hay problemas para descargar el contenedor.
#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
Esto se puede ver más adelante cuando describimos la vaina de nodos calicó
#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 el usuario puede ver en lo anterior, el pod no se puede descargar debido a lo siguiente:
"Too Many Requests - Server message: toomanyrequests: Alcanzó su límite de tasa de extracción. Puede aumentar el límite mediante la autenticación y la actualización: https://www.docker.com/increase-rate-limit"
原因
Este problema se producía debido a los límites de velocidad de extracción establecidos por dockerhub. Consulte https://www.docker.com/increase-rate-limit para obtener detalles.
解决方案
Si el usuario utiliza una cuenta de concentrador Docker autenticada, significa que el usuario puede tener un límite de velocidad de extracción individual más alto.
- Crear una cuenta en docker.io
- Cree una seña secreta en el espacio de nombres kube-system. En este ejemplo, se crea una seña secreta denominada regcred con las credenciales utilizadas para registrar una cuenta en 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"
- El usuario debe editar el archivo calico.yaml para usar el secreto (regcred) que acaba de crear.
- Dentro de template.spec, el usuario debe incluir lo siguiente:
imagePullSecrets: - name: regcred- Como referencia, aquí hay un ejemplo 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: Solo la plantilla calico-node requiere que se le agregue la característica imagePullSecrets.
- Como referencia, aquí hay un ejemplo real
- Aplique calico.yaml después de los cambios
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
- El usuario debe ver que el clúster de Kubernetes está funcionando correctamente.
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
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。