我需要在pod中了解部署中正在运行的pod的总数。我知道有一个向下的api,用于将有关豆荚的信息传递给kubernetes中的豆荚本身。
有可能做到这一点吗?
答案 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