在容器内获取元数据
本文介绍如何在容器内获取元数据,将ECI实例信息和容器Meta数据呈现给运行中的容器。
方式一:通过MetaServer访问元数据
您可以使用以下方式获取ECI实例元数据。
连接容器。具体操作,请参见调试ECI实例。
执行以下命令访问元数据的根目录。
curl http://100.100.100.200/latest/meta-data/
在URL中添加具体的元数据名称即可获取具体的元数据。
例如:执行以下命令获取实例ID。
curl http://100.100.100.200/latest/meta-data/instance-id
ECI实例目前能获取的基本实例元数据项如下表所示:
实例元数据项
说明
/dns-conf/nameservers
实例的DNS配置。
/eipv4
实例的弹性公网IP(IPv4类型)。
/hostname
实例的主机名,对应ContainerGroupName。
/instance-id
实例ID。
/mac
实例的MAC地址。
/network/interfaces/
网卡的MAC地址列表。
/network/interfaces/macs/[mac]/network-interface-id
网卡的标识ID,其中[mac]参数需要替换为实例MAC地址。
/network/interfaces/macs/[mac]/netmask
网卡对应的子网掩码。
/network/interfaces/macs/[mac]/vswitch-cidr-block
网卡所属的虚拟交换机IPv4 CIDR段。
/network/interfaces/macs/[mac]/vpc-cidr-block
网卡所属的VPC IPv4 CIDR段。
/network/interfaces/macs/[mac]/private-ipv4s
网卡分配的私网IPv4地址列表。
/network/interfaces/macs/[mac]/vpc-ipv6-cidr-blocks
网卡所属的VPC IPv6 CIDR段,仅支持已配置了IPv6的VPC类型实例。
/network/interfaces/macs/[mac]/vswitch-id
网卡所属安全组的虚拟交换机ID。
/network/interfaces/macs/[mac]/vpc-id
网卡所属安全组的VPC ID。
/network/interfaces/macs/[mac]/primary-ip-address
网卡主私有IP地址。
/network/interfaces/macs/[mac]/gateway
网卡对应的IPv4网关地址。
/instance/max-netbw-egress
实例规格的出方向内网最大带宽。单位:Kbit/s。
/instance/max-netbw-ingerss
实例规格的入方向内网最大带宽。单位:Kbit/s。
/network/interfaces/macs/[mac]/ipv6s
网卡分配的IPv6地址列表,仅支持已配置了IPv6的VPC类型实例。
/network/interfaces/macs/[mac]/ipv6-gateway
网卡所属的VPC的IPv6网关地址。
/network/interfaces/macs/[mac]/vswitch-ipv6-cidr-block
网卡所属的虚拟交换机IPv6 CIDR段,仅支持已配置了IPv6的VPC类型实例。
/private-ipv4
实例的私网IPv4地址。
/ntp-conf/ntp-servers
NTP服务器地址。
/owner-account-id
实例拥有者的阿里云账号ID。
/region-id
实例所属地域。
/serial-number
实例所对应的序列号。
/vpc-id
实例所属VPC ID。
/vpc-cidr-block
实例所属VPC的CIDR网段。
/vswitch-cidr-block
实例所属虚拟交换机的CIDR网段。
/vswitch-id
实例所属虚拟交换机ID。
/zone-id
实例所属可用区。
/ram/security-credentials/[role-name]
实例RAM角色策略所生成的STS临时凭证。只有在实例指定了RAM角色后,您才能获取STS临时凭证。其中[role-name]参数需要替换为实例RAM角色的名称。如果未指定[role-name],将返回实例RAM角色名称。
方式二:配置容器环境变量
通过配置ECI实例容器环境变量的Value便可获取实例相关信息,ECI实例目前可以获取到实例ID、实例名称、实例所属地域、实例所属可用区、实例容器名称等元数据项。
Key | Value | 说明 |
eci_id | __ECI_ID__ | 实例ID。 |
eci_name | __ECI_NAME__ | 实例名称。 |
region_id | __REGION_ID__ | 实例所属地域。 |
zone_id | __ZONE_ID__ | 实例所属可用区。 |
container_name | __CONTAINER_NAME__ | 实例容器名称。 |
params = {
'Container.1.Image': 'registry-vpc.cn-shanghai.aliyuncs.com/eci_open/nginx:alpine',
'Container.1.Name': 'nginx',
'SecurityGroupId': 'sg-uf6biempwqvodk7a****',
'VSwitchId': 'vsw-uf6mhqg2wiq9iifhn****',
'ContainerGroupName': 'test-env',
# 自定义环境变量
'Container.1.EnvironmentVar.1.Key': 'eci_id',
'Container.1.EnvironmentVar.2.Key': 'eci_name',
'Container.1.EnvironmentVar.3.Key': 'region_id',
'Container.1.EnvironmentVar.4.Key': 'zone_id',
'Container.1.EnvironmentVar.5.Key': 'container_name',
'Container.1.EnvironmentVar.1.Value': '__ECI_ID__',
'Container.1.EnvironmentVar.2.Value': '__ECI_NAME__',
'Container.1.EnvironmentVar.3.Value': '__REGION_ID__',
'Container.1.EnvironmentVar.4.Value': '__ZONE_ID__',
'Container.1.EnvironmentVar.5.Value': '__CONTAINER_NAME__',
}
您可以通过控制台连接容器查看是否生效。具体操作,请参见调试ECI实例。