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:031576

评论

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

数字资产钱包系统软件开发|数字资产钱包APP开发

系统开发

迁移到 Go Modules

Rayjun

Module Go 语言

Java开发不会Redis?Java开发掌握好Redis在面试中是个大加分项。

Java架构之路

Java 程序员 架构 面试 编程语言

学设计模式前先了解下设计模式分类

爱笑的小雨

设计模式

宝马等支持为车辆创建“出生证明” 利用区块链技术跟踪车辆历史

CECBC

宝马

区块链技术解决监管痛点 首批6家券商加入“中证链”节点

CECBC

区块链

开放式API安全防护的七大原则

架构精进之路

API 七日更 28天写作

交易所软件系统开发|交易所APP开发

系统开发

[JetPack] androidx.lifecycle库中ViewModel的新旧版本API差异

Changing Lin

android JetPack

区块链数字货币交易所系统开发|区块链数字货币交易所软件APP开发

系统开发

第九周 性能优化(三) 作业 「架构师训练营 3 期」

胡云飞

第九周命题作业

cc

产品经理训练营笔记-产品思维和产品意识(上)

.nil?

产品经理训练营

动听百年:音乐播放器发展沉浮史

艾小仙

互联网

使用 Docker 部署 RabbitMQ 没有日志?添加这两条配置,轻松搞定

AlwaysBeta

Docker RabbitMQ 消息队列 消息中间件

读任正非“星光不问赶路人”有感

JiangX

华为 战略 28天写作 任正非

一篇让你彻底了解http请求报文和响应报文的结构

Java架构师迁哥

一个系统小BUG修复投产居然花了3个小时来处理(下)

罗小龙

28天写作 投产事故 解决思路

阿里,字节,腾讯,面试题都涵盖了,这一份Java面试文档也太强了

数据库 程序员 面试

设计模式【2.1】-- 简单工厂模式怎么演变成工厂方法模式?

秦怀杂货店

设计模式 工厂模式 23种设计模式

牛掰!阿里人用7部分讲明白百亿级高并发系统(全彩版小册开源)

996小迁

Java 架构 面试 并发’

第九周学习心得

cc

金融 真的需要区块链技术提升效率吗?

CECBC

金融

GoF23 中的对象关系模式!

鲁米

方法论 设计模式 构建模型

理解领域驱动设计

编程 领域驱动设计

提问也是一门学问

xcbeyond

程序人生 方法论 技巧 28天写作

Mybatis【14】-- Mybatis如何实现一对多查询?

秦怀杂货店

数据库 mybatis

小喜量化炒币机器人系统开发|小喜量化炒币机器人APP软件开发

系统开发

备战金三银四,Java程序员看完这十本Java进阶必备书籍,薪资能涨20K

Java架构之路

Java 程序员 架构 面试 编程语言

我是如何学习编程的?

熊斌

学习方法 个人成长 编程之路 28天写作

悟透前端 | 参悟Javascript中的call和apply

devpoint

JavaScript 大前端 call apply

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