k8s安装Jenkins
目录
编辑
一、环境准备
1.1 环境说明
二、安装nfs
2.1 安装NFS
2.2 创建NFS共享文件夹
2.3 配置共享文件夹
2.4 使配置生效
2.5 查看所有共享目录
2.6 启动nfs
2.7 其他节点安装nfs-utils
三、创建PVC卷
3.1 创建namespace
3.2 创建nfs 客户端sa授权
3.3 创建nfs 客户端
3.4 创建StorageClass
3.5 创建PVC卷
四、创建Service
五、创建deployment
六、登录验证
6.1 登录
一、环境准备
1.1 环境说明
本文搭建MongoDB,基于WMware虚拟机,操作系统CentOS 8,且已经基于Kubeadm搭好了k8s集群,k8s节点信息如下:
| 服务器 | IP地址 |
| master | 192.168.31.80 |
| node1 | 192.168.31.8 |
| node2 | 192.168.31.9 |
如需知道k8s集群搭建,可跳转我的文章《kubeadm部署k8s集群》查看。
二、安装nfs
2.1 安装NFS
我选择在 master 节点创建 NFS 存储,首先执行如下命令安装 NFS:
yum -y install nfs-utils rpcbind
2.2 创建NFS共享文件夹
mkdir -p /var/nfs/jenkins/pv1
2.3 配置共享文件夹
vim /etc/exports/var/nfs/jenkins/pv1 *(rw,sync,no_root_squash)
2.4 使配置生效
exportfs -r
2.5 查看所有共享目录
exportfs -v

2.6 启动nfs
systemctl start nfs-server
systemctl enabled nfs-server
systemctl start rpcbind
systemctl enabled rpcbind
2.7 其他节点安装nfs-utils
yum -y install nfs-utils
三、创建PVC卷
PVC是资源的申请,用来声明对存储空间、访问模式、存储类别需求信息。在创建PVC卷之前,需要创建NFS客户端、NFS 客户端sa授权和StoreClass存储类。
3.1 创建namespace
kubectl create ns jenkins
3.2 创建nfs 客户端sa授权
cat > jenkins-nfs-client-sa.yamlapiVersion: v1
kind: ServiceAccount
metadata:name: jenkins-nfs-clientnamespace: jenkins
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: jenkins-nfs-client-runnernamespace: jenkins
rules:- apiGroups: [""]resources: ["persistentvolumes"]verbs: ["get","list","watch","create","delete"]- apiGroups: [""]resources: ["persistentvolumeclaims"]verbs: ["get","list","watch","create","delete"]- apiGroups: ["storage.k8s.io"]resources: ["storageclasses"]verbs: ["get","list","watch"]- apiGroups: [""]resources: ["events"]verbs: ["get","list","watch","create","update","patch"]- apiGroups: [""]resources: ["endpoints"]verbs: ["create","delete","get","list","watch","patch","update"]---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: jenkins-run-nfs-provisionernamespace: jenkins
subjects:- kind: ServiceAccountname: jenkins-nfs-clientnamespace: jenkins
roleRef:kind: ClusterRolename: jenkins-nfs-client-runnerapiGroup: rbac.authorization.k8s.io
3.3 创建nfs 客户端
cat > jenkins-nfs-client.yamlapiVersion: apps/v1
kind: Deployment
metadata:name: jenkins-nfs-clientlabels:app: jenkins-nfs-client# replace with namespace where provisioner is deployednamespace: jenkins
spec:replicas: 1strategy:type: Recreateselector:matchLabels:app: jenkins-nfs-clienttemplate:metadata:labels:app: jenkins-nfs-clientspec:serviceAccountName: jenkins-nfs-clientcontainers:- name: jenkins-nfs-clientimage: quay.io/external_storage/nfs-client-provisioner:latestvolumeMounts:- name: jenkins-nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAME ## 这个名字必须与storegeclass里面的名字一致value: my-jenkins-nfs- name: ENABLE_LEADER_ELECTION ## 设置高可用允许选举,如果replicas参数等于1,可不用value: "True"- name: NFS_SERVERvalue: 192.168.31.80 #修改为自己的ip(部署nfs的机器ip)- name: NFS_PATHvalue: /var/nfs/jenkins #修改为自己的nfs安装目录volumes:- name: jenkins-nfs-client-rootnfs:server: 192.168.31.80 #修改为自己的ip(部署nfs的机器ip)path: /var/nfs/jenkins #修改为自己的nfs安装目录
3.4 创建StorageClass
cat > jenkins-storeclass.yamlapiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: jenkins-nfs-storagenamespace: jenkins
provisioner: my-jenkins-nfs
3.5 创建PVC卷
cat > jenkins-pvc.yamlapiVersion: v1
kind: PersistentVolumeClaim
metadata:name: jenkins-pvcnamespace: jenkinslabels:pvc: jenkins-pvc # 自定义
spec:storageClassName: jenkins-nfs-storageaccessModes:- ReadWriteOnceresources:requests:storage: 20G
四、创建Service
cat > jenkins-service.yamlapiVersion: v1
kind: Service
metadata:name: jenkins-servicenamespace: jenkinsannotations:prometheus.io/scrape: 'true' #这一段是官方文档带的,是用来让prometheus(普罗米修斯)来识别pod的,可暂时不用管他prometheus.io/path: /prometheus.io/port: '8080'
spec:selector:app: jenkins-servertype: NodePortports:- name: httpport: 8080targetPort: 8080nodePort: 32000- name: agentport: 50000targetPort: 50000nodePort: 50000
提示:
如果50000端口没挂载上,需要修改kube-apiserver.yaml
vim /etc/kubernetes/manifests/kube-apiserver.yaml- --service-node-port-range=3000-55000 #这行默认没有,自己给他加上,那端口范围我就不用解释了吧
五、创建deployment
cat > jenkins-deployment.yamlapiVersion: apps/v1
kind: Deployment
metadata:name: jenkinsnamespace: jenkins
spec:replicas: 1selector:matchLabels:app: jenkins-servertemplate:metadata:labels:app: jenkins-serverspec:securityContext:fsGroup: 1000runAsUser: 1000serviceAccountName: jenkins-nfs-clientcontainers:- name: jenkinsimage: jenkins/jenkins:2.369 #镜像这里用这个就行,版本是2.369,官方文档的镜像版本太低,好像是2.2版本的,不支持一些插件imagePullPolicy: IfNotPresentports:- name: httpportcontainerPort: 8080- name: jnlpportcontainerPort: 50000volumeMounts:- name: jenkins-datamountPath: /var/jenkins_home #这里为jenkins工作目录,挂载出来就好了,这样重启jenkins数据也不会丢失volumes:- name: jenkins-datapersistentVolumeClaim:claimName: jenkins-pvcreadOnly: false
六、登录验证
6.1 登录
进入k8s页面,进入到jenkins的deploment服务工作页面,找到服务的ip

