0

我需要在 pod 中了解部署中运行的 pod 总数。我知道有一个向下的 api 用于将有关 pod 的信息传递给 kubernetes 中的 pod 本身。

有可能做到这一点吗?

4

2 回答 2

3

正如您所提到的,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。

于 2020-07-20T09:05:08.330 回答
2

您可以通过 Kubernetes REST API 获取此信息。

GET /apis/apps/v1/namespaces/{namespace}/deployments/{name}

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#deployment-v1-apps

于 2020-07-20T10:15:49.517 回答