有没有办法以编程方式获取容器在 Kubernetes 中所属的 pod 的名称?如果有怎么办?我正在使用fabric8的java客户端,但curl或类似的东西也可以。
请注意,从那时起,我不想使用特定标签查找 pod(我假设)如果使用复制控制器进行扩展,我可能并不总是能找到正确的 pod。
有没有办法以编程方式获取容器在 Kubernetes 中所属的 pod 的名称?如果有怎么办?我正在使用fabric8的java客户端,但curl或类似的东西也可以。
请注意,从那时起,我不想使用特定标签查找 pod(我假设)如果使用复制控制器进行扩展,我可能并不总是能找到正确的 pod。
您可以使用向下 API告诉 Kubernetes 将 pod 名称放入您选择的环境变量中。
例如:
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: gcr.io/google_containers/busybox
command: [ "/bin/sh", "-c", "env" ]
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
restartPolicy: Never
pod 名称已写入,/etc/hostname
因此可以从那里读取它。在 Java(我正在使用)中,您还可以通过调用System.getenv("HOSTNAME")
.