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

评论

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

Django API 开发:Todo 应用的 React 前端

宇宙之一粟

django React API 6月月更

安势信息加入Linux基金会OpenChain项目,助力软件供应链安全

安势信息

Linux 开源 DevSecOps SCA 开源软件

Agora Web UIKit:快速构建视频通话或直播

devpoint

React 直播技术 视频通话

云图说丨应用宕机怎么办?MAS帮您实现业务无缝切换

华为云开发者联盟

云计算 MAS 宕机 多云高可用服务

深入剖析 | HeartBeat方案的标准设计

九叔(高翔龙)

架构 dubbo 源码解析 HeartBeat 心跳设计

MixNet解析以及pytorch源码

AI浩

人工智能 6月月更

磁盘I/O性能测试工具

穿过生命散发芬芳

6月月更 磁盘测试工具

在线HTML转PERL工具

入门小站

工具

天猫精灵的自定义语音技能创建流程

汪子熙

人工智能 机器学习 机器人 机器人流程自动化 6月月更

应用实践|Lifewit 数据平台基于Apache Doris的建设实践

SelectDB

数据库 数据仓库 apache doris SelectDB

儿童节,和 AI 一起通关 “超级马里奥兄弟”

华为云开发者联盟

换个角度带你学C语言的基本数据类型

华为云开发者联盟

开发 C语言 数据类型位数

对话ACE第三期:数据库技术生态应如何构建

OceanBase 数据库

oceanbase

ObserverPattern-观察者模式

梁歪歪 ♚

设计模式

InfoQ 极客传媒 15 周年庆征文|深入理解 ELK 中 Logstash 的底层原理 + 填坑指南

悟空聊架构

运维 Logstash ELK 6月月更 InfoQ极客传媒15周年庆

科技成就伟大游戏 | 2022 亚马逊云科技游戏开发者大会

亚马逊云科技 (Amazon Web Services)

开发者 亚马逊云

MSVC编译动态库

Loken

音视频 5月月更

StrategyPattern-策略模式

梁歪歪 ♚

设计模式

TemplateMethodPattern-模板方法模式

梁歪歪 ♚

设计模式

在线数字转成人民币大写

入门小站

工具

leetcode 547. Number of Provinces 省份数量(中等)

okokabcd

LeetCode 搜索

linux之同时监控多个日志文件变化

入门小站

Linux

【愚公系列】2022年06月 二十三种设计模式(十九)-观察者模式(Observer Pattern)

愚公搬代码

6月月更

特别的儿童节,OceanBase 送上一份特别的惊喜

OceanBase 数据库

oceanbase

对不起,我错了,这代码不好写

捉虫大师

Java Go sentinel 6月月更

字节跳动一站式数据治理解决方案及平台架构

字节跳动数据平台

数据治理 元数据

2022 核心服务动手训练营

亚马逊云科技 (Amazon Web Services)

Amazon 亚马逊云

ConcurrentLinkedQueue

急需上岸的小谢

6月月更

彰显个性│博客园的自定义主题

主题 可视化看板 6月月更

常遇到读多写少,教你用ReadWriteLock实现一个通用的缓存中心

华为云开发者联盟

缓存 高并发 开发 ReadWriteLock

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