Dell NativeEdge: NativeEdge導入用のCalicoを導入しようとする際のプル レート制限を解決する方法
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では、コンテナ ネットワーク インターフェイス(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」
Cause
この問題は、dockerhubによって設定されたプル レート制限が原因で発生します。詳細については、https://www.docker.com/increase-rate-limit を参照してください。
Resolution
ユーザーが認証済みの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
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.