我在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
提前致谢,
约翰
答案 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发布的最新图像标记..
构建器配置概述:
改变这个......
到此......