我在Kubernetes上运行了一些Windows容器,在部署yaml文件中设置了以下内存请求和限制:
containers:
- name: $$DEPLOYMENT_ALIAS$$$$APP_NAME$$
image: $$DOCKER_IMAGE_NAME$$:$$DOCKER_IMAGE_VERSION$$
imagePullPolicy: "Always"
resources:
requests:
memory: "2Gi"
cpu: "1"
limits:
memory: "3Gi"
cpu: "1.5"
字符串
然而,所有的pod在达到1GB内存消耗时都会重新启动。
我发现了另一个问题,即使用Docker时,Windows容器在使用Hyper-V隔离模式时有1GB的内存限制:Docker windows container memory limit
这也适用于kubernetes中的容器吗?是否有其他原因导致内存请求/限制不适用于Windows容器?
观察:此项目使用Azure Kubernetes Service(AKS),我无法访问此层中的设置。
1条答案
按热度按时间ckx4rj1h1#
我遇到的问题是Visual Studio将默认的构建配置设置应用到我的应用程序中,这是Any CPU - 32-bit preferred。这使得构建与ARM兼容。
我将其更改为x64并将应用程序部署到Kubernetes,然后它能够消耗超过1GiB的RAM。我最初的想法是这不会解决问题,因为32位.NET应用程序应该能够消耗2GB的RAM,但最终,这是问题的原因。