Azure Kubernetes Service 入門

Grant_Allen發表於2020-08-21

一,引言

  上一節,我們使用Azure CLI 建立了Azure Resource Group 和 Azure Container Registry 資源,並且將本地的一個叫 “k8s.net.demo”的 images 推送到遠端建立的私有的Docker Image Repo,今天接著上一篇我們學習一下Azure Kubernetes 服務,通過 Azure Portal 建立 Azure Kubernetes Service,並且希望將 Push 上去的Docker Image 部署到Azure Kubernetes 叢集中

  Azure Kubernetes Service 簡稱AKS,它託管的Kubernetes 環境,可以使我們在Azure中很輕鬆的部署和管理容器話的應用程式。AKS環境啟用了自動更新,自愈和自動縮放等功能。Kubernetes 的叢集主機由Azure 免費管理,建立AKS服務的時候,我們可以將叢集主機交由Aure進行託管,另外一種是我們在建立的時候,將我們自己建立好的VMSS掛載到AKS服務上。我們只需要為節點所在其上執行的VM付費即可。

  接下來,我們看看當前基礎設施架構圖

--------------------我是分割線--------------------

--------------------我是分割線--------------------

Azure Command Line 建立 Azure Container Registry 服務

二,正文

1,建立Azure Kubernetes Service

Azure Portal 點選 “Create a resource”,在搜尋框中輸入 “Kubernetes Service”,進行搜尋,點選 “Create”

Resource group 選擇建立一個新的 “Web_Test_AKS_RG”

Kubernetes cluster name:“cnbateblogwebCluster”

Region 選擇:“East Asia”

Node count 改為 “1”

點選 “Next:Node pools >”,進行設定節點池等資訊

 

我們如果想增加多個工作節點的話,可以選擇 點選 “Add node pool”

VM scale sets 選擇:“Enabled”

點選 “Next:Authentication >”

關於 “Authentication method” 我們選擇預設的 “Service principal”

其他的都選擇預設選項,點選 “Next:Networking >”

 

 接下來我們進行配置網路資訊,我們可以選擇預設,也可以選擇自定義的網路設計

Network configuration 選擇:“Advanced”

Virtual network 選擇建立新的,如下圖所示

Name:“CnBateBlogWeb_VNET”

Address space:“10.0.0.0/8”

Subnet name:“CnBateBlogWeb_AKS_SubNET”

點選 “OK”,繼續配置其他資訊

Kubernetes service address range:“10.0.2.0/24”

Kubernetes DNS service IP address:“10.0.2.10”

其他的配置選擇預設即可,點選“Next:Integrations >”

開啟容器監控,繼續點選 “Review + create”,進行建立前的預校驗

我們可以看到 驗證已通過,點選 “Create” 進行建立 AKS 服務

 

建立成功後,我們可以跳轉到該資源

 

2,為Azure Kubernetes Service 配置 Azure Container Registry 整合

找到上次建立好的叫 “cnbateblogwebACR” 的 Azure Container Registry

點選 “Access control(IAM)” ,選擇 “Role assignments”,點選 “Add”,新增一個角色分配

Role 選擇:“AcrPull”

Assign access to 選擇:“Azure AD user,group,or service principal”

Select 選擇剛剛建立AKS 的時候,在AD中自動註冊的App 

我們點選 ”Save“,進行儲存操作

最後一步,我們使用kubectl連線到叢集上

az aks get-credentials --resource-group Web_Test_AKS_RG --name cnbateblogwebCluster

 

3,Azure Portal 中建立pod

Azure Portal 中找到建立好的 aks 服務,選擇 “Workloads(preview)” ,切換到 “Pods” 的Tab頁,我們可以看到一些預設的pod,當然這些pod的名稱空間都是kube-system,不是我們需要的default的命令空間。

 

同時,我們也可以通過kubectl 客戶端命令進行檢視

 

我們點選 “+Add ” 進行建立pod資訊

 

輸入建立 pod 的描述檔案,點選 “Add” 按鈕

 

完整yaml檔案

apiVersion: v1
kind: Pod 
metadata:
  name: k8s-net-demo 
  labels: 
    app: k8s-net-demo
spec: 
  containers: 
    - name: k8s-net-demo
      image: cnbateblogwebacr.azurecr.io/k8s.net.demo:v1
      imagePullPolicy: IfNotPresent 
      ports:
        - containerPort: 80

 

回到Azure Portal 中,我們可以看到已經建立好的 k8s-net-demo 的pod 已經建立好了,狀態也是 running

 

 

4,訪問 pod 中的容器

 想要與pod 進行通訊,可以通過 kubectl port-forward 配置埠轉發

kubectl port-forward k8s-net-demo 8080:80

 

 

 瀏覽器訪問 http://127.0.0.1:8080,如下圖所示

 

至此,我們成功的將 pod 跑起來了

5,使用service描述檔案將 Pod 進行暴露

選擇“Services and ingresses(preview)”,點選 “Add”

 

 我們繼續使用 service 藐視檔案進行建立,這次 Kind(定義Kubernetes資源型別為Service)的型別為 “Service”,type 為 “LoadBalancer”

 

我們可以看到 名字叫 “k8s-net-service1” 的 Type 為 LoadBalancer,External-ip 為 52.184.83.143  cluster-ip 為 10.0.2.134

我們可以在叢集內部使用 10.0.2.134:30000,如果是在叢集外部,可以使用 52.184.83.143:80 進行訪問

瀏覽器訪問 http://52.184.83.143:80,效果如下顯示

 

bingo,撒花,今天的分析到此完結。

三,結尾

  本文,我們建立了AKS服務,並且使用在Azure Portal 上建立屬於自己的 pod,並且使用配置埠轉發供外界訪問,到最後的到了 Service,基本上大家對K8s熟悉的話,上手AKS是非常快的,今天基本上演示了對AKS有了一個基本的認指,下一篇,我們具體講解以下本篇中使用的一個YAML配置,以及暴露Service的時候,關於LoadBalancer的一些問題。

作者:Allen 

版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。

 

相關文章