k8s安装Jenkins

news2025/1/10 1:46:40

目录

​编辑

一、环境准备

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地址
master192.168.31.80
node1192.168.31.8
node2192.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.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins-nfs-client
  namespace: jenkins
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: jenkins-nfs-client-runner
  namespace: 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-provisioner
  namespace: jenkins
subjects:
  - kind: ServiceAccount
    name: jenkins-nfs-client
    namespace: jenkins
roleRef:
  kind: ClusterRole
  name:  jenkins-nfs-client-runner
  apiGroup: rbac.authorization.k8s.io

3.3 创建nfs 客户端

cat > jenkins-nfs-client.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name:  jenkins-nfs-client
  labels:
    app: jenkins-nfs-client
  # replace with namespace where provisioner is deployed
  namespace: jenkins
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: jenkins-nfs-client
  template:
    metadata:
      labels:
        app: jenkins-nfs-client
    spec:
      serviceAccountName: jenkins-nfs-client
      containers:
        - name: jenkins-nfs-client
          image: quay.io/external_storage/nfs-client-provisioner:latest
          volumeMounts:
            - name: jenkins-nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME   ## 这个名字必须与storegeclass里面的名字一致
              value:  my-jenkins-nfs
            - name: ENABLE_LEADER_ELECTION  ## 设置高可用允许选举,如果replicas参数等于1,可不用
              value: "True"
            - name: NFS_SERVER
              value: 192.168.31.80  #修改为自己的ip(部署nfs的机器ip)
            - name: NFS_PATH
              value: /var/nfs/jenkins     #修改为自己的nfs安装目录
      volumes:
        - name: jenkins-nfs-client-root
          nfs:
            server: 192.168.31.80 #修改为自己的ip(部署nfs的机器ip)
            path: /var/nfs/jenkins     #修改为自己的nfs安装目录

3.4 创建StorageClass

cat > jenkins-storeclass.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: jenkins-nfs-storage
  namespace: jenkins
provisioner: my-jenkins-nfs

3.5 创建PVC卷

cat > jenkins-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins-pvc
  namespace: jenkins
  labels:
    pvc: jenkins-pvc # 自定义
spec:
  storageClassName: jenkins-nfs-storage
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20G

四、创建Service

cat > jenkins-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: jenkins-service
  namespace: jenkins
  annotations:
      prometheus.io/scrape: 'true'    #这一段是官方文档带的,是用来让prometheus(普罗米修斯)来识别pod的,可暂时不用管他
      prometheus.io/path:   /
      prometheus.io/port:   '8080'
spec:
  selector:
    app: jenkins-server
  type: NodePort
  ports:
    - name: http
      port: 8080
      targetPort: 8080
      nodePort: 32000
    - name: agent
      port: 50000
      targetPort: 50000
      nodePort: 50000

提示:

如果50000端口没挂载上,需要修改kube-apiserver.yaml
 

vim /etc/kubernetes/manifests/kube-apiserver.yaml

- --service-node-port-range=3000-55000      #这行默认没有,自己给他加上,那端口范围我就不用解释了吧

五、创建deployment

cat > jenkins-deployment.yaml


apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins
  namespace: jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins-server
  template:
    metadata:
      labels:
        app: jenkins-server
    spec:
      securityContext:
            fsGroup: 1000
            runAsUser: 1000
      serviceAccountName: jenkins-nfs-client
      containers:
        - name: jenkins
          image: jenkins/jenkins:2.369       #镜像这里用这个就行,版本是2.369,官方文档的镜像版本太低,好像是2.2版本的,不支持一些插件
          imagePullPolicy: IfNotPresent

          ports:
            - name: httpport
              containerPort: 8080
            - name: jnlpport
              containerPort: 50000

          volumeMounts:
            - name: jenkins-data
              mountPath: /var/jenkins_home   #这里为jenkins工作目录,挂载出来就好了,这样重启jenkins数据也不会丢失
      volumes:
        - name: jenkins-data
          persistentVolumeClaim:
              claimName:  jenkins-pvc
              readOnly: 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就分享到这里!欢约大家点赞+收藏,有疑问也欢迎大家评论留言!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/816788.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何用python画一朵花,用python画彩色六边形

大家好,小编为大家解答用python画彩色六边形的问题。很多人还不知道如何用python画一朵花,现在让我们一起来看看吧!

63 # commander 的配置

