将已部署的Pod数量从部署/复制包/状态传递到kubernetes中的那些Pod

时间:2020-07-20 08:15:20

标签: kubernetes

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

有可能做到这一点吗?

2 个答案:

答案 0 :(得分:3)

如前所述,Downward API为您提供了将容器/容器字段传递给正在运行的容器的方法。部署中正在运行的容器数量不是问题,也不是pod / container字段,因此此方法对您不起作用。

您可以通过configmap或装入的卷使用任意环境变量,将部署中正在运行的Pod的数量传递给另一个Pod。

这是一个有效的示例,我不知道您到底要实现什么目标(我利用bash变量扩展,这使我可以即时分配值,而不必实际创建configmap或卷。我假设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返回该部署中可用吊舱的数量。

**此方法在容器创建时填充环境变量,并且不会在容器的整个生命周期内进行更新。为此,您需要进行cronjob。

答案 1 :(得分: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