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

如何从容器中获取部署名称?

  •  0
  • Stanko  · 技术社区  · 5 年前

    我试图使用向下API将部署名称设置为环境变量,但我的容器在没有任何日志记录的情况下不断崩溃。使用busybi环境变量打印。我已经成功地使用了一个吊舱,但部署却没有成功:这是我的YAML:

    --- 
    apiVersion: apps/v1
    kind: Deployment
    metadata: 
      labels: 
        app: test-d
      name: test-deploy
    spec: 
      replicas: 1
      selector: 
        matchLabels: 
          app: test-d
      template: 
        metadata: 
          labels: 
            app: test-d
        spec: 
          command: 
            - sh
            - "-c"
            - "echo Hello Kubernetes, I am $MY_DEPLOY_NAME in $MY_CLUSTER_NAME and $MY_NAMESPACE! && sleep 3600"
          containers: 
            - 
              image: busybox
              name: test-d-container
          env: 
            - 
              name: MY_DEPLOY_NAME
              valueFrom: 
                fieldRef: 
                  fieldPath: metadata.name
            - 
              name: MY_NAMESPACE
              valueFrom: 
                fieldRef: 
                  fieldPath: metadata.namespace
            - 
              name: MY_CLUSTER_NAME
              value: production
    

    我错过了什么?

    更新:

    很明显,我的压痕是一团糟,谢谢你指出这一点,但我的问题的主要部分仍然不清楚。如何从容器中获取部署名称?

    0 回复  |  直到 5 年前
        1
  •  6
  •   Jose Armesto    5 年前

    两个 command 钥匙和 env 钥匙是 container

    这是正确的格式

    --- 
    apiVersion: apps/v1
    kind: Deployment
    metadata: 
      labels: 
        app: test-d
      name: test-deploy
    spec: 
      replicas: 1
      selector: 
        matchLabels: 
          app: test-d
      template: 
        metadata: 
          labels: 
            app: test-d
        spec: 
          containers: 
            - image: busybox
              name: test-d-container
              command: 
                - sh
                - "-c"
                - "echo Hello Kubernetes, I am $MY_DEPLOY_NAME in $MY_CLUSTER_NAME and $MY_NAMESPACE! && sleep 3600"
              env: 
                - 
                  name: MY_DEPLOY_NAME
                  valueFrom: 
                    fieldRef: 
                      fieldPath: metadata.name
                - 
                  name: MY_NAMESPACE
                  valueFrom: 
                    fieldRef: 
                      fieldPath: metadata.namespace
                - 
                  name: MY_CLUSTER_NAME
                  value: production
    

    this online validator using kubeval .

    关于问题的主要部分, you can get the object that created the Pod ,但很可能是复制集,而不是部署。