EKS中如何获取容器主机ip地址和容器名称
how to get container host machine ip address and container name in EKS
我有一个 docker 文件并使用它构建了映像,然后使用 EKS 服务启动容器。现在,在我用于日志记录的应用程序中,我正在使用 "container_instance" 和 "ec2_instance_id" 等环境变量并将其记录下来,以便我可以在 Elastic Search 中看到此日志是从哪个容器或主机 ec2 机器生成的。
在环境变量中启动容器时如何设置这两个数据?
在您的 Kubernetes Pod 规范中,您可以使用 downward API 来注入一些此类信息。比如获取节点的Kubernetes节点名,可以设置
env:
- name: MY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
节点名称通常是节点的主机名(例如,this example in the EKS docs 显示 EC2 内部主机名)。您无法轻松获得 per-pod 级别的 EC2 实例 ID 之类的东西。
您还可以在集群级别全局配置日志记录。 Kubernetes 文档包括 a packaged setup to route logs to Elasticsearch and Kibana. The example shown there includes only the pod name in the log message metadata, but you should be able to reconfigure the underlying fluentd 以包括额外的 host-level 元数据。
我有一个 docker 文件并使用它构建了映像,然后使用 EKS 服务启动容器。现在,在我用于日志记录的应用程序中,我正在使用 "container_instance" 和 "ec2_instance_id" 等环境变量并将其记录下来,以便我可以在 Elastic Search 中看到此日志是从哪个容器或主机 ec2 机器生成的。
在环境变量中启动容器时如何设置这两个数据?
在您的 Kubernetes Pod 规范中,您可以使用 downward API 来注入一些此类信息。比如获取节点的Kubernetes节点名,可以设置
env:
- name: MY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
节点名称通常是节点的主机名(例如,this example in the EKS docs 显示 EC2 内部主机名)。您无法轻松获得 per-pod 级别的 EC2 实例 ID 之类的东西。
您还可以在集群级别全局配置日志记录。 Kubernetes 文档包括 a packaged setup to route logs to Elasticsearch and Kibana. The example shown there includes only the pod name in the log message metadata, but you should be able to reconfigure the underlying fluentd 以包括额外的 host-level 元数据。