Dell NativeEdge: NativeEdge導入用のCalicoを導入しようとする際のプル レート制限を解決する方法
摘要: この記事では、ダウンロードレート制限の問題を回避するためにDocker Hubで認証を行う方法について説明します。
本文适用于
本文不适用于
本文并非针对某种特定的产品。
本文并非包含所有产品版本。
症状
NativeEdge Orchestrator 2.1.0.0では、コンテナ ネットワーク インターフェイス(CNI)としてCalico が推奨されます
Calicoをインストールするための変更手順については、『NativeEdge Orchestrator導入ガイド』を参照してください。ただし、Calico のインストール プロセス中に、Docker Hub からダウンロードされます。Docker Hub は、Calico のインストール中に発生する可能性のあるダウンロードレート制限を実装しています。(レート制限の詳細については、 docker.com を参照してください
インストール後にユーザーがポッドを一覧表示すると、calico ポッドが Init:ImagePullBackOff にあり、コンテナーのダウンロードに問題があることがわかります。
これは、calico-node ポッドを説明するときにさらに理解できます
上記からわかるように、ポッドは次の理由でダウンロードに失敗します:
リクエストが多すぎます - サーバーメッセージ:toomanyrequests: プル レート制限に達しました。次のように認証してアップグレードすることで、制限を増やすことができます https://www.docker.com/increase-rate-limit」
Calicoをインストールするための変更手順については、『NativeEdge Orchestrator導入ガイド』を参照してください。ただし、Calico のインストール プロセス中に、Docker Hub からダウンロードされます。Docker Hub は、Calico のインストール中に発生する可能性のあるダウンロードレート制限を実装しています。(レート制限の詳細については、 docker.com を参照してください
インストール後にユーザーがポッドを一覧表示すると、calico ポッドが 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
これは、calico-node ポッドを説明するときにさらに理解できます
#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」
原因
この問題は、dockerhubによって設定されたプル レート制限が原因で発生します。詳細については、https://www.docker.com/increase-rate-limit を参照してください。
解决方案
ユーザーが認証済みのDockerハブ アカウントを使用している場合、そのユーザーの個々のプル レート制限を高く設定できることを意味します。
- docker.io でアカウントを作成する
- kube-system 名前空間にシークレットを作成します。この例では、docker.io でアカウントを登録するために使用した認証情報を使用して、regcred というシークレットを作成します
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"
- ユーザーは、作成したばかりのシークレット (regcred) を使用するために calico.yaml を編集する必要があります。
- 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
受影响的产品
NativeEdge Solutions, NativeEdge文章属性
文章编号: 000225940
文章类型: Solution
上次修改时间: 01 10月 2024
版本: 4
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。