一、环境准备

1、准备一主一从k8s机器,(设备好可以一主多从也行)

2、一台harbor仓库机器(dockerhub访问不了)

二、安装nfs服务

1、在k8s机器上

yum install nfs-utils -y
systemctl start nfs
systemctl enable nfs

2、创建共享目录

mkdir /data/v1 -p    #看你喜欢chown -R 1000.1000 /data/v1
vim /etc/exportfs/data/v1 192.168.200.0/24(rw,no_root_squash)
##使配置文件生效
exportfs -arv
systemctl restart nfs

#######为了后面pod的pv和pvc持久化存储

三、安装jenkins

1、创建命名空间

kubectl create namespace jenkins-k8s

2、创建pv

[root@master1 ~]# cat pv.yaml 
apiVersion: v1 
kind: PersistentVolume 
metadata: name: jenkins-k8s-pv 
spec: capacity: storage: 10Gi accessModes: - ReadWriteMany nfs: server: 192.168.200.20 path: /data/v2#创建资源清单kubectl apply -f pv.yaml

查看pv是否创建成功

kubectl get pv

3、创建pvc

[root@master1 ~]# cat pvc.yaml 
kind: PersistentVolumeClaim 
apiVersion: v1 
metadata: name: jenkins-k8s-pvc namespace: jenkins-k8s 
spec: resources: requests: storage: 10Gi accessModes: - ReadWriteMany#创建资源清单
kubectl apply -f pvc.yaml
kubectl get pvc -n jenkins-k8s

4、创建sa账号(在k8s中与Kubernetes API 的交互)

kubectl create sa jenkins-k8s-sa -n jenkins-k8s

做rbac授权

kubectl create clusterrolebinding jenkins-k8s-sa-cluster -n jenkins-k8s --clusterrole=cluster-admin --serviceaccount=jenkins-k8s:jenkins-k8s-sa###把名为 jenkins-k8s-sa 的 ServiceAccount 绑定到 cluster-admin ClusterRole,从而赋予它 整个集群的管理员权限。
Jenkins 使用这个 SA 启动后,通过 Kubernetes 插件或 kubectl 调用 API 时,会有集群管理员权限。

5、过 deployment 部署 jenkins

#jenkins的镜像要在2.4版本上,否则有一些插件安装不了、

[root@master1 ~]# cat jenkins-deployment.yaml 
kind: Deployment
apiVersion: apps/v1
metadata:name: jenkinsnamespace: jenkins-k8s
spec:replicas: 1selector:matchLabels:app: jenkinstemplate:metadata:labels:app: jenkinsspec:serviceAccount: jenkins-k8s-sacontainers:- name: jenkinsimage: jenkins/jenkins:ltsimagePullPolicy: IfNotPresentports:- containerPort: 8080name: webprotocol: TCP- containerPort: 50000name: agentprotocol: TCPresources:limits:cpu: 1000mmemory: 1Girequests:cpu: 500mmemory: 512MilivenessProbe:httpGet:path: /loginport: 8080initialDelaySeconds: 90timeoutSeconds: 45failureThreshold: 2readinessProbe:httpGet:path: /loginport: 8080initialDelaySeconds: 90timeoutSeconds: 45failureThreshold: 2volumeMounts:- name: jenkins-volumesubPath: jenkins-homemountPath: /var/jenkins_homevolumes:- name: jenkins-volumepersistentVolumeClaim:claimName: jenkins-k8s-pvc
kubectl apply -f jenkins-deployment.yaml

6、service外部网络访问

[root@master1 ~]# cat jenkins-service.yaml 
apiVersion: v1
kind: Service
metadata:name: jenkins-servicenamespace: jenkins-k8slabels:app: jenkins
spec:selector:app: jenkinstype: NodePortports:- name: webport: 8080targetPort: webnodePort: 30002- name: agentport: 50000targetPort: agent

7、登陆web页面配置

192.168.200.20:30002

1、获取密码

不是页面显示那个

cat /data/v1/jenkins-home/secrets/initialAdminPassword

2、按照页面显示安装推荐插件(不行的话也没事)

3、创建管理员用户

四、jenkins 的 CI/CD

1、安装kubernetes插件

(我已经安装了)

2、安装 blueocean 插件

这是一个提供现代化、可视化、用户友好的 Pipeline 展示界面

