Openshift原始运行应用程序对不安全的registry产量卡住与“拉图像错误”

我在Docker容器中使用了Openshift Origin,并使用下面的代码从Dockerregistry(同一个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上的其他build议,我已经将这些环境variables添加到Origin图像:KUBE_ENABLE_INSECURE_REGISTRY = true EXTRA_DOCKER_OPTS = – insecure-registry

我也有类似的结果:KUBE_ENABLE_INSECURE_REGISTRY = true \ 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 

提前致谢,

约翰

这是我使用来自另一个Dockerregistry(甚至在我的集群之外)的图像执行的步骤。

我的registry:

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

我创build项目(在操作系统)到我想推的地方。

 $ oc new-project test 

我在项目中,我将创build一个秘密,以便我的openshift能够访问我的registry:

 $ 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 

导入图像stream

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

现在你可以创build一个

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

更好的方法是将您的图像推送到OpenShiftregistry。 比没有必要创build一个秘密,并执行oc import 。 您可以公开registry(安全registry),以便您可以从群集外部访问registry以推送图像。

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

  • 你的OpenShift构build似乎不使用你通过oc导入图像发布的最新的图像标签。

    1. 打开“你的应用程序的生成器configuration”,
    2. 请转至“图像configuration”部分
    3. 并将“Build From”值从“Docker Image Repository”切换到“Image Stream Tag”
    4. 并在那里select命名空间,图像stream和标记。

生成器configuration概述:

Builder的配置

  • 设置一个新的值“Docker Image Repository”没有帮助。
  • 在“始终拉取版本…”checkbox也没有帮助。

改变这个…

生成器配置您的应用程序

这个…

生成器配置改变你的应用程序