1. 程式人生 > 其它 >AKS (5) 使用AKS內網負載均衡器-自動建立內網IP地址 Windows Azure Platform 系列文章目錄

AKS (5) 使用AKS內網負載均衡器-自動建立內網IP地址 Windows Azure Platform 系列文章目錄

  《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資訊。如下圖:  

  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服務。截圖略。