代码之家  ›  专栏  ›  技术社区  ›  Katlock

要用作参数的kubernetes pod名称

  •  0
  • Katlock  · 技术社区  · 6 年前

    我想使用kubernetes pod名称作为我容器中的标识符作为参数。

    我已经使用以下配置在Kubernetes集群上部署了echo容器:

    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
    

    我想通过在上面的配置中传递pod名称来回应pod名称:

    args:
                - "-text=echo1"
    

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

    1 回复  |  直到 6 年前
        1
  •  2
  •   coderanger    6 年前

    所以一些事情。首先,您将对环境变量使用fieldref语法,如中所示。 https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/ . 然后在您的论点中使用env var( "-text=$(PODNAME)" )不过,这会给您提供实际的pod名称,比如 echo1-76c689b7d-48h4v . 您需要的是部署名称或 app 标签,后者更容易替代 metadata.name 作为场路径,使用 metadata.labels['app'] (需要Kubernetes 1.9+)。