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导入图像发布的最新的图像标签。
- 打开“你的应用程序的生成器configuration”,
- 请转至“图像configuration”部分
- 并将“Build From”值从“Docker Image Repository”切换到“Image Stream Tag”
- 并在那里select命名空间,图像stream和标记。
生成器configuration概述:
- 设置一个新的值“Docker Image Repository”没有帮助。
- 在“始终拉取版本…”checkbox也没有帮助。
改变这个…
这个…