我们已使用 KEDA 将自动缩放功能集成到我们的 kubernetes 设置中。目前,我们使用 KEDA 自定义自动缩放器作为触发器,通过我们的自定义逻辑进行自动缩放。我们有一个组件有特定的要求,它应该知道组件启动时可用的副本的数量。我需要一种方法来实现这一点。这应该适用于有状态集和部署。如果您需要更多信息,请添加评论
Replicas 是 StatefulSet 控制器创建的 Pod 数量。要查看 Deployment 创建的 ReplicaSet (rs),请运行命令 kubectl get rs。
StatefulSets 管理一组 Pod 的部署和扩展,并提供这些 Pod 的排序和唯一性保证。您只需找到要扩展的 StatefulSet,运行 kubectl get statefulsets
根据 kubernetes 文档,您可以尝试使用 init 容器 来获取副本计数。
spec:
initContainers:
- name: get-replica-count
image: busybox
command: ["sh", "-c"]
args:
- |
REPLICAS=$(kubectl get statefulset example-statefulset -o=jsonpath='{.spec.replicas}')
echo "REPLICAS=$REPLICAS" > /replica-count.txt
volumeMounts:
- name: config-volume
mountPath: /config
containers:
- name: main-container
image: nginx:1.14.2
volumeMounts:
- name: config-volume
mountPath: /config
readOnly: true
volumes:
- name: config-volume
emptyDir: {}
通过上面的 yaml 清单,kubectl 获取副本数并将其存储在空目录文件中,然后主容器可以读取该文件以获取副本数。