以编程方式获取容器在 Kubernetes 中所属的 Pod 的名称?
Programmatically get the name of the pod that a container belongs to in Kubernetes?
有没有办法以编程方式获取容器在 Kubernetes 中所属的 Pod 的名称?如果是这样怎么办?我正在使用 fabric8 的 java 客户端,但 curl 或类似的东西也可以。
请注意,从那时起我不想使用特定标签找到 pod(我假设)如果使用复制控制器进行缩放,我可能并不总能找到正确的 pod。
pod 名称被写入 /etc/hostname
,因此可以从那里读取它。在 Java(我正在使用)中,您还可以通过调用 System.getenv("HOSTNAME")
.
获取主机名(以及 pod 的名称)
您可以使用 downward 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
有没有办法以编程方式获取容器在 Kubernetes 中所属的 Pod 的名称?如果是这样怎么办?我正在使用 fabric8 的 java 客户端,但 curl 或类似的东西也可以。
请注意,从那时起我不想使用特定标签找到 pod(我假设)如果使用复制控制器进行缩放,我可能并不总能找到正确的 pod。
pod 名称被写入 /etc/hostname
,因此可以从那里读取它。在 Java(我正在使用)中,您还可以通过调用 System.getenv("HOSTNAME")
.
您可以使用 downward 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