简单4步,即可在mac上使用k3s部署Jenkins流水线
收藏

昨天的文章中,我们已经在mac上成功运行k3s了。那么,今天我们更进一步,在上面部署Jenkins流水线,正好看看k3s实际使用状况如何。


和昨天的步骤类似,但是VM的内存设置不同:


1、 准备Multipass VM和安装k3s


让我们创建一个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文件到主机


multipass copy-files k3s:/etc/rancher/k3s/k3s.yaml .


使用命令:multipass info k3s,列出k3s的信息,以获取IP地址,将服务器地址从https://localhost:6443替换为https://192.168.64.5:6443,导出kubeconfig,确认节点是否正常工作。


现在我们已经准备好开发k3s的环境。我们不需要进入VM,因为主机的kubectl命令行已经够用了。


2、 动态存储类


我们需要提供动态存储,以便完成一些实际工作。我们使用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.yamlkubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'


现在我们已经准备好动态存储类了。


3、 部署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


4、 访问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集群噢。点击此处,赶紧报名吧!


推荐阅读

Rancher发布K3s!史上最轻量K8s发行版,赋能边缘计算

著名FinTech公司如何使用k3s+树莓派在生产中构建轻量K8S裸机集群

K3s x Traefik:边缘计算环境中的极简Ingress管理

About Rancher Labs



Rancher Labs由CloudStack之父梁胜创建。旗舰产品Rancher是一个开源的企业级Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理。Rancher一向因操作体验的直观、极简备受用户青睐,被Forrester评为2018年全球容器管理平台领导厂商,被Gartner评为2017年全球最酷的云基础设施供应商。


目前Rancher在全球拥有超过一亿的下载量,并拥有包括中国人寿、华为、中国平安、兴业银行、民生银行、平安证券、海航科技、厦门航空、上汽集团、海尔、米其林、丰田、本田、中船重工、中联重科、迪斯尼、IBM、Cisco、Nvidia、辉瑞制药、西门子、CCTV、中国联通等全球著名企业在内的共25000家企业客户。

点击阅读原文,报名技术沙龙啦!

↓↓↓