我有一个运行版本1.15.7
的Azure Kubernetes Service群集。该群集最近替换了较旧的群集版本(1.12.something
)。过去,一旦各种服务Pod启动并运行,我们将在Azure门户中创建一个公共IP资源并为其分配一个名称,然后创建一个Service
资源,如下所示:
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
最后,我们将公共IP添加到Traffic Manager实例。
自从升级到1.15以来,这似乎不再起作用。我们可以执行上述所有步骤,但是一旦创建了服务/负载平衡器,公共IP就会丢失其DNS名称,这会导致它从Traffic Manager中驱逐出去。我们可以重命名,但在36-48小时内会再次丢失。我的怀疑是AKS尝试将名称应用到关联的IP地址,但是由于我没有在上面定义名称,因此将其设置为null。
我如何告诉AKS为公共IP分配什么名称?更好的是,我可以跳过静态公共IP并让AKS提供动态地址,而只需将DNS名称添加到Traffic Manager吗?
答案 0 :(得分:0)
这确实是AKS 1.15.7
Azure - PIP dns label will be default deleted
结果是,这是1.15中新功能的一部分,该功能允许在服务配置中设置LoadBalancer 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。