初始化配置文件 新建文件夹 63,执行 npm init -y 修改配置文件 {"name": "kaimo-http-server","version": "1.0.0","description": "","main": "index.js","keywords"…

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(17)-Fiddler如何充当第三者再识AutoResponder标签-下

1.简介 上一篇宏哥主要讲解的一些在电脑端的操作和应用,今天宏哥讲解和分享一下,在移动端的操作和应用。其实移动端和PC端都是一样的操作,按照宏哥前边抓取移动端包设置好,就可以开始实战了。 2.界面功能解析 根据下图图标注位…

AD21 PCB设计的高级应用(四)FPGA的管脚交换功能

(四)FPGA的管脚交换功能 高速 PCB 设计过程中,涉及的 FPGA等可编程器件管脚繁多,也因此导致布线的烦琐与困难,Altium Designer 可实现 PCB 中 FPGA 的管脚交换,方便走线。 1.FPGA管脚交换的要求 (1)一般情况下,相同电压的 Bank之…

python——案例三:计算三角形面积

案例三:计算三角形面积 afloat(input(输入三角形第一个边的长度:)) #数据导入 bfloat(input(输入三角形第二个边的长度:)) cfloat(input(输入三角形第三个边的长度:)) s(abc)/2 #半周长计算公式 area(s*(s-a)*(s-b)*(s-c))**0.5 #面积公式 print(area) #

多源bfs

这是 LeetCode 上的「1162. 地图分析」 ,难度为「中等」。 与「单源最短路」不同,「多源最短路」问题是求从「多个源点」到达「一个/多个汇点」的最短路径。 在实现上,最核心的搜索部分,「多源 BFS」与「单源 BFS」并无区别。 并…

区块链:可验证随机函数

本篇主要介绍可验证随机函数的定义及其在区块链上的作用。 1 可验证随机函数 1.1 定义 可验证随机函数(Verifiable Random Function,VRF)本质上还是一类具有验证功能的伪随机函数。对于一个特定的输入 m m m以及输入者的私钥 S K SK SK,VRF会输出一个随…

Oracle设置某个表字段递增

当Oracle设置字段递增创建触发器 先建一个序列,打开PLSQL 找到Sequences,右击新建 根据自己的需要填写 然后添加触发器,点新建-程序窗口-空白 --TEST_ID为触发器的名字,TEST是添加触发器的表名 CREATE OR REPLACE TRIGGER &qu…

【C++】 哈希

一、哈希的概念及其性质 1.哈希概念 在顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。比如顺序表需要从第一个元素依次向后进行查找,顺序查找时间复杂度为…

【ChatGPT】基于WSL+Docker的ChatGPT PLUS共享服务部署

最近买了ChatGPT PLUS服务,想通过web服务将它共享给其他人使用,搜了一下目前GitHub上比较热门的服务有 ChatGPT-Next-Webchatgpt-web-share 其中chatgpt-web-share支持API和PLUS账号分享两种方式,且架构为PythonJSDocker,相对比…

【EI/SCOPUS会议征稿】第三届检测技术与自动化工程国际学术会议 (TTAE 2023)

第三届检测技术与自动化工程国际学术会议 (TTAE 2023)原定将于2023年9月15-17日在中国西安召开。 检测技术与自动化工程国际学术会议将每年举行一次,旨在将“检测技术”和“自动化工程”等学术领域的学者、专家、研发者、技术人员聚集到一个学术交流的平台&#xf…

docker容器认识及安装(linux系统)

目录 一、Docker概述 容器背景 容器对比传统虚拟化 Docker的使用场景 二、Docker的优点 1、快速的交付和部署 2、更高效的虚拟化 3、更轻松的迁移和扩展 4、简单的管理 三、Docker的核心概念 1、镜像(Image) 2、容器(Container&…

UM2080F32——32位SoC芯片

UM2080F32是基于ARM Cortex-M0内核的超低功耗、高性能的、单片集成(G)FSK/OOK无线收发机的32位SoC芯片。工作于200MHz~960MHz范围内,支持灵活可设的数据包格式,支持自动应答和自动重发功能,支持跳频操作,支持FEC功能,同…

【Lua学习笔记】Lua进阶——垃圾回收

按照唐老师的课程本来要讲自带库的,但是想想这东西能看文档,ctrl左键还能看注解,并且最重要的许多自带库的方法基本大部分语言都有,其实看看就能懂了。所以还是重点讲讲垃圾回收 文章目录 GC辅助垃圾回收collectgarbage增量模式分…

多模态第2篇:MMGCN代码配置

一、Windows环境 1.创建并激活虚拟环境 #创建虚拟环境命名为mmgcn,指定python版本为3.8 conda create -n mmgcn python3.8 #激活虚拟环境 conda activate mmgcn2.安装pytorch #torch2.0.0 cu118 pip install torch2.0.0cu118 torchvision0.15.1cu118 torchaudio…

优维低代码实践:Context / State

优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。 优维…

第六篇:什么是Prometheus Operator

Prometheus Operator简介 Prometheus Operator 是 CoreOS 开发的基于 Prometheus 的 Kubernetes 监控方案,也是目前功能最全面的开源方案。 Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF…

如何练习笔试中的ACM模式? 这个网站上线了!

7月18日,卡码网 在朋友圈里正式内测,同时也迎来了第一批用户。 经过半个月的不断调试,解决各种问题,现在终于可以正式发布了。 截止发文,卡码网已经迎来了第一千位卡友。 【图片】 卡码网地址:https://k…

MySQL高级篇第5章(存储引擎)

文章目录 1、查看存储引擎2、设置系统默认的存储引擎3、设置表的存储引擎3.1 创建表时指定存储引擎3.2 修改表的存储引擎 4、引擎介绍4.1 InnoDB 引擎:具备外键支持功能的事务存储引擎4.2 MyISAM 引擎:主要的非事务处理存储引擎4.3 Archive 引擎&#xf…

【C++】中位数求解,中位数绝对偏差MAD的应用

标准正态分布是一种均值为0、标准差为1的特殊连续概率分布。它的概率密度函数是对称的钟形曲线。 中位数绝对偏差(Median Absolute Deviation,MAD)是一种用于衡量数据集的离散程度的统计量。它衡量了观测值相对于数据集的中位数的平均偏离程…