openshift v3在线专业版量和内存限制问题

问题描述 投票:2回答:3

我试图在openshift online v3 pro上运行sonatype/nexus3。如果我只是使用Web控制台从图像创建一个新的应用程序,它只分配512Mi,它会死于OOM。它确实被创建了并且在内存不足之前记录了很多java输出。使用Web控制台时,似乎没有办法在图像上设置内存。当我尝试编辑pod的yaml时,它不允许我编辑内存限制。

阅读docs about memory limits它表明我可以运行:

oc run nexus333 --image=sonatype/nexus3 --limits=memory=750Mi

然后它甚至没有开始。它死了:

{kubelet ip-172-31-59-148.ec2.internal}错误:来自守护程序的错误响应:{“message”:“create c30deb38b3c26252bf1218cc898fbf1c68d8fc14e840076710c211d58ed87a59:mkdir / var / lib / docker / volumes / c30deb38b3c26252bf1218cc898fbf1c68d8fc14e840076710c211d58ed87a59:permission denied”}

来自oc get events的更多信息:

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控制台我无法分配更多内存。我不知道为什么运行它与oc run死于mkdir错误。谁能告诉我如何在openshift在线专业版上运行sonatype/nexus3

openshift redhat nexus sonatype openshift-online
3个回答
0
投票

您可能还想跟随OpenShift文档https://docs.openshift.com/online/dev_guide/app_tutorials/maven_tutorial.html中的教程

我已成功在OpenShift Online Pro中部署它


0
投票

好吧mkdir /var/lib/docker/volumes/许可被拒绝似乎是图像需要一个/nexus-data坐骑,并被拒绝。我通过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

笔记

  1. 法师在-Xmx1200m记录了sonatype/docker-nexus3。因此,如果您分配的内存小于1200Mi,当堆超过限制时,它将与OOM一起崩溃。您也可以将requested和max设置为最大堆边。
  2. 当分配的内存太低时,崩溃就像设置数据库一样,这会损坏数据库日志,这意味着它在崩溃循环中“无法从0字节文件加载4个字节”,当我重新创建它时记忆。似乎有一个emptyDir文件在崩溃重启和内存更改之间徘徊(我认为这是记录的行为)。我不得不重新创建一个具有不同名称的pod以获得干净的emptyDir并分配1200Mi的内存以使其全部启动。

0
投票

查看文档,我发现它是一个Java VM解决方案。

使用Java 8时,只使用以下2个运行时Java VM选项可以显着改进内存使用情况:

...“ - XX:+ UnlockExperimentalVMOptions”,“ - XX:+ UseCGroupMemoryLimitForHeap”......

我刚刚部署了容量超过650 MB RAM的容器(Spring Boot JAR)。只有这两个(新的)选项RAM消耗降至270 MB!

因此,通过这两个运行时设置,所有OOM都远远落后!请享用!

© www.soinside.com 2019 - 2024. All rights reserved.