实战-基于Jenkins+K8s构建DevOps平台(九)

news2024/12/19 16:36:57

实验步骤如下:

    • 第一部分:安装持久化存储nfs

1、在k8s-master和k8s-node1上安装nfs服务

[root@k8s-master ~]# yum install nfs-utils -y

[root@k8s-master ~]# systemctl start nfs

[root@k8s-master ~]# systemctl enable nfs

[root@k8s-node1 ~]# yum install nfs-utils -y

[root@k8s-node1 ~]# systemctl start nfs

[root@k8s-node1 ~]# systemctl enable nfs

[root@k8s-node2 ~]# yum install nfs-utils -y

[root@k8s-node2~]# systemctl start nfs

[root@k8s-node2 ~]# systemctl enable nfs

2、在k8s-master上创建一个nfs共享目录

[root@k8s-master ~]# mkdir /data/v2 -p

[root@k8s-master ~]# vim /etc/exports

/data/v2 *(rw,no_root_squash)

3、使nfs配置文件生效

[root@k8s-master ~]# exportfs -arv

[root@k8s-master ~]# systemctl restart nfs

    • 第二部分:基于nfs做持久化存储pv

1、创建名称空间

[root@k8s-master ~]# kubectl create namespace jenkins-k8s

2、创建pv

[root@k8s-master]# kubectl apply -f pv.yaml

3、查看pv是否创建成功

[root@k8s-master]# kubectl get pv

pv.yaml文件内容如下:

apiVersion: v1

kind: PersistentVolume

metadata:

name: jenkins-K8s-pv

spec:

capacity:

storage: 10Gi

accessModes:

- ReadWriteMany

nfs:

server: 192.168.190.61

path: /data/v2

4、创建pvc

[root@k8s-master]# kubectl apply -f pvc.yaml

5、查看pvc是否创建成功

[root@k8s-master]# kubectl get pvc -n jenkins-k8s

kind: PersistentVolumeClaim

apiVersion: v1

metadata:

name: jenkins-K8s-pvc

namespace: jenkins-K8s

spec:

resources:

requests:

storage: 10Gi

accessModes:

- ReadWriteMany

    • 第三部分:在K8s集群安装Jenkins

1、创建一个sa账号

[root@k8s-master]# kubectl create sa jenkins-k8s-sa -n jenkins-k8s

2、把上面的sa账号做rbac授权

[root@k8s-master]# kubectl create clusterrolebinding jenkins-k8s-sa-cluster -n jenkins-k8s --clusterrole=cluster-admin --serviceaccount=jenkins-k8s:jenkins-k8s-sa

3、通过deployment部署jenkins

[root@k8s-node1 ~]# docker pull jenkins/jenkins:latest

[root@k8s-node1 ~]# docker load -i jenkins-jnlp.tar.gz

4、更新资源清单文件

[root@k8s-master]# kubectl apply -f jenkins-deployment.yaml

5、查看jenkins是否创建成功

[root@k8s-master jenkins]# kubectl get pods -n jenkins-k8s

6、看到jenkins-5fc55f45f4-vltrr是CrashLoopBackOff状态,查看日志:

[root@k8s-master]# kubectl logs jenkins-5fc55f45f4-vltrr -n jenkins-k8s

日志信息显示:

touch: cannot touch '/var/jenkins_home/copy_reference_file.log

'

: Permission denied

Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume

permissions?

7、报错显示没有权限操作/var/jenkins_home/copy_reference_file.log文件,解决办法如下:

[root@k8s-master]# kubectl delete -f jenkins-deployment.yaml

[root@k8s-master]# chown -R 1000.1000 /data/v2

[root@k8s-master]# kubectl apply -f jenkins-deployment.yaml

8、查看pod是否创建成功:

[root@k8s-master]# kubectl get pods -n jenkins-k8s

显示如下,说明部署成功了:

 

9、把jenkins前端加上service,提供外部网络访问

[root@k8s-master]# kubectl apply -f jenkins-service.yaml

10、查看service是否创建成功

[root@k8s-master]# kubectl get svc -n jenkins-k8s

    • 第四部分:配置Jenkins

1、在浏览器访问jenkins的web界面: http://192.168.190.61:30002/login?from=%2F

 

