问题描述
在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架构相符)。
因此,大部分情况下,不需要为请求和限制的配置值添加引号。除非你的请求值可以被转换为整数,这时需要添加引号。
请注意,上述解决方案基于对提供的问答数据的分析,如果有任何版本差异或更新,请参考官方文档或其他可靠资源进行确认。
正文完