是否需要在请求/限制配置中添加引号

76次阅读
没有评论

问题描述

在Kubernetes的配置文件中,是否需要为请求(requests)和限制(limits)的配置值添加引号(””或”)?例如:

resources:
  limits:
    cpu: 100m
    memory: 300Mi
  requests:
    cpu: 1m
    memory: 50Mi

与:

resources:
  limits:
    cpu: "100m"
    memory: "300Mi"
  requests:
    cpu: "1m"
    memory: "50Mi"

解决方案

在Kubernetes的配置文件中,通常情况下是不需要为请求和限制的配置值添加引号的。然而,在特定情况下,为了避免混淆并将YAML转换为JSON格式时,可能需要添加引号。

从你的示例来看,两种版本都可以工作,而不添加引号不会导致错误。然而,下面的示例将是无效的:

resources:
  limits:
    cpu: 1
    memory: 300Mi

如果尝试创建一个具有类似上述资源限制的工作负载,将会出现错误:对象无效。为了修复这个问题,你需要为CPU限制添加引号,例如:

resources:
  limits:
    cpu: "1"
    memory: 300Mi

这与你的客户端有关,它会在将YAML转换为JSON后将其发布到API。在纸上,"resource": { "limits": { "cpu": 1 } }这样的JSON是有效的。尽管从服务器的角度来看,你使用的是整数,但实际上期望的是一个字符串(与podSpec / resources架构相符)。

因此,大部分情况下,不需要为请求和限制的配置值添加引号。除非你的请求值可以被转换为整数,这时需要添加引号。

请注意,上述解决方案基于对提供的问答数据的分析,如果有任何版本差异或更新,请参考官方文档或其他可靠资源进行确认。

正文完