得到密码:

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

ae00364cab9c42adb2edc09b0c592473

11、通过上面可以看到service的8080端口在物理机映射的端口是30002

第四部分:配置Jenkins 2、获取管理员密码: 在nfs服务端,也就是我们的master1节点获取密码: [root@k8s-master ~]# cat /data/v2/jenkins-home/secrets/initialAdminPassword

 

 

 

 

 

 

 

    • 第五部分:测试Jenkins CI/CD流水线-扩展

 

这部分内容

1、Jenkins安装K8s插件

2、Jenkins安装Blueocean插件

3、配置Jenkins连接K8s集群

4、配置Jenkins slave pod模板

5、Jenkins ui界面添加dockerhub凭据

6、测试Jenkins发布应用到K8s测试、开发、生产环境-通过pipeline实现

7、基于Jenkins+K8s+Nexus+Sonarqube+gitlab+SpringCloud构建DevOps流水线

具体发布流程如下:

开发提交代码到代码仓库gitlab-jenkins检测到代码更新-调用K8s api在K8s中创建

jenkins slave pod:

Jenkins slave pod拉取代码---通过maven把拉取的代码进行构建成war包或者jar包--->上传代码到Sonarqube,进行静态代码扫描- -->基于war包构建docker image-->把镜像上传到harbor镜像仓库-->基于镜像部署应用到开发环境-->部署应用到测试环境--->部署应用到生产环境

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

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

相关文章

深度学习-第T9周——猫狗识别

深度学习-第T9周——猫狗识别 深度学习-第T9周——猫狗识别一、前言二、我的环境三、前期工作1、导入数据集2、查看图片数目 四、数据预处理1、 加载数据1.1、设置图片格式1.2、划分训练集1.3、划分验证集1.4、查看标签1.5、再次检查数据1.6、配置数据集 2、数据可视化 五、搭建…

2023下半年软考中级考试科目-2023年11月软考中级科目难度排行

软考中级资格考试科目分为基础知识和应用技术,基础知识在上午考试,应用技术在下午考试,两个科目的考试题型也有所不同。 基础知识考试题型为客观选择题,共计75道选择题,每小题1分;应用技术为主观问答题&am…

组合数学第五讲

Catalan numbers(卡特兰数) 先通过平衡括号引入卡特兰数序列的概念 1,2,5,14,...,这些数构成了卡特兰数序列,分别代表一共有i个括号时,括号排列构成的合法方案数【从左到右如果所有括号都能依次配对即是合…

【微服务项目】Spring Cloud Alibaba 实战

Spring Cloud Alibaba 实战 一、目标 理解什么是微服务架构理解什么是springcloud及spring cloud alibaba和springcloud的关系掌握使用springcloud alibaba 实现微服务远程调用掌握使用springcloud alibaba 实现服务注册与发现掌握使用springcloud alibaba 实现基本的服务配置…

240:vue+openlayers上传CSV文件,在地图上显示信息

第240个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers上传CSV文件,在地图显示,点击点后,显示点信息。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果OpenStreetMap无法加载,请加载其他来练习 文章目录 示例效果使用的csv…

玩转ChatGPT:制作AI播报视频

一、写在前面 羊了几天,上线就发现,GPT的第三方插件的数量越来越多,使得官方推出了搜索功能: 我逛了一圈,发现这个插件挺有意思,用来生成AI语音播报视频的。 下面给大家尝尝鲜。 二、实战过程 &#xff0…

k8s pvc详解

一、概述 PVC 的全称是:PersistentVolumeClaim(持久化卷声明),PVC 是用户存储的一种声明,PVC 和 Pod 比较类似,Pod 消耗的是节点,PVC 消耗的是 PV 资源,Pod 可以请求 CPU 和内存&am…

移动端做安全测试的重要性

安全性测试的目的是发现危害手机中数据的安全和完整性的错误和缺陷。发现安全错误通常是比较困难的,软件通常功能运行正常但却不安全。 一、软件权限 APP软件权限包括:网络通信、信息发送、自动启动、 媒体录制、读取用户信息、写入用户数据等权限,因关系到用户个人信息和隐私…

