一,引言
上一節,我們使用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
版權:轉載請在文章明顯位置注明作者及出處。如發現錯誤,歡迎批評指正。