Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker Openshift Origin针对不安全的注册表运行应用程序会产生带“的卡住pod”;拉取图像时出错";_Docker_Rhel_Openshift Origin - Fatal编程技术网

Docker Openshift Origin针对不安全的注册表运行应用程序会产生带“的卡住pod”;拉取图像时出错";

Docker Openshift Origin针对不安全的注册表运行应用程序会产生带“的卡住pod”;拉取图像时出错";,docker,rhel,openshift-origin,Docker,Rhel,Openshift Origin,我在Docker容器中使用Openshift Origin,并使用以下方法从Docker注册表(同一RHEL主机VM上的容器)中提取图像: 这一命令在当时似乎运作良好。但是,pod仍为“集装箱创建”,kubectl的结果描述了pod: OPENSHIFT_DEPLOYMENT_NAME: jenkins-1 OPENSHIFT_DEPLOYMENT_NAMESPACE: default Conditions: Type Status Ready

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

这一命令在当时似乎运作良好。但是,pod仍为“集装箱创建”,kubectl的结果描述了pod:

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的其他建议,我已将以下环境变量添加到原始图像中: KUBE\u ENABLE\u unsecure\u REGISTRY=true EXTRA_DOCKER_OPTS=--不安全的注册表

我在以下方面也有类似的结果: KUBE\u ENABLE\u unsecure\u REGISTRY=true\ EXTRA_DOCKER_OPTS=“--不安全注册表10.230.22.20”

版本信息:

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

提前感谢,


John

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

我的注册处:

https://ec2-xx-xx-xx-xx.eu-central-1.compute.amazonaws.com:5000
$ 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
我(在操作系统中)创建要推送到的项目

$ oc new-project test
我在项目中,我将创建一个秘密,以便我的openshift能够访问我的注册表:

https://ec2-xx-xx-xx-xx.eu-central-1.compute.amazonaws.com:5000
$ 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
将机密添加到服务帐户

$ 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
oc新应用程序--不安全注册表:标记
更好的方法是将图像推送到OpenShift注册表。这样就不必创建秘密并执行
oc导入

您可以公开一个注册表(安全注册表),这样您就可以从集群外部访问注册表以推送图像。

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

我的注册处:

https://ec2-xx-xx-xx-xx.eu-central-1.compute.amazonaws.com:5000
$ 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
我(在操作系统中)创建要推送到的项目

$ oc new-project test
我在项目中,我将创建一个秘密,以便我的openshift能够访问我的注册表:

https://ec2-xx-xx-xx-xx.eu-central-1.compute.amazonaws.com:5000
$ 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
将机密添加到服务帐户

$ 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
oc新应用程序--不安全注册表:标记
更好的方法是将图像推送到OpenShift注册表。这样就不必创建秘密并执行
oc导入

您可以公开注册表(安全注册表),这样您就可以从集群外部访问注册表以推送图像。

如果您在通过重新发布(重新导入)更新导入:标记后仍在使用Openshift Builder,则

  • 您的OpenShift构建似乎没有使用您通过oc导入图像发布的最新图像标记

  • 打开“应用程序的生成器配置”
  • 转到“映像配置”部分
  • 并将“Build From”值从“Docker Image Repository”切换到“Image Stream Tag”
  • 然后在那里选择名称空间、图像流和标记
构建器配置概述:

  • 将新值设置为“Docker Image Repository”没有帮助
  • 将复选框设置为“始终拉动构建…”也没有帮助
改变这个

对此


如果在通过重新发布(重新导入)更新导入:标记后,您在Openshift Builder中遇到了麻烦

  • 您的OpenShift构建似乎没有使用您通过oc导入图像发布的最新图像标记

  • 打开“应用程序的生成器配置”
  • 转到“映像配置”部分
  • 并将“Build From”值从“Docker Image Repository”切换到“Image Stream Tag”
  • 然后在那里选择名称空间、图像流和标记
构建器配置概述:

  • 将新值设置为“Docker Image Repository”没有帮助
  • 将复选框设置为“始终拉动构建…”也没有帮助
改变这个

对此


您是否已尝试使用--loglevel=5执行此命令?+在注册表上执行docker登录后,您是否能够手动提取图像?+您的注册表是真正的docker注册表还是“openshift”注册表“最佳”方法是保护您的openshift注册表。标记jenkins图像并将其推送到OpenShift注册表(当您想从集群外部推送时,请公开注册表)。OpenShift能够在集群中的任何地方使用映像,即使使用命令
oc new app--loglevel=5--unsecure registry=true--docker image=mtl-vm375:5000/jenkins:1.0
也没有提供更多的日志:
[root@mtl-vm375源代码]#oc从服务器记录jenkins-1-deploy错误:pod“jenkins-1-deploy”中的容器“deployment”正在等待开始:ContainerCreating
现在,我使用的是真正的docker注册表,而不是openshift注册表,可以手动将其从docker存储库中拉出,没有问题。我还没有尝试过另一种方法,将它推送到Openshift的注册表中。这是个好建议。我会尝试一下。将您的图像标记为服务ip:5000/项目/图像。您选择openshift作为项目,然后将创建整个集群都知道的图像流。当您想从外部推送到注册表时,您需要将其导出(docker regsitry.xxx:443/)。我试图用另一个注册表执行您想要的操作。我将把它作为一个答案发布。您也可以尝试使用--loglevel=5?+在注册表上执行docker登录后,您是否能够手动提取图像?+您的注册表是真正的docker注册表还是“openshift”注册表“最佳”方法是保护您的openshift注册表。标记jenkins图像并将其推送到OpenShift注册表(当您想从集群外部推送时,请公开注册表)。OpenShift能够在集群的任何地方使用图像,即使使用命令
ocnew-