我正在配置一个状态填充集,其中我想要replicas的数量( spec.replicas 如下所示(可用于某种程度上作为一个参数传递到应用程序实例。我的应用程序需要 spec.replicas 确定副本的数字,因此它知道从mySQL表中加载哪些行。我不想在 spec.replicas 和应用程序参数中对复制品中的副本数进行硬编码,因为在上下缩放副本的数量时,由于应用程序参数需要缩放时进行调整。
这是我的状态填充配置:
apiversion:apps/v1beta1善良:状态满元数据: 标签: 运行:my-app 名称:my-app 名称空间:my-ns规格: 复制品:3 选择器: MatchLabels: 运行:my-app ServiceName:my-app PodmanagementPolicy:平行 模板: 元数据: 标签: 运行:my-app 规格: 容器: - 名称:my-app 图片:my-app:最新 命令: - /bin/sh - /bin/start.sh - 开发 -2000m - " 0" - " 3" **需要替换为#replicas ** -127.0.0.1 - " 32990" ImagePullPolicy:总是 LIVENICE PROPBE: httpget: 路径:/健康 端口:8081 InitiaDelayseconds:180 周期:10 超时路要数:3 REACHINCESPROBE: 失败:10 httpget: 路径:/准备就绪 端口:8081 方案:http InitiaDelayseconds:30 时期:15 SuccessThreshold:1 超时路要数:3 端口: - 集装箱:8080 协议:TCP 资源: 限制: 内存:2500mi ImagePullSecrets: - 名称:快照扣 restartpolicy:总是
我已经阅读了kubernetes文档和 spec.replicas 字段在吊舱或容器级别范围范围内,从来没有状态填充,至少在我看过的情况下。
。预先感谢。
您可以使用YAML锚做到这一点:
查看:https://helm.sh/docs/chart_template_guide/yaml_techniques/#yaml-anchors
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
labels:
run: my-app
name: my-app
namespace: my-ns
spec:
replicas: &numReplicas 3
selector:
matchLabels:
run: my-app
serviceName: my-app
podManagementPolicy: Parallel
template:
metadata:
labels:
run: my-app
spec:
containers:
- name: my-app
image: my-app:latest
command:
- /bin/sh
- /bin/start.sh
- dev
- 2000m
- "0"
- *numReplicas
- 127.0.0.1
- "32990"
imagePullPolicy: Always
livenessProbe:
httpGet:
path: /health
port: 8081
initialDelaySeconds: 180
periodSeconds: 10
timeoutSeconds: 3
readinessProbe:
failureThreshold: 10
httpGet:
path: /ready
port: 8081
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 3
ports:
- containerPort: 8080
protocol: TCP
resources:
limits:
memory: 2500Mi
imagePullSecrets:
- name: snapshot-pull
restartPolicy: Always
通常,您将使用向下API进行这种事情。https://kubernetes.io/docs/tasks/injects/inject-data-application/downward-api-volume-expose-expose-pod-information/
但是,Kubernetes目前不可能使用向下API传播部署/状态表格数据到POD规格中,也不应该。如果您负责此软件,我将设置一些内部功能,以便它可以找到它的同行并定期确定他们的计数。