【发布时间】:2022-09-27 23:58:14
【问题描述】:
我们有一个 Azure 容器实例,它包含一个用于 RabbitMQ 的容器。容器的IP地址不断变化,导致rabbitmq服务器无法访问。有没有办法让这个静态?如果可以将其设为静态,我们是否需要在 IP 地址之上添加 DNS?
标签: azure rabbitmq containers azure-container-instances
我们有一个 Azure 容器实例,它包含一个用于 RabbitMQ 的容器。容器的IP地址不断变化,导致rabbitmq服务器无法访问。有没有办法让这个静态?如果可以将其设为静态,我们是否需要在 IP 地址之上添加 DNS?
标签: azure rabbitmq containers azure-container-instances
这是一个已知问题,到目前为止已经提出了几种解决方案:
Static IP address for Azure Container Intances
Attaching a static ip address to Azure Container Instance
另一个解决方案是设置一个Azure function,它会定期检查容器实例 IP,当它发生变化时,该函数会相应地更新服务器 IP。
像 Kubernetes 这样的容器编排系统也可以帮助克服这个问题。
【讨论】:
正如@evidalpe 所指出的,您不能将静态 IP 地址分配给容器实例。但是,您可以使用dnsNameLabel 轻松分配静态/可预测的 DNS 名称。我发现这比使用 IP 地址方便得多。
例子:
customdnslabel.westeurope.azurecontainer.io
您可以在创建容器实例时设置 DNS 名称标签,也可以更新现有实例的标签。您无法使用门户对其进行编辑,但之后会显示为“FQDN”。
Azure CLI Example - 用于创建和更新。 Azure CLI 也可以使用Cloud Shell 执行。
az container create -g myresourcegroup -n mycontainerinstancename --dns-name-label customdnslabel --image rabbitmq
resource mycontainerinstance 'Microsoft.ContainerInstance/containerGroups@2021-03-01' = {
name: 'mycontainerinstancename'
location: location
properties: {
osType: 'Linux'
restartPolicy: 'Always'
ipAddress: {
dnsNameLabel: 'customdnslabel'
type: 'Public'
ports: [
// ...
]
}
containers: [
{
name: 'mycontainer'
properties: {
image: image
resources: {
requests: {
cpu: cpus
memoryInGB: memory
}
}
ports: [
// ...
]
}
}
]
【讨论】: