根据 Kubernetes 文档
注释中的元数据可以小或大、结构化或非结构化,并且可以包含标签不允许的字符。
注释与标签一样,是键/值映射
然后是对注解键的语法的详细解释。但它没有提到价值部分。
在哪里可以找到有关 Kubernetes 中注释值允许的长度和字符集的更多信息?
在这里您可以找到验证当前 master 中注释的代码:
func ValidateAnnotations(annotations map[string]string, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
for k := range annotations {
for _, msg := range validation.IsQualifiedName(strings.ToLower(k)) {
allErrs = append(allErrs, field.Invalid(fldPath, k, msg))
}
}
if err := ValidateAnnotationsSize(annotations); err != nil {
allErrs = append(allErrs, field.TooLong(fldPath, "", TotalAnnotationSizeLimitB))
}
return allErrs
}
Run Code Online (Sandbox Code Playgroud)
keys根据您提到的规则进行验证。应用于值的唯一验证是所有注释的总长度(键的大小 + 所有注释的值的大小),不能超过 256 kB。
const TotalAnnotationSizeLimitB int = 256 * (1 << 10) // 256 kB
...
func ValidateAnnotationsSize(annotations map[string]string) error {
var totalSize int64
for k, v := range annotations {
totalSize += (int64)(len(k)) + (int64)(len(v))
}
if totalSize > (int64)(TotalAnnotationSizeLimitB) {
return fmt.Errorf("annotations size %d is larger than limit %d", totalSize, TotalAnnotationSizeLimitB)
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2634 次 |
| 最近记录: |