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

 

 

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM