ASP.NET Core on K8S深入学习(2)部署过程解析与部署Dashboard
上一篇《K8S集群部署》中搭建好了一個(gè)最小化的K8S集群,這一篇我們來部署一個(gè)ASP.NET Core WebAPI項(xiàng)目來介紹一下整個(gè)部署過程的運(yùn)行機(jī)制,然后部署一下Dashboard,完成可視化管理。本篇已加入了《.NET Core on K8S學(xué)習(xí)實(shí)踐系列文章索引》,更多內(nèi)容請(qǐng)到索引中查看。
01
—
準(zhǔn)備一個(gè)ASP.NET Core項(xiàng)目
這部分請(qǐng)參考我之前的一篇文章《ASP.NET Core on K8S學(xué)習(xí)初探(3)》,準(zhǔn)備一個(gè)簡(jiǎn)單的ASP.NET Core WebAPI示例項(xiàng)目。
我們可以通過瀏覽器來驗(yàn)證一下是否部署成功了。通過訪問兩個(gè)Node節(jié)點(diǎn)的30409端口,可以得到如下結(jié)果:
? 由于我們的示例WebAPI項(xiàng)目十分簡(jiǎn)單,因此能夠訪問到ValuesController的接口就代表我們已經(jīng)部署到K8S成功了。
02
—
K8S部署過程解析
剛剛我們成功部署了一個(gè)ASP.NET Core WebAPI項(xiàng)目到K8S集群中,由于在yaml中我們?cè)O(shè)置了兩個(gè)Pod副本,他們分別運(yùn)行在了k8s-node1和k8s-node2中:
這里我們來看看整個(gè)部署的過程,大體上過一遍流程,能夠有個(gè)大概印象就可以,下圖主要參考自CloudMan的《每天5分鐘玩轉(zhuǎn)Kubernetes》一書。
(1)Kubectl發(fā)送部署請(qǐng)求到API Server
(2)API Server通知Controller Manager創(chuàng)建一個(gè)deployment資源
(3)Scheduler執(zhí)行調(diào)度任務(wù),將兩個(gè)Pod副本分發(fā)到k8s-node1與k8s-node2
(4)k8s-node1和k8s-node2上的kubectl在各自的節(jié)點(diǎn)上創(chuàng)建并運(yùn)行Pod(當(dāng)然,其中包括了拉取鏡像,創(chuàng)建容器等一系列操作)
另外的補(bǔ)充:
(1)所有應(yīng)用的配置和當(dāng)前狀態(tài)信息都會(huì)保存在etcd中,執(zhí)行kubectl get pod時(shí)API Server會(huì)從etcd中讀取這些數(shù)據(jù)
(2)flannel會(huì)為每個(gè)pod分配IP,這塊先了解到這里就好,后面會(huì)介紹網(wǎng)絡(luò)。
03
—
部署Dashboard
按理說,部署Dashboard就下面一句話:
But,默認(rèn)鏡像國內(nèi)無法訪問,這里曲線救國:
首先,將這個(gè)yaml文件下載下來:
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml其次,通過vim編輯yaml文件中默認(rèn)的鏡像源地址:這里替換為李振良老師的鏡像地址,感謝李振良老師。
containers: - name: kubernetes-dashboard #image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 image: lizhenliang/kubernetes-dashboard-amd64:v1.10.1然后,由于默認(rèn)Dashboard只能集群內(nèi)部訪問,因此修改Service為NodePort類型,暴露到外部可以訪問:
kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kube-system spec: type: NodePort ports: - port: 443 targetPort: 8443 nodePort: 30001 selector: k8s-app: kubernetes-dashboard最后,我們直接apply本地這個(gè)yaml文件來創(chuàng)建Dashboard:
kubectl apply -f kubernetes-dashboard.yaml看到提示“service/kubernetes-dashboard created”代表Dashboard創(chuàng)建成功了,這時(shí)我們通過瀏覽器來訪問一下:
這里如果你通過Chrome訪問提示證書錯(cuò)誤無法訪問,可以通過如下步驟解決:
chrome://net-internals/#hsts找到Delete domain security policies,輸入你的NodeIP地址點(diǎn)擊Delete即可:
接上一步,看到了登錄界面,需要我們配置kubeconfig或輸入token,這里我們選擇后者,通過以下命令獲取輸出的token:
kubectl create serviceaccount dashboard-admin -n kube-system kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')拿到token在登錄界面的令牌區(qū)域輸入,然后點(diǎn)擊登錄:
即可進(jìn)入下圖所示的主界面了:
在Dashboard中,我們通過kubectl所做的操作大部分都可以可視化操作,比如我們可以對(duì)deployment做伸縮:
? 更多內(nèi)容,請(qǐng)期待后續(xù)分享。
04
—
小結(jié)
本文通過部署一個(gè)ASP.NET Core WebAPI到K8S為例,介紹了K8S部署的詳細(xì)過程步驟,最后部署Dashboard從而能夠進(jìn)行可視化的管理。后續(xù)會(huì)探索各種應(yīng)用的運(yùn)行方式和更多的內(nèi)容,當(dāng)然筆者也是初學(xué),有很多不足之處,請(qǐng)多包涵。
參考資料:
(1)CloudMan,《每天5分鐘玩轉(zhuǎn)Kubernetes》
(2)李振良,《一天入門Kubernets教程》
(3)李振良,《30分鐘部署一個(gè)Kubernetes集群》
(4)cao_xiaobo,《K8S部署Dashboard》
恰童鞋騷年,風(fēng)華不再正茂,仍想揮斥方遒
點(diǎn)個(gè)在看少個(gè)bug??
總結(jié)
以上是生活随笔為你收集整理的ASP.NET Core on K8S深入学习(2)部署过程解析与部署Dashboard的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Kubeadm创建k8s集群之节点部
- 下一篇: ASP.NET Core Web Api