在上篇文章中,咱们已经在mac上成功运行k3s了。那么,今天咱们更进一步,在上面部署Jenkins流水线,正好看看k3s实际使用情况如何。node
和昨天的步骤相似,可是VM的内存设置不一样:git
一、 准备Multipass VM和安装k3sgithub
让咱们建立一个2GB内存和50GB磁盘的VMapi
multipass launch --name k3s --mem 2G --disk 50G复制代码
安装k3s的方法也是同样的,可是你须要时刻检查正在运行的脚本
bash
multipass exec k3s -- sh -c "curl -sfL https://get.k3s.io | sh -"复制代码
复制kubeconfig文件到主机服务器
multipass copy-files k3s:/etc/rancher/k3s/k3s.yaml .复制代码
使用命令:multipass info k3s,列出k3s的信息,以获取IP地址,将服务器地址从https://localhost:6443替换为https://192.168.64.5:6443,导出kubeconfig,确认节点是否正常工做。架构
export KUBECONFIG=k3s.yamlkubectl get nodes复制代码
如今咱们已经准备好开发k3s的环境。咱们不须要进入VM,由于主机的kubectl命令行已经够用了。app
二、 动态存储类curl
咱们须要提供动态存储,以便完成一些实际工做。咱们使用local volume provisioner(https://github.com/rancher/local-path-provisioner)来达成这一目的。下载yaml文件并在使用以前检查一下。ui
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/v1kind: HelmChartmetadata: name: jenkins namespace: kube-systemspec: 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 jenkinskubectl apply -f jenkins.yaml复制代码
开始监控Helm安装job
kubectl -n kube-system get podsNAME READY STATUS RESTARTS AGEcoredns-7748f7f6df-g6rgw 1/1 Running 0 138mhelm-install-jenkins-txxjn 0/1 Completed 0 111mhelm-install-traefik-bnc5x 0/1 Completed 0 138msvclb-traefik-b65f58f65-rxllp 2/2 Running 0 138mtraefik-5cc8776646-nfclx 1/1 Running 0 138m复制代码
验证PVC是否绑定
kubectl -n jenkins get pvcNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGEjenkins Bound pvc-18988281-4d45-11e9-b75c-5ef9efd9374c 8Gi RWO local-path 113m复制代码
同时还要验证pod是否正在运行。
kubectl -n jenkins get podsNAME READY STATUS RESTARTS AGEjenkins-6b6f58bc8d-hbf4r 1/1 Running 0 113msvclb-jenkins-74fdf6b9f4-zxnwz 1/1 Running 0 113m复制代码
四、 访问Jenkins
寻找服务端口
kubectl -n jenkins get svcNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEjenkins LoadBalancer 10.43.75.62 192.168.64.5 8080:30254/TCP 115mjenkins-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集群噢。点击此处,赶忙报名吧!