Azure k8s负载平衡器DNS名称
我有一个Azure Kubernetes服务集群,运行版本Azure k8s负载平衡器DNS名称,azure,kubernetes,Azure,Kubernetes,我有一个Azure Kubernetes服务集群,运行版本1.15.7。此群集最近替换了较旧的群集版本(1.12.something)。过去,一旦各种服务吊舱启动并运行,我们会在Azure portal中创建一个公共IP资源并为其分配一个名称,然后创建一个服务资源,如下所示: apiVersion: v1 kind: Service metadata: name: myservice-frontend labels: app: myservice spec: ports:
1.15.7
。此群集最近替换了较旧的群集版本(1.12.something
)。过去,一旦各种服务吊舱启动并运行,我们会在Azure portal中创建一个公共IP资源并为其分配一个名称,然后创建一个服务资源,如下所示:
apiVersion: v1
kind: Service
metadata:
name: myservice-frontend
labels:
app: myservice
spec:
ports:
- port: 80
name: myservice-frontend
targetPort: 80
- port: 443
name: myservice-frontend-ssl
targetPort: 443
selector:
app: myservice-frontend
type: LoadBalancer
loadBalancerIP: 1.2.3.4
最后,我们将向Traffic Manager实例添加公共IP
自从升级到1.15后,这似乎不再有效。我们可以完成上述所有步骤,但一旦创建了服务/负载平衡器,公共IP就会丢失其DNS名称,从而导致其从Traffic Manager中退出。我们可以重新设置名称,但在36-48小时内它会再次丢失。我怀疑AKS试图将名称应用于关联的IP地址,但由于我没有在上面定义名称,它只是将其设置为null
我如何告诉AKS分配给公共IP的名称?更好的是,我可以跳过静态公共IP,让AKS提供一个动态地址,只需将DNS名称添加到Traffic Manager中吗?这确实是AKS1.15.7
结果是,这是1.15中新功能的一部分,该功能允许在服务配置中设置负载平衡器IP的DNS标签。因此,上述定义可以变成:
apiVersion: v1
kind: Service
metadata:
name: myservice-frontend
labels:
app: myservice
annotations:
service.beta.kubernetes.io/azure-dns-label-name: myservice-frontend
spec:
ports:
- port: 80
name: myservice-frontend
targetPort: 80
- port: 443
name: myservice-frontend-ssl
targetPort: 443
selector:
app: myservice-frontend
type: LoadBalancer
并且该服务将自动分配一个带有注释DNS名称的新静态IP。我已尝试设置service.beta.kubernetes.io/azure-DNS-label-name,但似乎不起作用。它是否适用于1.16.x群集?这项服务的地址是什么?