重启之后登陆 jenkins,插件即可生效

五、配置 jenkins 连接 k8s 集群

这个地址由Kubernetes 中 Service 的名字+命名空间+svc.cluster.local+端口号

http://jenkins-service.jenkins-k8s.svc.cluster.local:8080

六、配置pod模板

这个看主要项目是怎么执行的

这个jnlp镜像作用是:

Jenkins 构建任务的执行容器

它的职责就是:启动后用 JNLP 协议连上 Jenkins Master,然后等着执行任务。

Jenkins Master 不负责跑任务,只负责调度,真正的构建/部署任务是在 Agent(jnlp 容器)里跑的

(因为我的jenkins是用k8s跑的)

镜像是在harbor仓库里,也可以直接用其他的,就是会慢

##添加卷
/var/run/docker.sock 
/var/run/docker.sock /root/.kube 
/home/jenkins/.kube

保存就可以了

七、配置凭据

我用harbor仓库,配的是harbor的账号密码

八、通过 Jenkins 部署应用发布到 k8s 开发环境、测试环境、生产环境

1、编写pipeline脚本

主要就是看脚本怎么编写了

最后大功告成,流程是这么个流程,大差不差


####差不多是点点点,主要是pod.yaml编写和pipeline脚本的编写,怎么去贯通,提升效率,最重要的也是这个了。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么 socket.io 客户端在浏览器能连上,但在 Node.js 中报错 transport close?

网罗开发(小红书、快手、视频号同名)大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方…

人才教育导向下:老年生活照护实训室助力提升学生老年照护服务能力

