对于我的 AKS 容器设置,我想通过环境变量将给定 statefulset 的请求数量的副本传递给每个 pod。
我试图在不重复自己的情况下做到这一点(一次是在“副本”设置中,一次是在环境变量的设置中)。
我能找到的唯一真正的解决方案是使用锚和别名(基于Kubernetes StatefulSet - 获取 spec.replicas 元数据并在配置中的其他位置引用):
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: solr
spec:
selector:
matchLabels:
app: solr
serviceName: solr-hs
replicas: &numReplicas 3
updateStrategy:
type: RollingUpdate
# Make sure pods get created sequentially
podManagementPolicy: OrderedReady
template:
metadata:
labels:
app: solr
spec:
containers:
- name: kubernetes-solr
imagePullPolicy: Always
image: "..."
resources:
requests:
memory: "8Gi"
cpu: "0.5"
ports:
- containerPort: 8983
env:
- name: N_O_REPLICAS
value: *numReplicas
不幸的是,“env”值似乎必须是一个字符串,并且“replicas”的整数值不会被转换或转换。而是引发以下错误:
v1.EnvVar.v1.EnvVar.Value: ReadString: 需要 " 或 n,但找到了 3,在 ...|,"value":3},{"name":|...的#10 字节中发现错误更大的上下文 ...|:"solr-config"}}},{"name":"N_O_REPLICAS","value":3},
我尝试通过编写手动转换为字符串:
value: !!str *numReplicas
但这也不起作用并引发以下错误:
将 YAML 转换为 JSON 时出错:yaml:第 52 行:未找到预期的密钥
有没有办法创建一个允许将整数值作为字符串重用的 Kubernetes YAML 文件?或者对于这种特殊情况有其他解决方案吗?