《Windows Azure Platform 系列文章目录》
我们在使用Azure AKS的时候,还可以把服务暴露在内网负载均衡器上,这样公网的用户无法访问AKS集群上的服务。
只有和AKS在同一个内网,或者和AKS VNet打通了Peering点对点互联的其他虚拟网络,才可以访问该AKS上对内提供的服务。
以我的环境为例:
(1)AKS名称为LeiAKS01,该AKS在创建的时候,使用的是Managed Identity
(2)AKS使用的虚拟网络为aks-rg-vnet
1.首先我们在虚拟网络里,选择到这个虚拟网络aks-rg-vnet
2.选择Access Control (IAM),点击ADD,如下图:
3.选择Role为网络参与者(network contributor)。步骤略
4.在member里,选择managed indeity,选中需要设置的aks服务
5.最后选择Create即可
6.操作以后,在虚拟网络的IAM里,可以查看到这个AKS信息。如下图:
(我在下面的截图里,AKS权限为Contributor,实际可以使用network contributor)
7.操作完毕后,需要等待IAM生效。或者直接把AKS重启一下,立刻生效。
8.然后我们的AKS使用的虚拟网络VNet的subnet结构如下:
(1) default subnet,CIDR: 10.240.0.0/16,是AKS CNI网络使用的
(2) lb-subnet,CIDR: 10.241.0.0/24,专门用来创建内部负载均衡器的内网IP地址的
(3) vm-subnet,CIDR: 10.242.0.0/24,专门用来创建内网客户端虚拟机的
9.我们准备2个yaml file,分别如下:
privatelb-nginx80.yaml。
注意需要设置的内容如下:
- service.beta.kubernetes.io/azure-load-balancer-internal,说明要使用内网负载均衡器
- service.beta.kubernetes.io/azure-load-balancer-internal-subnet,指定内网负载均衡器需要的虚拟网络子网名称
apiVersion: v1
kind: Service
metadata:
name: internal-80
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "lb-subnet"
spec:
type: LoadBalancer
loadBalancerIP: 10.241.0.4
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: testapp01
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
run: testapp01
name: testapp01
spec:
replicas: 1
selector:
matchLabels:
run: testapp01
template:
metadata:
labels:
run: testapp01
spec:
containers:
- image: nginx
name: nginx
privatelb-nginx81.yaml
apiVersion: v1
kind: Service
metadata:
name: internal-81
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "lb-subnet"
spec:
type: LoadBalancer
loadBalancerIP: 10.241.0.4
ports:
- port: 81
protocol: TCP
targetPort: 80
selector:
run: testapp02
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
run: testapp02
name: testapp02
spec:
replicas: 1
selector:
matchLabels:
run: testapp02
template:
metadata:
labels:
run: testapp02
spec:
containers:
- image: nginx
name: nginx
10.我们通过kubectl apply,分别执行这2个yaml file。步骤略。
可以通过kubectl get svc,查看到service的EXTERNAL-IP,为内网IP地址。图略。
11.我们在查看Azure 负载均衡器,会查看到AKS自动创建了一个新的创建、面向内网的负载均衡器,该负载均衡器的名称由系统指定。
且自动设置了后端池、运行状况探测,负载均衡器规则等等。截图略。
12.我们通过vm-subnet子网里,创建新的Azure虚拟机。再通过该虚拟机作为跳板,新的创建、面向内网的负载均衡器地址。
分别访问80端口和81端口,就可以访问到这2个Nginx服务。截图略。