kubernetes pod名称用作参数

时间:2019-01-08 17:03:11

标签: kubernetes

我想使用Kubernetes窗格名称作为容器中的标识符作为参数。

我已使用以下配置在我的Kubernetes集群上部署了回显容器:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: echo1
spec:
  selector:
    matchLabels:
      app: echo1
  replicas: 2
  template:
    metadata:
      labels:
        app: echo1
    spec:
      containers:
      - name: echo1
        image: hashicorp/http-echo
        args:
        - "-text=echo1"
        ports:
        - containerPort: 5678

当我执行“ kubectl获得豆荚”时:

NAME                                     READY   STATUS    RESTARTS   AGE
echo1-76c689b7d-48h4v                    1/1     Running   0          19h
echo1-76c689b7d-4gq2v                    1/1     Running   0          19h

我想通过在上面的配置中传递容器名称来回显容器名称:

args:
            - "-text=echo1"

如何访问要在参数中使用的pod名称?

1 个答案:

答案 0 :(得分:2)

几件事。首先,您将对环境变量使用fieldRef语法,如https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/所示。然后,您可以在参数("-text=$(PODNAME)"中使用env var。但是,这将为您提供实际的容器名称,例如echo1-76c689b7d-48h4v。您想要的是部署名称或app标签的值,后者更容易代替metadata.name作为字段路径,请使用metadata.labels['app']之类的东西(需要Kubernetes 1.9+ )。