然后浏览器输入访问地址:
Sign in [Jenkins]

输出默认的admin登录,密码初始密码在安装jenkins的 /var/jenkins_home/secrets/initialAdminPassword
可以cat /var/jenkins_home/secrets/initialAdminPassword 打印出来,复制粘贴出来登录
登录之后,可以创建自己的账号和密码

好了,今天的在k8s中部署jenkins就分享到这里!欢约大家点赞+收藏,有疑问也欢迎大家评论留言!
相关文章:
k8s安装Jenkins
目录 编辑 一、环境准备 1.1 环境说明 二、安装nfs 2.1 安装NFS 2.2 创建NFS共享文件夹 2.3 配置共享文件夹 2.4 使配置生效 2.5 查看所有共享目录 2.6 启动nfs 2.7 其他节点安装nfs-utils 三、创建PVC卷 3.1 创建namespace 3.2 创建nfs 客户端sa授权 3.3 创建…...
共筑开源新长城 龙蜥社区走进开放原子校源行-清华大学站
6 月 28 日,以“聚缘于校,开源共行”为主题的 2023 年开放原子校源行活动在清华大学成功举行。本次活动由开放原子开源基金会和清华大学共同主办,来自各行业的 22 位大咖共聚校园共话开源。龙蜥社区技术专家边子政受邀进行技术分享࿰…...
Jgit 工具类 (代码检出、删除分支(本地、远程)、新建分支、切换分支、代码提交)
https://blog.csdn.net/qq_37203082/article/details/120327084 Jgit 工具类 (代码检出、删除分支(本地、远程)、新建分支、切换分支、代码提交)_jgit删除远程分支_CJ点的博客-CSDN博客 <!--JAVA操作GIT--><dependency><groupId>org.…...
什么是redux?如何在react 项目中使用redux?
redux 概念 redux是一种用于管理JavaScript应用程序的状态管理库。它可以与React、Augular、Vue等前端框架结合使用,但也可以纯在JavaScript应用程序中独立使用。redux遵循单项数据流的原则,通过一个全局的状态树来管理应用程序的状态,从而使…...
mysql的json处理
写在前面 需要注意,5.7以上版本才支持,但如果是生产环境需要使用的话,尽量使用8.0版本,因为8.0版本对json处理做了比较大的性能优化。你你可以使用select version();来查看版本信息。 本文看下MySQL的json处理。在正式开始让我们先…...
前端学习——Vue (Day8)
Vue3 create-vue搭建Vue3项目 注意要使用nodejs16.0版本以上,windows升级node可以西安使用where node查看本地node位置,然后到官网下载msi文件,在本地路径下安装即可 安装完可以使用node -v检查版本信息 项目目录和关键文件 组合式API - s…...
Windows环境下安装及部署Nginx
一、安装Nginx教程 1、官网下载地址:https://nginx.org/en/download.html 2、下载教程:选择Stable version版本下载到本地 3、下载完成后,解压放入本地非中文的文件夹中: 4、启动nginx:双击nginx.exe,若双击…...
使用AOP切面对返回的数据进行脱敏的问题
1.注解类 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/*** Author: xiaoxin* Date: 2023/7/21 17:15*/ Retention(RetentionPolicy.RUNTIME) Targe…...
TDengine时区设置
一般来说,时序数据就是带有时间序列属性的数据。在处理时序数据时,TDengine有着自己独特的方式。但是如果没有正确理解TDengine在写入和查询上的行为,极可能会因为配置了错误的时区(timezone),而导致写入和…...
站外引流效果差?一文带你搞懂解海外主流社交媒体算法!
在流量成本越来越高的当下,无论是平台卖家还是独立站卖家都在努力拓展流量渠道。站外引流是推动业务增长的关键策略,很多卖家会把重点放在内容营销上,但其实除了做好内容之前,了解社交媒体的算法才能让营销效果最大化。 01.Faceb…...
css 动画之旋转视差
序:网上看到的一个例子,做一下 效果图: 代码: <style>.content{width: 300px;height: 300px;margin: 139px auto;display: grid;grid-template-columns: repeat(3,1fr);grid-template-rows: repeat(3,1fr);grid-template:…...
maven项目、springboot项目复制文件进来后没反应、不编译解决方法
问题如下 把文件复制进springboot项目后,没反应,不编译。 解决 在maven工具框中选择compile工具,运行即可。...
android jetpack App Startup 应用启动时初始化组件(java)
有什么用? 应用启动时初始化组件。 怎么用 添加依赖 dependencies {implementation "androidx.startup:startup-runtime:1.1.1" }创建类,继承Initializer。 public class AppInit implements Initializer<String> {NonNullOverride…...
【设计模式|行为型】命令模式(Command Pattern)
说明 命令模式(Command Pattern)是一种行为设计模式,它将请求封装为一个对象,以便在不同的请求者和接收者之间进行解耦、参数化和操作的队列化。命令模式允许你将具体的请求封装为对象,这些对象之间彼此独立ÿ…...
SqlServer 批量删除表
SqlServer 批量删除表 直接上SQL脚本吧 SELECT row_number()over(order by Name) as FID,Name into #temp FROM SysObjects Where XTypeU --类型,U为实体表 and name like TMP% --表名过滤(自定义就好) ORDER BY Namedeclare count int 0…...
[Linux]线程基本知识
概念 进程 一个正在执行的程序,它是资源分配的最小单位 进程中的事情需要按照一定的顺序逐个进行 进程出现了很多弊端: 一是由于进程是资源拥有者,创建、撤消与切换存在较大的时空开销,因此需要引入轻型进程; 二是由于对称多…...
STM32 串口基础知识学习
串行/并行通信 串行通信:数据逐位按顺序依次传输。 并行通信:数据各位通过多条线同时传输。 对比 传输速率:串行通信较低,并行通信较高。抗干扰能力:串行通信较强,并行通信较弱。通信距离:串…...
页面滚动时隐藏element-ui下拉框/时间弹框
场景 在系统中,当(有垂直滚动时)点击下拉框后滚动页面,会发现下拉项会遮盖住页面中的元素,不会隐藏 解决:(以vue为例) 在页面滚动或者缩放时隐藏下拉项即可(借助点击目标元素,下…...
C#中i++和++i的底层原理
一:前言 我们都知道,i是先取值,后计算。i是先计算,后取值。下面说下它的底层原理 二:原理 int i 0; i; Console.WriteLine(i); 结果是1 执行步骤是: 1.将常量0压入栈中 2.从栈中取出元素0,局…...
在win10下安装verilator
主要参考文章 Verilator简介及其下载安装卸载_徐晓康的博客的博客-CSDN博客https://blog.csdn.net/weixin_42837669/article/details/114505364上面的文章可以解决大部分问题,但是可能是方案有些老了,已经安装最新的版本,下面对最新的版本安装提供解决方案 一 预备工作 安…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...

