openshift v3在线专业版的卷和内存限制问题
我正试图在openshift online v3 pro上运行一个openshift v3在线专业版的卷和内存限制问题,openshift,redhat,nexus,sonatype,openshift-online,Openshift,Redhat,Nexus,Sonatype,Openshift Online,我正试图在openshift online v3 pro上运行一个sonatype/nexus3。如果我只是使用web控制台从图像创建一个新的应用程序,它只分配512Mi,然后随着OOM而消亡。但它确实是在内存耗尽之前创建的,并记录了大量java输出。使用web控制台时,不会出现设置图像内存的方法。当我试图编辑pod的yaml时,它不允许我编辑内存限制 阅读这篇文章表明,我可以这样做: oc运行nexus333--image=sonatype/nexus3--limits=memory=750M
sonatype/nexus3
。如果我只是使用web控制台从图像创建一个新的应用程序,它只分配512Mi,然后随着OOM而消亡。但它确实是在内存耗尽之前创建的,并记录了大量java输出。使用web控制台时,不会出现设置图像内存的方法。当我试图编辑pod的yaml时,它不允许我编辑内存限制
阅读这篇文章表明,我可以这样做:
oc运行nexus333--image=sonatype/nexus3--limits=memory=750Mi
然后它甚至没有开始。它死在:
{kubelet ip-172-31-59-148.ec2.内部}错误:来自的错误响应
守护程序:{“消息”:“创建
C30DEB3B3C26252BF1218CC898FBF1C68D8FC14E840076710C21D58ED87A59:
mkdir
/var/lib/docker/volumes/C30DEB338B3C26252BF1218CC898FBF1C68D8FC14E840076710C21D58ED87A59:
权限被拒绝“}
有关oc get事件的更多信息:
FIRSTSEEN LASTSEEN COUNT NAME KIND SUBOBJECT TYPE REASON SOURCE MESSAGE
16m 16m 1 nexus333-1-deploy Pod Normal Scheduled {default-scheduler } Successfully assigned nexus333-1-deploy to ip-172-31-50-97.ec2.internal
16m 16m 1 nexus333-1-deploy Pod spec.containers{deployment} Normal Pulling {kubelet ip-172-31-50-97.ec2.internal} pulling image "registry.reg-aws.openshift.com:443/openshift3/ose-deployer:v3.6.173.0.21"
16m 16m 1 nexus333-1-deploy Pod spec.containers{deployment} Normal Pulled {kubelet ip-172-31-50-97.ec2.internal} Successfully pulled image "registry.reg-aws.openshift.com:443/openshift3/ose-deployer:v3.6.173.0.21"
15m 15m 1 nexus333-1-deploy Pod spec.containers{deployment} Normal Created {kubelet ip-172-31-50-97.ec2.internal} Created container
15m 15m 1 nexus333-1-deploy Pod spec.containers{deployment} Normal Started {kubelet ip-172-31-50-97.ec2.internal} Started container
15m 15m 1 nexus333-1-rftvd Pod Normal Scheduled {default-scheduler } Successfully assigned nexus333-1-rftvd to ip-172-31-59-148.ec2.internal
15m 14m 7 nexus333-1-rftvd Pod spec.containers{nexus333} Normal Pulling {kubelet ip-172-31-59-148.ec2.internal} pulling image "sonatype/nexus3"
15m 10m 19 nexus333-1-rftvd Pod spec.containers{nexus333} Normal Pulled {kubelet ip-172-31-59-148.ec2.internal} Successfully pulled image "sonatype/nexus3"
15m 15m 1 nexus333-1-rftvd Pod spec.containers{nexus333} Warning Failed {kubelet ip-172-31-59-148.ec2.internal} Error: Error response from daemon: {"message":"create 3aa35201bdf81d09ef4b09bba1fc843b97d0339acfef0c30cecaa1fbb6207321: mkdir /var/lib/docker/volumes/3aa35201bdf81d09ef4b09bba1fc843b97d0339acfef0c30cecaa1fbb6207321: permission denied"}
我不知道为什么如果我使用web控制台,我不能分配更多内存。我不知道为什么用
ocrun
运行它会导致mkdir错误。谁能告诉我如何在openshift online pro上运行sonatype/nexus3
。我通过从web控制台部署(死在OOM中)看到了这一点,但是为创建的pod编辑yaml以查看生成的卷装载
使用cat nexus3_pod.ephemeral.yaml | oc create-f-
创建具有以下yaml的映像,此时容器将启动卷装载和显式内存设置:
apiVersion: "v1"
kind: "Pod"
metadata:
name: "nexus3"
labels:
name: "nexus3"
spec:
containers:
-
name: "nexus3"
resources:
requests:
memory: "1200Mi"
limits:
memory: "1200Mi"
image: "sonatype/nexus3"
ports:
-
containerPort: 8081
name: "nexus3"
volumeMounts:
- mountPath: /nexus-data
name: nexus3-1
volumes:
- emptyDir: {}
name: nexus3-1
注释
-Xmx1200m
,如中所述。因此,如果分配的内存小于1200Mi,当堆增长超过限制时,它将与OOM一起崩溃。您还可以将request和max设置为max-heap-side李>
emptyDir
时,文件会在崩溃重启和内存更改之间挂起(我认为这是记录在案的行为)。我不得不用不同的名字重新创建一个pod,以获得一个干净的空硬盘,并分配1200英里的内存,以使其全部启动李>
您可能还需要遵循OpenShift文档中的教程
我已经在OpenShift Online Pro中成功地部署了它。查看文档,我发现它是一个Java虚拟机解决方案 使用Java 8时,仅使用以下2个运行时Java VM选项,内存使用率就可以大大提高: 。。。“-XX:+UnlockExperimentalVMOptions”,“-XX:+UseCGroupMemoryLimitForHeap” 我刚刚部署了我的容器(springbootjar),它消耗了超过650mbram的内存。仅使用这两个(新)选项,RAM消耗就下降到270 MB
因此,有了这两个运行时设置,所有OOM都远远落后!享受吧 您通常不会使用
ocrun
在OpenShift中部署现有的容器映像。您可以使用ocnewapp
,因为它会创建部署配置和其他位,以保持所有配置的运行。oc run
命令的级别非常低。当您拥有部署配置时,您可以使用部署页面上的下拉菜单在web控制台中编辑该配置的资源。您可能希望通过上的教程更好地了解如何将应用程序部署到OpenShift。我尝试了oc run
,但文档中有它。我已经在CDK/minishift上运行了nexus3,因为我正在阅读文档。@GrahamDumpleton我编辑了这个问题,以引用引用oc run
的文档。感谢您提供了很多有用的信息,但该文档是针对nexus2sonatype/nexus
的,它的页面指向sonatype/nexus3
版本查看文档,数据存储持久名称不同/sonatype work
而不是/nexus data
,因此安装pvc的命令需要不同。在这种情况下,我们需要2017年5月发布的dotnet
core2.0的nuget和原始存储库。所以我们的目标是最新的nexus版本。我尝试了nexus2出现的文档,我可以登录,当我点击一个按钮创建一个新的回购时,它会与OOM崩溃。看看控制台,它被默认为512Mi,所以我必须增加它。啊哈,看来nexus是贪婪的。nexus3正如我分配的1Gi一样,但映像中设置的JVM选项设置了-Xmx1200m
,因此,如果创建的pod/容器的默认值较小,它将超出限制,并随OOM一起消失。