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