Azure AKS公共ip不可访问

Azure AKS公共ip不可访问,azure,nginx,kubernetes,Azure,Nginx,Kubernetes,我的入口服务中有以下配置: apiVersion: v1 kind: Service metadata: name: nginx-ingress namespace: nginx-ingress spec: externalTrafficPolicy: Local type: LoadBalancer loadBalancerIP: **.***.**.*** ports: - port: 80 targetPort: 80 protocol: TCP

我的入口服务中有以下配置:

apiVersion: v1
kind: Service
metadata:
  name: nginx-ingress
  namespace: nginx-ingress
spec:
  externalTrafficPolicy: Local
  type: LoadBalancer
  loadBalancerIP: **.***.**.***
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
    name: http
  - port: 443
    targetPort: 443
    protocol: TCP
    name: https
  selector:
    app: nginx-ingress
我们已从azure购买此公共ip。如果我们从服务yaml中删除此loadBalancerIP并部署,然后使用
kubectl get services-n nginx ingres
中列出的ip,那么当我们访问服务端点时,它可以正常工作。但有了这个公共ip,一切似乎都不起作用了

请查看以下服务说明(
kubectl description service nginx-ingres-n nginx-ingres-os
):

[openapianil@LHGOPENAPIDEV001github]$kubectl描述服务nginx ingress-n nginx ingress os
名称:nginx ingress
名称空间:nginx入口操作系统
标签:
注释:kubectl.kubernetes.io/last applicated configuration={“apiVersion”:“v1”,“种类”:“服务”,“元数据”:{“注释”:{},“名称”:“nginx入口”,“命名空间”:“nginx入口操作系统”},“规范”:{“外部流量策略”。。。
选择器:app=nginx入口
类型:负载平衡器
IP:10.0.0.44
IP:**********
负载平衡器入口:**********
端口:http 80/TCP
目标端口:80/TCP
节点端口:http 31247/TCP
端点:********:80
端口:https 443/TCP
目标端口:443/TCP
节点端口:https 32241/TCP
端点:********:443
会话关联:无
对外交通政策:本地
HealthCheck节点端口:30880
活动:
从消息中键入原因年龄
----    ------                ----  ----                -------
正常确保负载平衡器1m服务控制器确保负载平衡器
正常保证负载平衡器43s服务控制器保证负载平衡器

请帮助!!

我们知道,在AKS创建完成后,Azure将创建两个资源组

如果您想创建具有IP地址的服务,您应该在另一个资源组中创建静态IP地址,如
MC\u myResourceGRoup\u myAKSCluster\u eastus

您可以使用Azure CLI命令创建公共IP地址:

az network public-ip create --resource-group MC_myResourceGRoup_myAKSCluster_eastus --name myAKSPublicIP --allocation-method static
您也可以使用Azure portal创建它,但您不能向其中添加DNS

然后您可以使用如下静态IP地址:

apiVersion: v1
kind: Service
metadata:
  name: azure-vote-front1
spec:
  type: LoadBalancer
  loadBalancerIP: 52.224.235.119
  ports:
  - port: 80
  selector:
    app: azure-vote-front1
[root@jasoncli@jasonye jason]# kubectl describe service azure-vote-front1
Name:                     azure-vote-front1
Namespace:                default
Labels:                   <none>
Annotations:              <none>
Selector:                 app=azure-vote-front1
Type:                     LoadBalancer
IP:                       10.0.76.241
IP:                       52.224.235.119
LoadBalancer Ingress:     52.224.235.119
Port:                     <unset>  80/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  30416/TCP
Endpoints:                10.244.0.11:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
  Type    Reason                Age   From                Message
  ----    ------                ----  ----                -------
  Normal  CreatingLoadBalancer  45m   service-controller  Creating load balancer
  Normal  CreatedLoadBalancer   44m   service-controller  Created load balancer
结果如下:

注意:

1.创建Azure公共IP地址而不使用DNS名称。
2.在此资源组中创建Azure公共IP地址
MC\u myResourceGRoup\u myAKSCluster\u eastus

3.您可以使用
kubectl description service
检查状态,如下所示:

apiVersion: v1
kind: Service
metadata:
  name: azure-vote-front1
spec:
  type: LoadBalancer
  loadBalancerIP: 52.224.235.119
  ports:
  - port: 80
  selector:
    app: azure-vote-front1
[root@jasoncli@jasonye jason]# kubectl describe service azure-vote-front1
Name:                     azure-vote-front1
Namespace:                default
Labels:                   <none>
Annotations:              <none>
Selector:                 app=azure-vote-front1
Type:                     LoadBalancer
IP:                       10.0.76.241
IP:                       52.224.235.119
LoadBalancer Ingress:     52.224.235.119
Port:                     <unset>  80/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  30416/TCP
Endpoints:                10.244.0.11:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
  Type    Reason                Age   From                Message
  ----    ------                ----  ----                -------
  Normal  CreatingLoadBalancer  45m   service-controller  Creating load balancer
  Normal  CreatedLoadBalancer   44m   service-controller  Created load balancer

我在使用EXTERNAL-IP时遇到了这个问题。如果我在创建AKS时没有启用RBAC,则该IP被列为本地主机。在为我启用RBAC时,工作正常。

指定公共IP地址后,此服务是否成功部署?请运行此命令
kubectl description service nginx ingres
并在您的问题中发布该输出?@JasonYe MSFT用同样的方法更新了我的问题陈述。请帮助。如果我们看上面的示例,一旦它处于上述状态,我们应该是ale到telenet 52.224.235.119 80对吗?它应该会得到连接消息。但在我的情况下,即使成功部署,它仍然会继续尝试连接.有什么想法吗?在同一个问题上再问一次。我们可以在同一个负载均衡器ip上提供其他服务吗(希望不同端口的回答是肯定的)@AnilKumarP对于延迟表示抱歉,Azure不支持多个服务的一个IP地址。我在实验室中对其进行了测试,得到以下错误消息:
原始错误:autorest/Azure:Service返回了一个错误。Status=400 code=“publicipreferencedbymultipconfig”
消息=“公共ip地址/订阅/b834c23f/resourceGroups/MC_jasonakss_jasonakss_eastus/providers/Microsoft.Network/PublicIPAddresss/jasonip1由resource/subscriptions/b74c23f/resourceGroups/MC_jasonakss_jasonakss_eastus/providers/Microsoft.Network/loadBalancers/kubernetes中的多个IPConfig引用。"
@AnilKumarP顺便问一下,静态IP地址对你有用吗?我要更新我的yaml来回答,请检查,如果你需要更多帮助,请让我知道。抱歉延迟:)非常感谢你的回复。我已经将一个API配置为公共IP,它工作正常。我现在正在尝试将此公共IP配置为我的NGINX服务器的loadBalancerIP,分别运行在两个端口80和443 http/https上。这根本不起作用。顺便问一下,您如何识别此错误?它在哪里抛出PublicIPReferencedByMultipleIPConfigs?