web-dev-qa-db-ja.com

ImagePullBackOffエラーGoogle Kubernetes Engine

多くの人がすでに同様の質問をしていることを知っています。そのうちのいくつかを読みましたが、実際に私がこれまで助けたものは何も見つかりませんでした。

プライベートリポジトリを有効にしたgitlabがあり、Google Kubernetes Engineも使用しています。プライベートリポジトリにいくつかのDockerコンテナーがあり、そのうちの1つをKubernetes Engineにデプロイします。

kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txtでシークレットを作成しました。kubectl create secret docker-registry name --docker-server=registry.xy.z --docker-username=google --docker-password=xyz [email protected]も試しました。次に、Deploymentファイルを作成しました。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: backend-test
labels:
app: 13371337
spec:
replicas: 1
template:
metadata:
labels:
app: 13371337
spec:
  containers:
  - name: backend
    image: registry.xy.z/group/project/backend:latest
    imagePullPolicy: Always
    ports:
    - containerPort: 8080
  imagePullSecrets:
  - name: db-user-pass or name

実行する方法はありますか?

6
eragon-2006

kubectl create secret docker-registry nameの使用は 正しい方法 であり、プライベートDockerレジストリの資格情報を提供します。

Docker-Registryシークレットの名前を指定すると、imagePullSecretsオプションも適切に見えます。

したがって、Kubernetesのパスからは、見栄えの良いものがすべて見つかります。

Deploymentによって作成されるポッドのイベントを確認してください。kubectl get podsでポッドを見つけてkubectl describe pod $name_of_your_podを呼び出すだけで、イメージをプルできない実際の理由がわかります。

また、預託機関が安全でないか、自己署名証明書を持っている場合は、 そのガイド に従って、そこから画像を取得するdockerデーモンを許可してください。

6
Anton Kostenko

シークレットを作成するには、次のコマンドを使用できます:(名前を付けたことに注意してください)

kubectl create secret docker-registry my_registry \
--docker-server=registry.xy.z \
--docker-username=google \
--docker-password=xyz \
[email protected]

またはyamlを使用:

apiVersion: v1
kind: Secret
metadata:
  name: my_registry
type: Opaque
data:
  docker-server: registry.xy.z
  docker-username: google
  docker-password: xyz
  docker-email: [email protected]

そしてあなたの展開は秘密の名前を使用する必要があります:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: backend-test
labels:
app: 13371337
spec:
replicas: 1
template:
metadata:
labels:
app: 13371337
spec:
  containers:
  - name: backend
    image: registry.xy.z/group/project/backend:latest
    imagePullPolicy: Always
    ports:
    - containerPort: 8080
  imagePullSecrets:
  - name: my_registry

注意:名前空間ごとにシークレットを作成する必要があります。

4
Ami Hollander