在上篇文章中,我們已經(jīng)在mac上成功運(yùn)行k3s了。那么,今天我們更進(jìn)一步,在上面部署Jenkins流水線,正好看看k3s實(shí)際使用狀況如何。
?
創(chuàng)新互聯(lián)建站是專業(yè)的東風(fēng)網(wǎng)站建設(shè)公司,東風(fēng)接單;提供成都做網(wǎng)站、網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行東風(fēng)網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
?
和昨天的步驟類似,但是VM的內(nèi)存設(shè)置不同:
?
1、 準(zhǔn)備Multipass VM和安裝k3s
?
讓我們創(chuàng)建一個(gè)2GB內(nèi)存和50GB磁盤(pán)的VM
?
multipass launch --name k3s --mem 2G --disk 50G
?
安裝k3s的方法也是一樣的,但是你需要時(shí)刻檢查正在運(yùn)行的腳本
?
multipass exec k3s -- sh -c "curl -sfL https://get.k3s.io | sh -"
?
復(fù)制kubeconfig文件到主機(jī)
?
multipass copy-files k3s:/etc/rancher/k3s/k3s.yaml .
?
使用命令:multipass info k3s
,列出k3s的信息,以獲取IP地址,將服務(wù)器地址從https://localhost:6443 替換為https://192.168.64.5:6443 ,導(dǎo)出kubeconfig,確認(rèn)節(jié)點(diǎn)是否正常工作。
?
現(xiàn)在我們已經(jīng)準(zhǔn)備好開(kāi)發(fā)k3s的環(huán)境。我們不需要進(jìn)入VM,因?yàn)橹鳈C(jī)的kubectl命令行已經(jīng)夠用了。
?
2、 動(dòng)態(tài)存儲(chǔ)類
?
我們需要提供動(dòng)態(tài)存儲(chǔ),以便完成一些實(shí)際工作。我們使用local volume provisioner(https://github.com/rancher/local-path-provisioner )來(lái)達(dá)成這一目的。下載yaml文件并在使用之前檢查一下。
?
curl -LO https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml
?
應(yīng)用它并修改此類存儲(chǔ)類為默認(rèn)存儲(chǔ)。
?
kubectl apply -f local-path-storage.yaml
kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
?
現(xiàn)在我們已經(jīng)準(zhǔn)備好動(dòng)態(tài)存儲(chǔ)類了。
?
3、 部署Jenkins Helm Chart
?
k3s通過(guò)提供CRD來(lái)實(shí)現(xiàn)內(nèi)置支持HelmChart。我們不需要部署tiller組件,甚至不需要helm命令。
?
讓我們根據(jù)以下代碼創(chuàng)建一個(gè)HelmChart CRD
?
apiVersion: k3s.cattle.io/v1
kind: HelmChart
metadata:
name: jenkins
namespace: kube-system
spec:
chart: stable/jenkins
targetNamespace: jenkins
valuesContent: |-
Master:
AdminUser: {{ .adminUser }}
AdminPassword: {{ .adminPassword }}
rbac:
install: true
?
請(qǐng)注意,在元數(shù)據(jù)中的命名空間用于HelmChart對(duì)象。k3s在kube-sysytem中監(jiān)控CRD對(duì)象,如果創(chuàng)建了任一新的HelmChart對(duì)象,將啟動(dòng)Helm安裝job。
?
Chart定義要部署哪個(gè)repo和Helm Chart。Jenkins應(yīng)該位于目標(biāo)命名空間中。我沒(méi)有使用readme示例中的“set”關(guān)鍵字,而是使用valuesContent,這樣可以在其中應(yīng)用與Chart的value.yaml文件相同的格式。
?
無(wú)需改變Jenkins,將文件另存為jenkins.yaml。創(chuàng)建目標(biāo)命名空間,并將其作為Kubernetes對(duì)象yaml文件應(yīng)用它。
?
kubectl create ns jenkins
kubectl apply -f jenkins.yaml
?
開(kāi)始監(jiān)控Helm安裝job
?
kubectl -n kube-system get pods
NAME READY STATUS RESTARTS AGE
coreDNS-7748f7f6df-g6rgw 1/1 Running 0 138m
helm-install-jenkins-txxjn 0/1 Completed 0 111m
helm-install-traefik-bnc5x 0/1 Completed 0 138m
svclb-traefik-b65f58f65-rxllp 2/2 Running 0 138m
traefik-5cc8776646-nfclx 1/1 Running 0 138m
?
驗(yàn)證PVC是否綁定
?
kubectl -n jenkins get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
jenkins Bound pvc-18988281-4d45-11e9-b75c-5ef9efd9374c 8Gi RWO local-path 113m
?
同時(shí)還要驗(yàn)證pod是否正在運(yùn)行。
?
kubectl -n jenkins get pods
NAME READY STATUS RESTARTS AGE
jenkins-6b6f58bc8d-hbf4r 1/1 Running 0 113m
svclb-jenkins-74fdf6b9f4-zxnwz 1/1 Running 0 113m
?
4、 訪問(wèn)Jenkins
?
尋找service port
?
kubectl -n jenkins get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
jenkins LoadBalancer 10.43.75.62 192.168.64.5 8080:30254/TCP 115m
jenkins-agent ClusterIP 10.43.239.13 50000/TCP 115m
?
現(xiàn)在,我們可以通過(guò) http://192.168.64.5:8080. 訪問(wèn)Jenkins,如下所示:
?
?
如果你還想了解更多關(guān)于k3s的使用技巧,歡迎參加10月26日在深圳舉辦的k3s線下workshop,將由Rancher Labs資深架構(gòu)師為你詳細(xì)介紹k3s的功能、特性以及使用場(chǎng)景,并進(jìn)行現(xiàn)場(chǎng)demo,還會(huì)帶你一起用自己的筆記本搭建k3s集群噢。點(diǎn)擊此處,趕緊報(bào)名吧!
?
歡迎添加小助手(×××:×××),進(jìn)官方技術(shù)群,了解更多Kubernetes使用攻略