在上篇文章中,咱們已經在mac上成功運行k3s了。那麼,今天咱們更進一步,在上面部署Jenkins流水線,正好看看k3s實際使用情況如何。git
和昨天的步驟相似,可是VM的內存設置不一樣:github
一、 準備Multipass VM和安裝k3sapi
讓咱們建立一個2GB內存和50GB磁盤的VM服務器
multipass launch --name k3s --mem 2G --disk 50G
安裝k3s的方法也是同樣的,可是你須要時刻檢查正在運行的腳本架構
multipass exec k3s -- sh -c "curl -sfL https://get.k3s.io | sh -"
複製kubeconfig文件到主機app
multipass copy-files k3s:/etc/rancher/k3s/k3s.yaml .
使用命令:multipass info k3s
,列出k3s的信息,以獲取IP地址,將服務器地址從https://localhost:6443 替換爲https://192.168.64.5:6443 ,導出kubeconfig,確認節點是否正常工做。curl
如今咱們已經準備好開發k3s的環境。咱們不須要進入VM,由於主機的kubectl命令行已經夠用了。url
二、 動態存儲類spa
咱們須要提供動態存儲,以便完成一些實際工做。咱們使用local volume provisioner(https://github.com/rancher/local-path-provisioner )來達成這一目的。下載yaml文件並在使用以前檢查一下。命令行
curl -LO https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml
應用它並修改此類存儲類爲默認存儲。
kubectl apply -f local-path-storage.yaml kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
如今咱們已經準備好動態存儲類了。
三、 部署Jenkins Helm Chart
k3s經過提供CRD來實現內置支持HelmChart。咱們不須要部署tiller組件,甚至不須要helm命令。
讓咱們根據如下代碼建立一個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
請注意,在元數據中的命名空間用於HelmChart對象。k3s在kube-sysytem中監控CRD對象,若是建立了任一新的HelmChart對象,將啓動Helm安裝job。
Chart定義要部署哪一個repo和Helm Chart。Jenkins應該位於目標命名空間中。我沒有使用readme示例中的「set」關鍵字,而是使用valuesContent,這樣能夠在其中應用與Chart的value.yaml文件相同的格式。
無需改變Jenkins,將文件另存爲jenkins.yaml。建立目標命名空間,並將其做爲Kubernetes對象yaml文件應用它。
kubectl create ns jenkins kubectl apply -f jenkins.yaml
開始監控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
驗證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
同時還要驗證pod是否正在運行。
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
四、 訪問Jenkins
尋找服務端口
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 <none> 50000/TCP 115m
如今,咱們能夠經過 http://192.168.64.5:8080. 訪問Jenkins,以下所示:
若是你還想了解更多關於k3s的使用技巧,歡迎參加10月26日在深圳舉辦的k3s線下workshop,將由Rancher Labs資深架構師爲你詳細介紹k3s的功能、特性以及使用場景,並進行現場demo,還會帶你一塊兒用本身的筆記本搭建k3s集羣噢。點擊此處,趕忙報名吧!
歡迎添加小助手(wx:rancher2),進官方技術羣,瞭解更多Kubernetes使用攻略