Azure Kubernetes Service 入門

一,引言

  上一節,我們使用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

 

 

 瀏覽器訪問 //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 進行訪問

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

 

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

三,結尾

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

作者:Allen 

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

 

Tags: