私の会社は、独自のルートCAを使用しており、イメージをプルしようとしています。プライベートレジストリからでもエラーが発生します:
1h 3m 22 {kubelet minikube}警告FailedSyncポッドの同期エラー、スキップ:ErrImagePullを使用した「POD」の「StartContainer」に失敗しました:「gcr.io/google_containers/pause-AMD64:3.0のイメージプルに失敗しました。これは次の理由による可能性があります。このリクエストには認証情報がありません。
詳細:(デーモンからのエラー応答:取得 https://gcr.io/v1/_ping :x509:不明な権限によって署名された証明書) "1h 10s 387 {kubelet minikube}警告FailedSyncポッドの同期エラー、スキップ:ImagePullBackOffで「POD」の「StartContainer」に失敗しました:「Back-offpulling image\"gcr.io/google_containers/pause-AMD64:3.0 \"」
ルートCAをminkubeにインストールする方法、またはこのメッセージを回避するにはどうすればよいですか。つまり、プライベートレジストリのみを使用し、gcr.io
から何もプルしないでください。
私がこれまでに見つけた唯一の解決策は、minikubeに--insecure-registrygcr.ioオプションを追加することです。
対処するには:
x509: certificate signed by unknown authority
ミニクベレポからの以下の提案をお試しください。
証明書をVMにコピーします。場所は次のようになります。
/etc/docker/certs.d/
そのスレッドには、次のワンライナーも含まれています。
cat <certificatefile> \
| minikube ssh "Sudo mkdir -p /etc/docker/certs.d/<domain> && Sudo tee /etc/docker/certs.d/<domain>/ca.crt"
ここでの問題は、更新が必要なLinuxホストのCATrustチェーンです。再起動がオプションでない場合、最も簡単な方法は、証明書をVMにコピーした後にLinuxホストを再起動することです。update-ca-certificates
への方法を探してください。
Dockerデーモンを再起動するだけでは、この問題は解決しない可能性があります
注:Dockerデーモンが安全でないレジストリを使用できるようにすると、証明書が検証されません。これは役立つ場合がありますが、ここで尋ねられる質問は解決されません。
Minikubeから独立してこれを行う簡単な方法は、imagePullSecrets
構成を使用することです。 プライベートレジストリからの画像のプル ガイドに記載されているように、Secret
を作成し、次のように画像と一緒に使用できます。
apiVersion: v1
kind: Pod
metadata:
name: demo-pod
spec:
containers:
- name: private-container
image: <your-private-image>
imagePullSecrets:
- name: the_secret
the_secret
を作成できる場所:
kubectl create secret docker-registry the_secret --docker-server=xxx --docker-username=xxx --docker-password=xxx --docker-email=xxx
またはと:
kubectl create secret generic the_secret --from-file=.docker/config.json
または、kubectl create secret
に関連する他の何かと 詳細についてはドキュメント を参照してください。
編集:公式のminikube
ドキュメントでも、registry-creds
アドオンと一緒にSecrets
を使用していることがわかります。
一般的なドキュメント ここ とアドオンのドキュメント ここ があります。
それは燃え尽きる:
minikube addons enable registry-creds
ただし、技術的には上記と同じです。