3

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

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 地址不显示的任何原因

4

1 回答 1

2

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

来自MSDN

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

这个GitHub 问题也有更多信息。

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

解决方案

为了能够使用实例元数据服务,您需要使用基本 SKU公网 IP 地址。创建公共 IP 地址后,您将无法更改 SKU,如MSDN中突出显示的那样。

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

检查公共 IP 地址 SKU

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

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

az network public-ip show如果您愿意,也可以从 Azure CLI 使用:

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

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

于 2020-07-04T02:53:41.883 回答