Java开发手册中为什么建议初始化HashMap的容量大小,以及HashMap源码中相关参数(容量大小设置参数公式)说明

场景 Java开发手册中对于HashMap的推荐如下: 【推荐】集合初始化时,指定集合初始值大小。 说明:HashMap 使用 HashMap(int initialCapacity) 初始化,如果暂时无法确定集合大小,那么指定默认值(16)即可。…

2023年前端面试题汇总-数据结构(链表)

1. 链表的概念 1.1. 链表的结构 在计算机里,不保存在连续存储空间中,而每一个元素里都保存了到下一个元素的地址的数据结构,我们称之为链表(Linked List)。链表上的每一个元素又可以称它为节点(Node&…

【大数据之Hive】六、Hive之metastore服务部署

metastore为Hive CLI或Hiveserver2提供元数据访问接口。 1 metastore运行模式 metastore运行模式有两种,嵌入式模式和独立服务模式。 (1)嵌入式模式 将metastore看作一个依赖嵌入到Hiveserver2和每一个HiveCLI客户端进程,使得Hi…

零基础开发小程序第六课-删除数据

目录 1 物理删除数据2 逻辑删除数据总结 我们上一篇介绍了修改数据,本篇介绍一下删除数据。一般的小程序如果提供给管理员使用的功能,通常会有删除数据的功能。 删除数据有真删除和假删除的区别。那什么是真删除呢?真删除就是把这条数据从数据…

通过JVM深入理解Java异常机制

JVM内部结构 要深入理解JVM异常处理机制,需要从JVM内部结构开始。 下图描述的主要是Java程序在执行时,由JVM管理的运行时数据区;包括方法区、Java堆、Java虚拟机栈、PC寄存器、本地方法栈,还有常量池。它们又被分为两大类——线程…

SeaTunnel StarRocks 连接器的使用及原理介绍

作者:毕博,马蜂窝数据平台负责人,StarRocks 活跃贡献者 & Apache SeaTunnel 贡献者 Apache SeaTunnel(以下简称 SeaTunnel)是一个分布式、高性能、易扩展、用于海量数据(离线&实时)同步…

Spring为什么默认是单例的?

目录 一、五种作用域 二、单例bean与原型bean的区别 三、单例Bean的优势与劣势 一、五种作用域 1.singleton: singleton是Spring Bean的默认作用域,也就是单例模式。在整个应用程序中,只会创建一个实例,Bean的所有请求都会共享这个实例。 …

ETLCloud轻松应对CDC实时数据流和维度数据合并的需求,实时监控订单数据

如何实现实时流与批流合并打宽数据 通常情况下我们使用CDC实时监听表销售或订单表数据的LOG时会形成流式的数据,即订单变化时数据是按照变化时间不断的传入到ETL的流程中的,业务希望实时看到订单数据的报表。 CDC每次传入的数据有可能是一条也可能是多…

基于geoserver开发地图发布服务

写在前面:我在github上创建了对应的项目,可点此跳转,本文的所有源码均可在项目里找到,欢迎大家访问交流 一、开发背景 在gis领域,geoserver是后端地图发布的开源项目。目前我们在启动服务后,可通过自带的…

科研工具-R-META分析与【文献计量分析、贝叶斯、机器学习等】多技术融合实践

Meta分析是针对某一科研问题,根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法,对来源不同的研究成果进行收集、合并及定量统计分析的方法,最早出现于“循证医学”,现已广泛应用于农林生态,资源环境等方面。…

【AIGC】14、GLIPv2 | 在 GLIP 上扩展 negative phrase 并新增分割功能

文章目录 一、背景二、方法2.1 A Unified VL Formulation and Architecture2.2 GLIPv2 pre-training2.3 将 GLIPv2 迁移到 Localization 和 VL task 三、结果3.1 One model architecture for all3.2 One set of model parameters for all3.3 GLIPv2 as a strong few-shot learn…

Latex使用algorithm2e包写伪代码

用Latex写伪代码我们需要用到一个包,Algorithm2e,这个工具包的使用手册下载地址为(http://mlg.ulb.ac.be/files/algorithm2e.pdf)CSDN的链接为() 准备 导入该包 \usepackage[ruled,linesnumbered]{algor…