2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

  • 2020-05-18
  • 本文字数:1909 字

    阅读完需:约 6 分钟

简单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 集群噢。点击此处,赶紧报名吧!


2020-05-18 18:031568

评论

发布
暂无评论
发现更多内容

Vue进阶(七十九):应用 postMessage 实现父子跨域通信

No Silver Bullet

Vue 跨域 7月日更 跨域通信

BSC币安智能链挖矿模式开发

获客I3O6O643Z97

分布式存储 币安智能链

大数据获取客户系统软件开发源码

获客I3O6O643Z97

大数据

PancakeSwap交易所市值管理机器人开发

Geek_23f0c3

市值管理机器人开发 PancakeSwap交易所 交易所机器人

小程序开发教程,2021Android开发现状分析

欢喜学安卓

android 程序员 面试 移动开发

架构实战营模块2课后作业

hello

架构实战营

回帖送大奖 『和AI在一起』

百度大脑

人工智能 活动 大奖

支持60+数据传输链路,华为云DRS链路商用大盘点

华为云开发者联盟

华为云 DRS

Vue进阶(九十五):addEventListener() 监听事件

No Silver Bullet

Vue 事件监听 7月日更

handler内存泄露,已成功拿下字节、腾讯、脉脉offer

欢喜学安卓

android 程序员 面试 移动开发

鉴释陈新中:源代码安全在物联网时代的重要性

鉴释

物联网 源代码

不保护数据的代价!

鉴释

数据 数据安全

痛苦调优10小时,我把 Spark 脚本运行时间从15小时缩短到12分钟!

小拍Piper

scala spark 计算机 spark-shell spark-env

flutter开发工具,细数Android开发者的艰辛历程

欢喜学安卓

android 程序员 面试 移动开发

深度分享|金融行业模型管理效能提升的规划与思考

索信达控股

大数据 金融科技 金融 风险管理 营销管理

从京东零售云走出来的3D数字人正在触动未来的互动世界

数字经济时代下,区块链如何助力数字产业发展?

旺链科技

区块链 分布式存储 数字经济

互操作性和去信任化的两难困境,到底需要治标还是治本?

CECBC

Camtasia入门技巧之视频剪辑

淋雨

视频剪辑 Camtasia 录屏软件

Python OpenCV 图像的双线性插值算法,全网最细致的算法说明

梦想橡皮擦

Python 7月日更

Pandas高级教程之:自定义选项

程序那些事

Python 数据挖掘 数据分析 pandas 程序那些事

网络攻防学习笔记 Day82

穿过生命散发芬芳

网络攻防 7月日更

Rust从0到1-面向对象编程-Trait 对象

rust oop 面向对象编程 Trait Objects Trait 对象

音视频的这些功能你知道吗?

anyRTC开发者

音视频 屏幕共享 智能降噪

为什么“内存管理”漏洞值得你的绝对关注!

鉴释

代码审查 内存 代码

浪潮云说丨如何对多云进行统一运营

云计算

大数据精准营销APP系统开发源码搭建

获客I3O6O643Z97

大数据 抖音霸屏

JAVA语言异步非阻塞设计模式(应用篇)

有道技术团队

后端 网易有道

关于单元测试的那些事儿,Mockito 都能帮你解决

华为云开发者联盟

测试 Mockito Mock Java 开发 模拟测试框架

Go语言:参数传递中,值、引用及指针之间的区别

微客鸟窝

Go 语言

华为云MVP程云:知识化转型,最终要赋能一线

华为云开发者联盟

人工智能 自然语言处理 机器学习 华为云 智能问答机器人

简单4步,即可在mac上使用k3s部署Jenkins流水线_文化 & 方法_Rancher_InfoQ精选文章