2017-09-26 232 views
1

假设我有以下pod规范。是否可以从kubernetes容器中获取容器名称?

apiVersion: apps/v1beta1 
kind: Deployment 
metadata: 
    # Unique key of the Deployment instance 
    name: deployment-example 
spec: 
    # 3 Pods should exist at all times. 
    replicas: 3 
    template: 
    metadata: 
     labels: 
     # Apply this label to pods and default 
     # the Deployment label selector to this value 
     app: nginx 
    spec: 
     containers: 
     - name: nginx 
     # Run this image 
     image: nginx:1.10 

在这里,容器的名称是nginx。有没有办法从正在运行的容器中获取“nginx”字符串?

我的意思是,一旦我Exec的放入容器的东西,如

kubectl exec -it <pod-name> -c nginx bash 

有一个纲领性的方式来获得在吊舱规范指定容器名称?


请注意,这不一定是打印在docker ps中的码头容器名称。 Kubernetes为产生的码头集装箱组成了一个更长的名字。


downward api在这方面看起来很有前景。但Capabilities of the Downward API部分未提及container name

回答

0

不知道部署中的容器名称是否可用。

对于部署名称,在OpenShift中用于部署配置(以及可能的Kubernetes部署)的一种方法是采用环境变量的值,其格式为<deployment-name>-<deployment-number>-<random-string>

从第二个倒数-起,引导组件是部署名称。

可能会有点混乱,但也许可以通过查询基于该部署名称的部署资源对象的REST API以某种方式推断容器名称。

您在容器名称后特别注意?如果知道你需要什么,可以建议其他选项。

+0

我希望把它变成我的提示。我想要这样的东西 'root @ $ HOSTNAME:$ CONTAINER_NAME> $'在kubernetes中,$ HOSTNAME变成了PodName –

0

通过向下的api,容器名称不可用。您可以使用yaml anchors and aliases (references)。不幸的是,他们没有作用域,所以你将不得不为锚定者提供唯一的名称 - 它们并不重要,因为它们是而不是存在于解析的文档中。

以前序列化节点的后续事件作为别名节点呈现。节点的第一次出现必须用锚点标记,以允许随后出现的节点作为别名节点呈现。

别名节点由“*”指示符表示。 别名是指具有相同锚点的最近的在先节点。对于别名节点来说,使用以前不在文档中发生的锚点是错误的。指定未被任何别名节点使用的锚点并不是错误。

First occurrence: &anchor Foo 
Second occurrence: *anchor 
Override anchor: &anchor Bar 
Reuse anchor: *anchor 

这是一个完整的工作示例:

apiVersion: v1 
kind: Pod 
metadata: 
    name: reftest 
spec: 
    containers: 
    - name: &container1name first 
    image: nginx:1.10 
    env: 
    - name: MY_CONTAINER_NAME 
     value: *container1name 
    - name: MY_POD_NAME 
     valueFrom: 
     fieldRef: 
      fieldPath: metadata.name 
    - name: &container2name second 
    image: nginx:1.10 
    env: 
    - name: MY_CONTAINER_NAME 
     value: *container2name 
    - name: MY_POD_NAME 
     valueFrom: 
     fieldRef: 
      fieldPath: metadata.name 
相关问题