以编程方式获取容器在Kubernetes中所属的容器的名称?
问题描述:
有没有办法以编程方式获取容器属于Kubernetes的容器的名称?如果是这样如何?我使用的是fabric8的java客户端,但curl或类似的东西也不错。以编程方式获取容器在Kubernetes中所属的容器的名称?
请注意,自那时起我不想再找到使用特定标签的窗格(我假设)如果使用复制控制器缩放,我可能无法找到正确的窗格。
答
您可以使用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
答
将pod名称写入/etc/hostname
,因此可以从此处读取它。在Java中(我正在使用),您还可以通过调用System.getenv("HOSTNAME")
来获取主机名(并因此获取该pod的名称)。
不错,不知道这一点。 – Johan