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

如何在Kubernetes的守护进程配置文件中使用实例ID?

  •  3
  • user3226932  · 技术社区  · 5 年前

    我想从我的k8s配置文件中获取pod运行位置的实例I d(例如AWS EC2实例ID,如I-19a9fa9s8df9a8,而不是私有dns节点名),但找不到任何关于如何执行此操作的文档。任何人都知道如何使用 reportingInstance 字段输入 https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.13/#event-v1-core ?

    我得到这个错误:

    The DaemonSet  is invalid:
    spec.template.spec.containers[0].env[8].valueFrom.fieldRef.fieldPath: 
    Invalid value: "core.reportingInstance": 
    error converting fieldPath: field label not supported: core.reportingInstance
    

    我就是这么想的:

        - name: INSTANCE_ID
          valueFrom:
            fieldRef:
              fieldPath: core.reportingInstance
    

    我已经在我的yaml文件中有了这个,但是它给出了私有dns名称而不是实例ID

       - name: NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
    
    1 回复  |  直到 5 年前
        1
  •  0
  •   Rajesh Deshpande    5 年前

    让我用我对你问题的理解来回答这个问题。我想您需要在容器中将节点名值设置为env变量。如果这是真的,你可以使用下面的代码

     - name: Node_Name
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
    

    如果您还需要一些关于pod或container的其他信息,请理解使用downloadapi只能在container中获得有限的信息,并且仅限于下面提到的字段。

     fieldRef     <Object>
     Selects a field of the pod: supports metadata.name, metadata.namespace,
     metadata.labels, metadata.annotations, spec.nodeName,
     spec.serviceAccountName, status.hostIP, status.podIP.
    
    
    resourceFieldRef     <Object>
     Selects a resource of the container: only resources limits and requests
     (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu,
     requests.memory and requests.ephemeral-storage) are currently supported.