首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >服务器错误(BadRequest):容器“espace client”中的“espace client”正在等待启动:尝试并未能提取映像。

服务器错误(BadRequest):容器“espace client”中的“espace client”正在等待启动:尝试并未能提取映像。
EN

Stack Overflow用户
提问于 2019-09-23 16:13:35
回答 1查看 6.4K关注 0票数 1

一个月前,我在Kubernetes prod集群上部署了我的第一个应用程序。

我可以从gitlab注册中心部署我的2项服务(前/后)。

现在,我将一个新的坞映像推送到gitlab注册中心,并希望将其重新部署到prod中:

下面是我的部署文件:

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    reloader.stakater.com/auto: "true"
  labels:
    app: espace-client-client
  name: espace-client-client
  namespace: espace-client
spec:
  replicas: 1
  strategy: {}
  template:
    metadata:
      labels:
        app: espace-client-client
    spec:
      containers:
      - envFrom:
        - secretRef:
           name: espace-client-client-env
        image: registry.gitlab.com/xxx/espace_client/client:latest
        name: espace-client-client
        ports:
        - containerPort: 3000
        resources: {}
      restartPolicy: Always
      imagePullSecrets:
        - name: gitlab-registry

我不知道gitlab-registry里面是什么。我不是自己做的,做这件事的人离开了船员:(尽管如此,我有所有的权限,所以,我只需要知道在秘密里放了什么,或者删除它并重新创建它。)

这个秘密似乎是基于我的. .docker/config.json

代码语言:javascript
复制
➜  espace-client git:(k8s) ✗ kubectl describe secrets gitlab-registry                                                                                
Name:         gitlab-registry
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  kubernetes.io/dockerconfigjson

Data
====
.dockerconfigjson:  174 bytes

我试图删除现有的秘密,用

代码语言:javascript
复制
docker logout registry.gitlab.com
kubectl delete secret gitlab-registry

然后再次登录:

代码语言:javascript
复制
docker login registry.gitlab.com -u myGitlabUser
Password: 
Login Succeeded

并以以下方式绘制图像:

代码语言:javascript
复制
docker pull registry.gitlab.com/xxx/espace_client/client:latest

这起作用了。

文件:~/.docker/config.json看起来很奇怪:

代码语言:javascript
复制
{
        "auths": {
                "registry.gitlab.com": {}
        },
        "HttpHeaders": {
                "User-Agent": "Docker-Client/18.09.6 (linux)"
        },
        "credsStore": "secretservice"
}

它似乎没有任何凭据..。

然后我重新创造了我的秘密

代码语言:javascript
复制
kubectl create secret generic gitlab-registry \
    --from-file=.dockerconfigjson=/home/julien/.docker/config.json \
    --type=kubernetes.io/dockerconfigjson

我还试着做:

代码语言:javascript
复制
kubectl create secret docker-registry gitlab-registry --docker-server=registry.gitlab.com --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>

并再次部署:

代码语言:javascript
复制
kubectl rollout restart deployment/espace-client-client -n espace-client

但我仍然有同样的错误:

代码语言:javascript
复制
Error from server (BadRequest): container "espace-client-client" in pod "espace-client-client-6c8b88f795-wcrlh" is waiting to start: trying and failing to pull image
EN

回答 1

Stack Overflow用户

发布于 2019-09-23 16:21:28

您必须更新gitlab-registry秘密,因为此项用于让Kubelet使用凭据来提取受保护的图像。

请用kubectl -n yournamespace delete secret gitlab-registry删除旧的秘密并重新创建它,输入凭据:

代码语言:javascript
复制
kubectl -n yournamespace create secret docker-registry my-secret --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD[ --docker-email=DOCKER_EMAIL]

其中:- DOCKER_REGISTRY_SERVER是GitLab Docker注册表实例- DOCKER_USER是要提取图像的机器人帐户的用户名- DOCKER_PASSWORD是附加到机器人帐户的密码

您可以忽略docker-email,因为它不是强制性的(注意方括号)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58066358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档