一、老年生活照护实训室建设背景与意义 (一)适应老龄化社会需求 我国老龄化程度持续加深,老年照护服务人才缺口不断扩大。培养专业照护人才成为当务之急,职业教育需承担重要责任。点击获取实训室建设方案 (二&…

我在嘉顺达蓝海的安全坚守

作为嘉顺达蓝海的资深安全员,每天清晨 6 点,我都会站在物流基地的入口处,看着一队队橙色的嘉顺达蓝海危险品运输车整齐列队。那抹醒目的橙色,不仅是嘉顺达蓝海的标志,更是我和 200 多名同事坚守 12 年的安全承诺。今天…

云原生监控系统 Prometheus大总结 20250909

本章内容如下: Prometheus 介绍 Prometheus 部署和配置 Node Exporter 采集数据 Pushgateway 采集数据 PromQL 查询语言 Grafana 图形化展示 Prometheus 标签管理 Prometheus 告警机制 Prometheus 服务发现 各种Exporter 高级功能 Prometheus 实现容器监控 Promethe…

EPNN:基于嵌入式偏振神经网络的水下成像增强方法(未做完)

Enhancing Underwater Imaging for Robot through Embedded Polarization Neural Network EPNN:基于嵌入式偏振神经网络的水下成像增强方法 1 论文核心概念 本文提出了一种名为嵌入式偏振神经网络(Embedded Polarization Neural Network, EPNN) 的方法,用于显著提升水下…

基于单片机冷藏运输车环境检测/水产品运输环境检测设计

传送门 👉👉👉👉单片机作品题目速选一览表🚀 👉👉👉👉单片机作品题目功能速览🚀 🔥更多文章戳👉小新单片机-CSDN博客&#x1f68…

基于STM32设计的人体健康监护系统(华为云IOT)_280

文章目录 一、前言 1.1 项目介绍 【1】项目开发背景 【2】设计实现的功能 【3】项目硬件模块组成 【4】设计意义 【5】国内外研究现状 【6】摘要 1.2 设计思路 1.3 系统功能总结 1.4 开发工具的选择 【1】设备端开发 【2】上位机开发 1.5 参考文献 1.6 系统框架图 1.7 系统原理…

先买实现烦过

#include <myhead.h> #define ERR_LOG(msg)do{perror(msg);printf("%d %s %s\n",__LINE__,__func__,__FILE__);}while(0) //定义TFTP默认端口号&#xff08;69&#xff09;和数据包大小&#xff08;516字节&#xff09; #define PORT 69 #define N 516 …

ACD智能分配:轮流分配和排序上限分配的设置

在客户服务中&#xff0c;合理的对话分配是提高服务质量的关键。一洽客服系统针对不同业务场景,提供灵活的客服分配策略,帮助企业实现智能化的客户服务管理&#xff0c;今天我们了解一下对话的轮流分配、排序上限分配、排序优先分配的设置一、轮流分配按照客服登录系统的先后顺…

【postMan / apifox 文件上传】

apifox 需要提供相关插件 失败的请求 { “timestamp”: “2025-09-10T14:44:24.91900:00”, “status”: 500, “error”: “Internal Server Error”, “path”: “/student/import” } 错误&#xff1a;Post “http://localhost:8080/student/import”: dial tcp [::1]:8080:…

视频加水印,推荐使用运营大管家-视频批量加水印软件

运营大管家-视频批量加水印软件介绍“运营大管家-视频批量加水印”是一款功能强大的桌面应用程序&#xff0c;旨在帮助用户高效地为多个视频批量添加自定义水印。无论是品牌宣传、版权保护&#xff0c;还是个性化展示&#xff0c;本软件都能提供灵活的文字水印和图片水印选项&a…

基于 Dockerfile 构建镜像

1.准备构建上下文[roothost1 ~]# mkdir dockerfile-test && cd dockerfile-test [roothost1 dockerfile-test]# touch nginx.repo [roothost1 dockerfile-test]# touch Dockerfile [roothost1 dockerfile-test]# vi nginx.repo [roothost1 dockerfile-test]# cat nginx…

[Dify实战]插件编写- 如何让插件直接输出文件对象(支持 TXT、Excel 等)

在大多数 Dify 插件开发中,我们习惯于让插件返回结构化文本、字典或 JSON 数据。但随着应用场景拓展,例如翻译文件、生成报表、处理数据分析结果等,我们需要让插件支持“直接返回文件对象”给用户,而不是让用户复制粘贴文本再手动保存。 本文将基于实战经验,详细介绍如何…

Thread类的基本用法(上)

一、线程创建方法&#xff08;5种&#xff09;1.继承Thread类class MyThread extends Thread {Overridepublic void run() {System.out.println("MyThread is running");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}…

ARM内存映射与启动地址重映射机制解析

目录 内存映射 1. 核心概念&#xff1a;内存映射 (Memory Map) 2. 启动过程与地址重映射 (Remapping) 关键&#xff1a;启动引脚 (Boot Pins) 这个过程可以类比&#xff1a; 3. 为什么设计成这样&#xff1f; 4. 一图流总结 图解说明&#xff1a; 核心要点&#xff1a;…

网络原理——传输层协议TCP基本认识

文章目录传输层协议TCP基本认识TCP协议的格式TCP的可靠性初步理解——确认应答机制暂时理解TCP的通信过程TCP的确认号和确认序号确认号和确认序号的意义捎带应答TCP中其他字段的理解16位窗口大小标志位标志位的本质标志位的意义以SYN ACK标志位简单理解TCP连接三次握手以FIN标…

Java HTTP响应的流式处理技术

第1章 引言 1.1 传统HTTP响应处理的局限性 在现代Web应用开发中,HTTP通信是系统间数据交换的核心方式。随着数据量的不断增长和实时性要求的提高,传统的HTTP响应处理方式逐渐暴露出诸多问题。 传统处理方式通常需要将整个HTTP响应体一次性加载到内存中,然后再进行处理。这…

D01-【计算机二级】Python(1)基本操作第41题

1、考生文件夹下存在一个文件 PY101.py&#xff0c;请写代码替换横线&#xff0c;不修改其他代码&#xff0c;实现以下功能: 键盘输入正整数 n&#xff0c;按要求把 n 输出到屏幕&#xff0c;格式要求&#xff1a;宽度为 20 个字符&#xff0c;减号字符 - 填充&#xff0c;右对…

工程师 - Onion Architecture in Software Development

Introduction 介绍 In the ever-evolving world of software development, finding the right architectural pattern is akin to selecting the foundation for a building. One such architectural paradigm that has gained recognition for its ability to promote mainta…

TightVNC功能介绍

TightVNC是一款跨平台的远程桌面工具&#xff0c;支持Windows、Linux等系统&#xff0c;通过高效压缩技术实现低带宽环境下的流畅控制。以下是详细的使用说明&#xff1a; 一、安装与配置 1. Windows系统 下载与安装 访问TightVNC官网下载安装包&#xff0c;运行后选择“Comp…