我在Azure上运行了kubernetes服务。在创建部署和服务之后,该服务发布外部IP地址,并且我能够访问该IP上的服务:端口。
但是,我想通过常规域名访问该服务。我知道在Azure上运行的kubernetes集群有自己的DNS,但我怎么能弄清楚服务的DNS名称是什么?
我正在运行多个服务,并且他们使用< _ServiceName>。< _Namespace> .svc.cluster.local命名约定互相引用,但是如果我尝试使用< _ServiceName>来访问服务。< ; _Namespace> .svc。< _kubernetesDNS>。< _location> .azureapp.com,它不起作用。
非常感谢任何帮助。
答案 0 :(得分:1)
在Azure中,您可以使用“公共IP地址”资源并将服务使用的公共IP与默认Azure DNS命名空间下的DNS名称关联:.location.couldapp.azure.com
。
例如:demo.k8s.service.centralindia.couldapp.azure.com
注意:Dns记录应该是唯一的。
请尝试创建Azure DNS以创建自己的域。
答案 1 :(得分:0)
将服务公开为' Load Balancer'类型,它将自动创建一个Azure负载均衡器,具有公共IP。 Azure Public IP还具有您可以在azure.com域下使用的域名。
https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-ip-addresses-overview-arm
答案 2 :(得分:0)
首先,要使用DNS,您应该具有服务类型LoadBalancer。它将为您的服务创建ExternalIp。因此,如果您具有“服务”类型为LoadBalancer的“服务”,则可以使用以下命令获取服务的外部IP地址:
kubectl get services --all-namespaces
然后复制外部ip并通过PowerShell提供以下命令
P.S使用您自己的外部IP地址更改IP地址,并使用您自己的服务名称更改服务名称
$IP="23.101.60.87"
$DNSNAME="yourservicename-aks"
$PUBLICIPID=az network public-ip list --query "[?ipAddress!=null]|[?contains(ipAddress, '$IP')].[id]" --output tsv
az network public-ip update --ids $PUBLICIPID --dns-name $DNSNAME
因此,在执行完此命令之后,只需再次通过PowerShell在下面提供命令,它将向您显示DNS:
az network public-ip list --query "[?ipAddress!=null]|[?contains(ipAddress, '$IP')].[dnsSettings.fqdn]" -o table
参考:http://alakbarv.azurewebsites.net/2019/01/25/azure-kubernetes-service-aks-get-dns-of-your-service/