K8S CRD: ipv6 big int 场景 使用 string 替代 number 是最佳实践

2 阅读1分钟

✅ 回答您的问题:使用 string 替代 number 是最佳实践

一、Kubernetes 生态的最佳实践

  1. 当值可能超过 float64 精度时,使用 string

Kubernetes 社区的普遍做法:

  • Resource Quantities (cpu, memory) - 使用 resource.Quantity,JSON 序列化为 string
    • 例:"1.5", "100Mi", "2Gi"
  • Int64 - Kubernetes API 使用 string 表示可能很大的整数
    • 例:metadata.generation 在 JSON 中是字符串
  1. OpenAPI Schema 类型的限制

┌───────────────┬────────────────┬────────────────┐
│ OpenAPI 类型  │      精度      │    适用场景    │
├───────────────┼────────────────┼────────────────┤
│ type: number  │ float64 (2^53) │ 小数、小整数   │
├───────────────┼────────────────┼────────────────┤
│ type: integer │ int64 (2^63-1) │ 有符号整数     │
├───────────────┼────────────────┼────────────────┤
│ type: string  │ 无限制         │ 大整数、精确值 │
└───────────────┴────────────────┴────────────────┘