我需要在 pod 中了解部署中运行的 pod 总数。我知道有一个向下的 api 用于将有关 pod 的信息传递给 kubernetes 中的 pod 本身。
有可能做到这一点吗?
我需要在 pod 中了解部署中运行的 pod 总数。我知道有一个向下的 api 用于将有关 pod 的信息传递给 kubernetes 中的 pod 本身。
有可能做到这一点吗?
正如您所提到的,Downward API 为您提供了将 pod/容器字段传递给正在运行的容器的方法。部署中运行的容器数量与 pod/container 字段无关,因此此方法对您不起作用。
您可以通过 configmaps 或挂载的卷使用任意环境变量将部署中正在运行的 pod 的数量传递给另一个 pod。
在不知道您到底想要实现什么的情况下,这是一个工作示例(我正在利用 bash 变量扩展,它允许我即时分配值,而无需实际创建配置映射或卷)。我假设 pod 计数器不是您要观察的部署的一部分:
cat > podcounter.yaml <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: podcounter
labels:
app: podcounter
spec:
replicas: 1
selector:
matchLabels:
app: podcounter
template:
metadata:
labels:
app: podcounter
spec:
containers:
- name: podcounter
image: busybox:1.28
command: ["sh", "-c", "env"]
env:
- name: NUM_PODS
value: $(kubectl get deploy -o wide | grep YOUR_DEPLOYMENT | awk '{print $3}')
EOF
*$3 返回该部署中可用 pod 的数量。
** 此方法在容器创建时填充环境变量,并且不会在容器的生命周期中进一步更新。为此,您需要一个 cronjob。
您可以通过 Kubernetes REST API 获取此信息。
GET /apis/apps/v1/namespaces/{namespace}/deployments/{name}
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#deployment-v1-apps