Azure VM元数据丢失/显示为publicIpAddress

时间:2020-07-03 16:40:08

标签: azure metadata azure-vm

在Azure VM上查询元数据时,即使计算机作为公共IP,publicIpAddress也没有值。

curl -H Metadata:true "http://169.254.169.254/metadata/instance?api-version=2019-11-01"

为publicIpAddress返回一个空字符串

{
  "compute": {
    // ... Omitted for brevity
  },
  "network": {
    "interface": [
      {
        "ipv4": {
          "ipAddress": [
            {
              "privateIpAddress": "10.3.0.4",
              "publicIpAddress": ""
            }
          ],
         // ... Rest has been omitted for brevity

有人知道为什么吗?我检查了https://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service,但找不到导致公共IP地址不显示的任何原因

1 个答案:

答案 0 :(得分:2)

我相信您的公共IP地址是标准SKU,而不是基本SKU,它不支持实例元数据服务。

来自MSDN

使用实例元数据服务IMDS时,只有具有基本SKU的公共IP地址可用。不支持标准SKU。

GitHub Issue还提供了更多信息。

我还使用基本SKU和标准SKU公共IP地址对此进行了测试,并且标准SKU在查询实例元数据实例API时会为您提供"publicIpAddress":""

解决方案

要使用实例元数据服务,您需要使用基本SKU 公共IP地址。创建公用IP地址后,您不能更改SKU,如MSDN中突出显示。

相反,您可以先从虚拟机网络接口中取消标准SKU 公用IP地址实例,然后使用基本SKU 创建一个新的公用IP地址,然后将其关联虚拟机网络接口的公共IP地址。这是必需的,因为网络接口只能有一个与其关联的公用IP地址。

检查公用IP地址SKU

您可以从Azure PowerShell命令运行Get-AzPublicIpAddress来检查您的公共地址SKU:

(Get-AzPublicIpAddress -Name "PUBLIC-IP-NAME" -ResourceGroupName "RESOURCE-GROUP").Sku.Name

或者如果愿意,可以使用Azure CLI中的az network public-ip show

az network public-ip show -n "PUBLIC-IP-NAME" -g "RESOURCE-GROUP" --query "sku.name"

或者通过导航到您的公共IP地址实例通过Azure门户进行检查。

相关问题