Azure Lei Zhang的博客

weibo: LeiZhang的微博/QQ: 185165016/QQ群:319036205/邮箱:leizhang1984@outlook.com/TeL:139-161-22926

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

  《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服务。截图略。

  

 

  

posted on 2022-03-09 22:55  Lei Zhang的博客  阅读(698)  评论(0编辑  收藏  举报