通过AKS集群中的负载均衡器访问服务



我配置了一个集群,其中服务(及其关联的pod/容器(都部署到一个私有子网中。其中一个pod代表应用程序的UI,我定义了一个带有公共ip的负载均衡器来提供对UI的访问。至少这是我的意图。当我在浏览器中输入带有负载均衡器IP的URL时,请求不会到达UI容器。我想我有一些配置错误的东西,一些建议将不胜感激。UI服务的定义如下:

apiVersion: apps/v1beta1
kind: Deployment
metadata: {name: myui, namespace: gem}
spec:
replicas: 1
template:
metadata:
labels: {app: myui}
spec:
containers:
image: myblobstore.azurecr.io/myui:latest
imagePullPolicy: Always
name: myui
ports:
- {containerPort: 80}
---
apiVersion: v1
kind: Service
metadata: {name: myapp, namespace: gem}
spec:
loadBalancerIP: 40.123.124.125
ports:
- {name: '80', port: 80}
selector: {app: myui}
type: LoadBalancer

我还在我的网络安全组中定义了一条规则,我本打算允许来自负载均衡器的流量到达目标容器:

65001    AzureLoadBalancerInBound   Any  Any  AzureLoadBalancer  Any  Allow

但是流量并没有到达UI容器。我需要什么额外的配置才能使其工作?

更新:以下是我的集群的端点:

$ kubectl get endpoints -n gem
NAME                ENDPOINTS                       AGE
...
myui                10.0.2.22:80                    176m
...

为了完成这张照片,这里有一些额外的信息:

$ kubectl get pods -n gem -o wide
NAME                                 READY   STATUS             RESTARTS   AGE    IP          NODE                  NOMINATED NODE
...
myui-99c55f8d4-2thzv                 1/1     Running            0          ...
$ kubectl get svc -n gem -o wide
NAME                TYPE           CLUSTER-IP   EXTERNAL-IP     PORT(S)             AGE    SELECTOR
...
myui                LoadBalancer   10.1.0.94    40.123.124.125  80:32246/TCP        3h1m   app=myui
...
$ kubectl describe svc/myui -n gem
Name:                     myui
Namespace:                gem
Labels:                   <none>
Annotations:              kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"myui","namespace":"gem"},"spec":{"loadBalancerIP":"40.123.124,125"...
Selector:                 app=myui
Type:                     LoadBalancer
IP:                       10.1.0.94
IP:                       40.123.124.125
LoadBalancer Ingress:     40.123.124.125
Port:                     80  80/TCP
TargetPort:               80/TCP
NodePort:                 80  32246/TCP
Endpoints:                10.0.2.22:80
Session Affinity:         None
External Traffic Policy:  Cluster

Peter

最终,解决方案只是确保所使用的网络安全组打开了端口80和443,以允许互联网流量流动。我有两个不同的安全组,并认为我的负载均衡器将使用我指定为"公共"安全组的组,该组确实打开了端口80和443。相反,它使用了我的另一个安全组,我必须向该组添加适当的规则。

最新更新