针对不安全的注册表产品的Openshift Origin run-app卡住了pod,其中包含“拉图片时出错”

时间:2016-04-15 19:19:35

标签: docker rhel openshift-origin

我在Docker容器中使用Openshift Origin并使用以下方法从Docker注册表(同一RHEL主机VM上的容器)中提取图像:

oc new-app --insecure-registry=true --docker-image=mtl-vm375:5000/jenkins:1.0

那个命令似乎在当时运作良好。但是,pod保留为“ContainerCreating”,kubectl的结果描述了pods:

OPENSHIFT_DEPLOYMENT_NAME:        jenkins-1
OPENSHIFT_DEPLOYMENT_NAMESPACE:   default
 Conditions:
  Type          Status
  Ready         False
Volumes:
  deployer-token-3bls9:
Type:       Secret (a volume populated by a Secret)
  SecretName: deployer-token-3bls9
Events:
  FirstSeen     LastSeen        Count   From                    SubobjectPath   Type            Reason          Message
  ---------     --------        -----   ----                    -------------   --------        ------          -------
  2h            4m              33      {kubelet mtl-vm375}                     Warning         FailedSync      Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "Error while pulling image: Get https://index.docker.io/v1/repositories/openshift/origin-pod/images: dial tcp 10.230.22.20:443: connection refused"

2h    6s      652     {kubelet mtl-vm375}             Warning FailedSync      Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"openshift/origin-pod:v1.1.5\""

是否有错误显示它正在尝试使用https,我猜测(但不确定)是错误,因为我还没有正确设置https:

对于Stackoverflow的其他建议,我已将这些环境变量添加到Origin图像:     KUBE_ENABLE_INSECURE_REGISTRY =真     EXTRA_DOCKER_OPTS = - 不安全的注册表

我也有类似的结果:     KUBE_ENABLE_INSECURE_REGISTRY =真\     EXTRA_DOCKER_OPTS =“ - insecure-registry 10.230.22.20”

版本信息:

[root@mtl-vm375 origin]# oc version 
oc v1.1.5-52-gd58f979 kubernetes v1.2.0-36-g4a3f9c5

[root@mtl-vm375 ~]# docker version
Client:
 Version:      1.8.2-el7.centos
 API version:  1.20
 Package Version: docker-1.8.2-10.el7.centos.x86_64
 Go version:   go1.4.2
 Git commit:   a01dc02/1.8.2
 Built:
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.2-el7.centos
 API version:  1.20
 Package Version:
 Go version:   go1.4.2
Git commit:   a01dc02/1.8.2
 Built:
 OS/Arch:      linux/amd64

提前致谢,

约翰

2 个答案:

答案 0 :(得分:2)

这是我使用另一个Docker注册表中的图像(甚至在我的群集之外)执行的步骤。

我的注册表:

https://ec2-xx-xx-xx-xx.eu-central-1.compute.amazonaws.com:5000

我将项目(在操作系统中)创建到我想要推送的位置。

$ oc new-project test

我在项目内部并且我将创建一个秘密,以便我的openshift能够访问我的注册表:

$ oc secrets new-dockercfg mysecret --docker-server=https://ec2-xx-xx-xx-xx.eu-central-1.compute.amazonaws.com:5000 --docker-username=testuser --docker-password=testpassword --docker-email=any@mail.com

为serviceaccounts添加秘密

$ oc secrets add serviceaccount/default secrets/mysecret --for=pull    
$ oc secrets add serviceaccount/builder secrets/mysecret

导入图片流

$ oc import-image --insecure ec2-xx-xx-xx-xx.eu-central-1.compute.amazonaws.com:5000/test/name-of-image:1 --confirm

现在您可以创建

oc new-app --insecure-registry <image-stream-name>:tag

更好的方法是将图像推送到OpenShift注册表。创建一个秘密并执行oc import并不是必需的。 您可以公开注册表(安全注册表),以便您可以从群集外部访问注册表以推送图像。

答案 1 :(得分:0)

如果您在通过重新发布(重新导入)更新导入:标记后与Openshift Builder挣扎

  • 您的OpenShift版本似乎没有使用您通过oc import-image发布的最新图像标记..

    1. 打开应用的&#34;构建器 - 配置&#34;,
    2. 转到&#34;图像配置&#34;
    3. 并切换&#34; Build From&#34;来自&#34; Docker Image Repository&#34;的价值到&#34;图像流标记&#34;
    4. 并选择命名空间,图像流和标记。

构建器配置概述:

Builder Configuration of app

  • 将新值设置为&#34; Docker Image Repository&#34;没有帮助。
  • 将复选框设置为&#34;始终拉取构建...&#34;也没有帮助。

改变这个......

Builder Configuration of your app

到此......

Builder Configuration changed of your app