.Net Core2.1 秒杀项目一步步实现CI/CD(Centos7)系列二:k8s高可用集群搭建总结以及部署API到k8s...
前言:本系列博客又更新了,是博主研究很長時(shí)間,親自動(dòng)手實(shí)踐過后的心得,k8s集群是購買了5臺(tái)阿里云服務(wù)器部署的,這個(gè)集群差不多搞了一周時(shí)間,關(guān)于k8s的知識(shí)點(diǎn),我也是剛?cè)腴T,這方面的知識(shí)建議參考博客園大神edisonchou的系列文章《.NET Core on K8S學(xué)習(xí)實(shí)踐系列文章索引(Draft版)》,為什么我要寫該系列的文章,是因?yàn)槲抑?工作的幾家公司應(yīng)用都已經(jīng)容器化了,.net framework 應(yīng)用也在慢慢遷移到.net core 上,.net core 從1.0就開始使用了,作為開發(fā)人員,有些細(xì)節(jié)上的東西對開發(fā)人員是封閉的,我們只知道項(xiàng)目開發(fā)完成通過Jenkins構(gòu)建,構(gòu)建完成把鏡像推送到HarBor,然后在禪道上建個(gè)發(fā)布任務(wù),貼上鏡像的地址,發(fā)給運(yùn)維就好了。我就對這個(gè)過程很好奇,業(yè)余時(shí)間也在研究這方面的東西。好了,暫且聊到這里,下面我就分享一下自己在搭建k8s集群的心得,有說的不對的地方還請糾正。
我們都知道Kubernetes自身,側(cè)重穩(wěn)定性、可擴(kuò)展性、安全性;核心策略的變化小;周邊生態(tài)持續(xù)爆發(fā)。k8s搭建的方式有三種:(1)社區(qū)方案:雜亂、不可靠、升級(jí)難(2)kubeadm:優(yōu)雅、簡單、支持高可用、升級(jí)方便、不易維護(hù)、文檔不夠細(xì)致 (3)二進(jìn)制部署,建議初學(xué)者使用二進(jìn)制搭建,因?yàn)榭梢钥焖俜艞?#xff0c;哈哈哈,玩笑歸玩笑,二進(jìn)制的方式易于維護(hù)、靈活、升級(jí)方便。我的k8s集群使用的是二進(jìn)制搭建的,5臺(tái)阿里云的配置 如下:
環(huán)境參數(shù):k8s 1.14.0? Docker 17.03.1-ce ?Harbor 1.6.0? Jenkins v2.150.2,一定 要注意版本問題,
注意:使用云服務(wù)器的,跳過keepalived的配置,不要用虛擬ip(云環(huán)境一般都不支持自己定義虛擬ip)就直接把虛擬ip設(shè)置為第一個(gè)master的ip就可以了。
?PS:如果是一定要高可用的話可以購買云商的負(fù)載均衡服務(wù)(比如阿里云的SLB),把backends設(shè)置成你的三個(gè)master節(jié)點(diǎn),然后虛擬ip就配置成負(fù)載均衡的內(nèi)網(wǎng)ip即可。
具體的集群搭建細(xì)節(jié),我就不列出來了,因?yàn)椴皇侵攸c(diǎn)。
準(zhǔn)備Deployment YAML
這個(gè)YAML文件,引用自Edison Zhou(https://www.cnblogs.com/edisonchou/p/aspnet_core_on_k8s_firststudy_part3.html),在這里我們使用了Edison Zhou的鏡像倉庫?
apiVersion: apps/v1kind: Deployment
metadata:
name: k8s-demo
namespace: aspnetcore
labels:
name: k8s-demo
spec:
replicas: 2
selector:
matchLabels:
name: k8s-demo
template:
metadata:
labels:
name: k8s-demo
spec:
containers:
- name: k8s-demo
image: edisonsaonian/k8s-demo
ports:
- containerPort: 80
imagePullPolicy: Always
---
kind: Service
apiVersion: v1
metadata:
name: k8s-demo
namespace: aspnetcore
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
selector:
name: k8s-demo
這里這個(gè)deploy.yaml就會(huì)告訴K8S關(guān)于你的API的所有信息,以及通過什么樣的方式暴露出來讓外部訪問。
需要注意的是,這里我們提前為要部署的ASP.NET Core WebAPI項(xiàng)目創(chuàng)建了一個(gè)namespace,叫做aspnetcore,因此這里寫的namespace : aspnetcore。
K8S中通過標(biāo)簽來區(qū)分不同的服務(wù),因此這里統(tǒng)一name寫成了k8s-demo。
在多實(shí)例的配置上,通過replicas : 2這個(gè)設(shè)置告訴K8S給我啟動(dòng)2個(gè)實(shí)例起來,當(dāng)然你可以寫更大的一個(gè)數(shù)量值。
最后,在spec中告訴K8S我要通過NodePort的方式暴露出來公開訪問,因此端口范圍從上一篇可以知道,應(yīng)該是 30000-32767這個(gè)范圍之內(nèi)。
通過kubectl 部署到k8s
需要先后執(zhí)行以下命令:
kubectl create namespace aspnetcore // 創(chuàng)建一個(gè)命名空間“aspnetcore”cd aspnetcore/vim deploy.yaml //將上面的配置寫入該文件中
kubectl create -f deploy.yaml[root@m7-a2-15-43 aspnetcore]# kubectl get svc -n aspnetcore
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
k8s-demo NodePort 10.254.180.117 <none> 80:8671/TCP 4h55m
可以看到在命名空間aspnetcore下,就有一個(gè)k8s-demo的服務(wù)運(yùn)行起來了,并通過端口號(hào)8671向外提供訪問。
驗(yàn)證WebAPI是否可以訪問
首先,在瀏覽器中訪問API接口,看看是否能正常訪問:http://公網(wǎng)IP:8671/api/values
然后,我們再到Dashboard中,看看k8s-demo的狀態(tài):
我們點(diǎn)擊命名空間,選擇:aspnetcore
當(dāng)然了,你也可以直接點(diǎn)擊:“集群”選項(xiàng)下面的“命名空間”,點(diǎn)擊對應(yīng)的名稱,里面可以看到詳細(xì)的信息。從Dashboard中可以看到更為詳細(xì)的信息,包括運(yùn)行的Deployment、容器組(由于我們設(shè)置的replicas=2,因此會(huì)有2個(gè)容器運(yùn)行起來)、副本集等等,也可以通過Dashboard實(shí)時(shí)初步地監(jiān)控我們的API的運(yùn)行情況。
通過Dashboard伸縮WebAPI
在Dashboard中,我們可以可視化地對我們的Deployment進(jìn)行容器實(shí)例的伸縮,具體操作可以參考:https://www.cnblogs.com/edisonchou/p/aspnet_core_on_k8s_firststudy_part3.html,這里我就不再多說了。
本文,簡單總結(jié)了一下使用阿里云部署高可用k8s集群,可能有同學(xué)說怎么不詳細(xì)寫一下部署的過程呢?由于時(shí)間倉促,部署的過程文檔還在整理中,況且,部署的過程和該系列文章的主題不符,大家可以參考其他文章,關(guān)于Dashboard,一般企業(yè)內(nèi)部是不會(huì)使用的,都是自研的,只需要了解即可。該篇文章的目的,是 想讓大家體驗(yàn)一下所謂的容器編排,以及asp.net core on k8s。筆者也是剛接觸,有很多東西需要學(xué)習(xí),這只是k8s的一點(diǎn)點(diǎn),因?yàn)檫€沒用到生產(chǎn) 環(huán)境,需要觀察一段時(shí)間,后期,我把部署的過程整理一下,再分享給大家。提前預(yù)告一下篇博客的主題:Jenkins+k8s,實(shí)現(xiàn)CI/CD,敬請期待。
這是該系類博客要使用的項(xiàng)目:https://github.com/guozheng007/asp.net-core2.1-miaosha-project
Edison Zhou:https://www.cnblogs.com/edisonchou/p/aspnet_core_on_k8s_firststudy_part3.html
劉果國:https://coding.imooc.com/class/335.html(付費(fèi)課程366.00)
原文鏈接:https://www.cnblogs.com/runningsmallguo/p/11345620.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總?http://www.csharpkit.com?
總結(jié)
以上是生活随笔為你收集整理的.Net Core2.1 秒杀项目一步步实现CI/CD(Centos7)系列二:k8s高可用集群搭建总结以及部署API到k8s...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 博客园升级有感一点建议
- 下一篇: 使用Asp.net Core3Blazo