• AKS (5) 使用AKS内网负载均衡器自动创建内网IP地址


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

      

      

  • 相关阅读:
    facebook开源前端UI框架React初探
    javascript中数组的map方法
    处理 InterruptedException——Brian Goetz
    eclipse 打开是报错"reload maven project has encountered a problem"
    Java并发大师Brain Goetz和Doug Lea 的中英文博客文章地址
    修复 Java 内存模型,第 2 部分——Brian Goetz
    修复 Java 内存模型,第 1 部分——Brian Goetz
    正确使用 Volatile 变量——Brian Goetz
    mysql数据备份
    小知识点
  • 原文地址:https://www.cnblogs.com/threestone/p/15987542.html
Copyright © 2020-2023  润新知