ASP.NET Core on K8S深入學習(2)部署過程解析與部署Dashboard

ASP.NET Core on K8S深入學習(2)部署過程解析與部署Dashboard

上一篇《K8S集群部署》中搭建好了一個最小化的K8S集群,這一篇我們來部署一個ASP.NET Core WebAPI項目來介紹一下整個部署過程的運行機制,然後部署一下Dashboard,完成可視化管理。本篇已加入了《.NET Core on K8S學習實踐系列文章索引》,更多內容請到索引中查看。

01

準備一個ASP.NET Core項目

這部分請參考我之前的一篇文章《ASP.NET Core on K8S學習初探(3)》,準備一個簡單的ASP.NET Core WebAPI示例項目。

其中,你可以直接使用我上傳的這個鏡像(edisonsaonian/k8s-demo)。
ASP.NET Core on K8S深入學習(2)部署過程解析與部署Dashboard

我們可以通過瀏覽器來驗證一下是否部署成功了。通過訪問兩個Node節點的30409端口,可以得到如下結果:

ASP.NET Core on K8S深入學習(2)部署過程解析與部署Dashboard

ASP.NET Core on K8S深入學習(2)部署過程解析與部署Dashboard

由於我們的示例WebAPI項目十分簡單,因此能夠訪問到ValuesController的接口就代表我們已經部署到K8S成功了。

02

K8S部署過程解析

剛剛我們成功部署了一個ASP.NET Core WebAPI項目到K8S集群中,由於在yaml中我們設置了兩個Pod副本,他們分別運行在了k8s-node1和k8s-node2中:

ASP.NET Core on K8S深入學習(2)部署過程解析與部署Dashboard

這裡我們來看看整個部署的過程,大體上過一遍流程,能夠有個大概印象就可以,下圖主要參考自CloudMan的《每天5分鐘玩轉Kubernetes》一書。

ASP.NET Core on K8S深入學習(2)部署過程解析與部署Dashboard

(1)Kubectl發送部署請求到API Server

(2)API Server通知Controller Manager創建一個deployment資源

(3)Scheduler執行調度任務,將兩個Pod副本分發到k8s-node1與k8s-node2

(4)k8s-node1和k8s-node2上的kubectl在各自的節點上創建並運行Pod(當然,其中包括了拉取鏡像,創建容器等一系列操作)

另外的補充:

(1)所有應用的配置和當前狀態信息都會保存在etcd中,執行kubectl get pod時API Server會從etcd中讀取這些數據

(2)flannel會為每個pod分配IP,這塊先了解到這裡就好,後面會介紹網絡。

03

部署Dashboard

按理說,部署Dashboard就下面一句話:

kubectl apply -f \\https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

But,默認鏡像國內無法訪問,這裡曲線救國:

首先,將這個yaml文件下載下來:

wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

其次,通過vim編輯yaml文件中默認的鏡像源地址:這裡替換為李振良老師的鏡像地址,感謝李振良老師。

 containers: - name: kubernetes-dashboard #image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 image: lizhenliang/kubernetes-dashboard-amd64:v1.10.1

然後,由於默認Dashboard只能集群內部訪問,因此修改Service為NodePort類型,暴露到外部可以訪問:

kind: ServiceapiVersion: v1metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kube-systemspec: type: NodePort ports: - port: 443 targetPort: 8443 nodePort: 30001 selector: k8s-app: kubernetes-dashboard

最後,我們直接apply本地這個yaml文件來創建Dashboard:

kubectl apply -f kubernetes-dashboard.yaml

看到提示“service/kubernetes-dashboard created”代表Dashboard創建成功了,這時我們通過瀏覽器來訪問一下:

ASP.NET Core on K8S深入學習(2)部署過程解析與部署Dashboard

這裡如果你通過Chrome訪問提示證書錯誤無法訪問,可以通過如下步驟解決:

chrome://net-internals/#hsts

找到Delete domain security policies,輸入你的NodeIP地址點擊Delete即可:

ASP.NET Core on K8S深入學習(2)部署過程解析與部署Dashboard

接上一步,看到了登錄界面,需要我們配置kubeconfig或輸入token,這裡我們選擇後者,通過以下命令獲取輸出的token:

kubectl create serviceaccount dashboard-admin -n kube-systemkubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-adminkubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

拿到token在登錄界面的令牌區域輸入,然後點擊登錄:

ASP.NET Core on K8S深入學習(2)部署過程解析與部署Dashboard

即可進入下圖所示的主界面了:

ASP.NET Core on K8S深入學習(2)部署過程解析與部署Dashboard

在Dashboard中,我們通過kubectl所做的操作大部分都可以可視化操作,比如我們可以對deployment做伸縮:

ASP.NET Core on K8S深入學習(2)部署過程解析與部署Dashboard

更多內容,請期待後續分享。

04

小結

本文通過部署一個ASP.NET Core WebAPI到K8S為例,介紹了K8S部署的詳細過程步驟,最後部署Dashboard從而能夠進行可視化的管理。後續會探索各種應用的運行方式和更多的內容,當然筆者也是初學,有很多不足之處,請多包涵。

(1)CloudMan,《每天5分鐘玩轉Kubernetes》

(2)李振良,《一天入門Kubernets教程》

(3)李振良,《30分鐘部署一個Kubernetes集群》

(4)cao_xiaobo,《K8S部署Dashboard》

恰童鞋騷年,風華不再正茂,仍想揮斥方遒


分享到:


相關文章: