学习笔记七:基于Jenkins+k8s+Git+DockerHub等技术链构建企业级DevOps容器云平台

基于Jenkins+k8s+Git+DockerHub等技术链构建企业级DevOps容器云平台

  • 安装Jenkins
  • 在kubernetes中部署jenkins
    • 创建名称空间
    • 创建pv,上传pv.yaml
    • 创建pvc
    • 创建一个sa账号
    • 通过deployment部署jenkins
    • 更新资源清单文件
    • 把jenkins前端加上service,提供外部网络访问
  • 配置Jenkins
    • 获取管理员密码
    • 安装插件,安装推荐的插件
  • 测试jenkins的CI/CD

K8s版本

kubectl get nodes

jenkins版本:
最新版

安装Jenkins

安装nfs服务,可以选择自己的任意一台机器,我选择的是k8s的控制节点k8smaster1
如果已经安装过nfs,这个步骤可以忽略

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

在k8smaster1上创建一个nfs共享目录

mkdir /data/v2  -p
vim /etc/exports
/data/v1 *(rw,no_root_squash)
/data/v2 *(rw,no_root_squash)

使配置文件生效

exportfs -arv

在kubernetes中部署jenkins

创建名称空间

kubectl create namespace jenkins-k8s

创建pv,上传pv.yaml

cat kubectl get pv
apiVersion: v1
kind: PersistentVolume
metadata:name: jenkins-k8s-pv
spec:capacity:storage: 10GiaccessModes:- ReadWriteManynfs:server: 192.168.40.180
path: /data/v2
kubectl apply -f pv.yaml
kubectl get pv

创建pvc

cat pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:name: jenkins-k8s-pvcnamespace: jenkins-k8s
spec:resources:requests:storage: 10GiaccessModes:- ReadWriteMany
kubectl apply -f pvc.yaml
kubectl get pvc -n jenkins-k8s

创建一个sa账号

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

把上面的sa账号做rbac授权

kubectl create clusterrolebinding jenkins-k8s-sa-cluster -n jenkins-k8s  --clusterrole=cluster-admin --serviceaccount=jenkins-k8s:jenkins-k8s-sa

通过deployment部署jenkins

在k8snode节点执行

docker pull jenkins/jenkins:2.394
docker save -o jenkins2.394  jenkins/jenkins:2.394
ctr -n=k8s.io images import jenkins2.394
docker load -i jenkins-slave-latest.tar.gz
ctr -n=k8s.io images import jenkins-slave-latest.tar.gz

备注:jenkins-slave-latest.tar.gz这个里面封装的镜像是jenkins-slave-latest:v1,这个jenkins-slave-latest:v1镜像制作方法如下:

cd /root/slave
cat dockerfile
FROM jenkins/jnlp-slave:4.13.3-1-jdk11
USER root
# 安装Docker
RUN apt-get update && apt-get install -y \docker.io
# 将当前用户加入docker用户组
RUN usermod -aG docker jenkins`在这里插入代码片`
RUN curl -LO https://dl.k8s.io/release/stable.txt
RUN curl -LO https://dl.k8s.io/release/$(cat stable.txt)/bin/linux/amd64/kubectl
RUN chmod +x kubectl
RUN mv kubectl /usr/local/bin/
ENV DOCKER_HOST unix:///var/run/docker.sock
docker build -t=jenkins-slave-latest:v1 .
docker save -o jenkins-slave-latest.tar.gz  jenkins-slave-latest:v1

更新资源清单文件

kubectl apply -f jenkins-deployment.yaml
kubectl get pods -n jenkins-k8s
NAME                       READY   STATUS            RESTARTS   AGE
jenkins-74b4c59549-g5j9t   0/1     CrashLoopBackOff   3          67s

看到jenkins-74b4c59549-g5j9t是CrashLoopBackOff状态,查看日志:

kubectl logs jenkins-74b4c59549-g5j9t  -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?
#报错显示没有权限操作/var/jenkins_home/copy_reference_file.log文件,

解决办法如下:在k8smaster执行

kubectl delete -f jenkins-deployment.yaml
chown -R 1000.1000 /data/v2
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:2.394imagePullPolicy: IfNotPresentports:- containerPort: 8080name: webprotocol: TCP- containerPort: 50000name: agentprotocol: TCPresources:limits:cpu: 1000mmemory: 1Girequests:cpu: 500mmemory: 512MilivenessProbe:httpGet:path: /loginport: 8080initialDelaySeconds: 60timeoutSeconds: 5failureThreshold: 12readinessProbe:httpGet:path: /loginport: 8080initialDelaySeconds: 60timeoutSeconds: 5failureThreshold: 12volumeMounts:- name: jenkins-volumesubPath: jenkins-homemountPath: /var/jenkins_homevolumes:- name: jenkins-volumepersistentVolumeClaim:claimName: jenkins-k8s-pvc
kubectl apply -f jenkins-deployment.yaml

查看pod是否创建成功:

kubectl get pods -n jenkins-k8s

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

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
kubectl apply -f jenkins-service.yaml
kubectl get svc -n jenkins-k8s

在这里插入图片描述

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

配置Jenkins

在浏览器访问jenkins的web界面:
在这里插入图片描述

获取管理员密码

在nfs服务端,也就是我们的master1节点获取密码:

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

在这里插入图片描述

把上面获取到的密码拷贝到上面管理员密码下的方框里

在这里插入图片描述

点击继续,出现如下界面

在这里插入图片描述

安装插件,安装推荐的插件

在这里插入图片描述

插件安装好之后显示如下,创建第一个管理员用户
在这里插入图片描述

在这里插入图片描述

用户名和密码都设置成admin,线上环境需要设置成复杂的密码
修改好之后点击保存并完成,出现如下界面
点击保存并完成,出现如下界面

在这里插入图片描述

点击保存并完成,出现如下界面

在这里插入图片描述

测试jenkins的CI/CD

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

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

相关文章

数学建模学习(116):全面解析梯度下降算法及其在机器学习中的应用与优化

文章目录 1.梯度下降简介1.1 梯度下降的数学原理1.2 学习率的选择2 梯度下降变体3.梯度下降优化器3.1 动量法(Momentum)3.2 AdaGrad3.3 RMSprop3.4 Adam3.5 Python 使用不同优化器训练线性回归模型4.案例:使用梯度下降优化加利福尼亚房价预测模型4.1. 数据准备4.2. 模型训练…

功能测试和性能测试区别简析,软件测试公司如何开展有效测试?

软件功能测试旨在验证软件是否按照需求和设计规范正常运行,软件性能测试则是用来评估软件在特定负载条件下的行为和响应时间,确保软件在高并发和高需求的环境中能够稳定运行。 虽然两者都属于软件测试的重要组成部分,但它们的目的和重点却有…

【经典算法】BFS_最短路问题

目录 1. 最短路问题介绍2. 算法原理和代码实现(含题目链接)1926.迷宫中离入口最近的出口433.最小基因变化127.单词接龙675.为高尔夫比赛砍树 3. 算法总结 1. 最短路问题介绍 最短路径问题是图论中的一类十分重要的问题。本篇文章只介绍边权为1(或边权相同)的最简单的最短路径问…

手机谷歌浏览器怎么用

谷歌浏览器不仅在PC端受欢迎,在移动端也是广泛应用的。为了帮助大家更好的理解和使用手机谷歌浏览器,本文将详细介绍如何使用手机谷歌浏览器,对这款浏览器感到陌生的话就快快学起来吧。(本文由https://chrome.cmrrs.com/站点的作者…

会声会影剪辑视频收费吗,会声会影最新破解版

会声会影2024:引领视频创作新时代的创新之旅** 在数字时代的浪潮中,视频创作已成为连接世界、表达创意的重要方式。随着技术的不断进步,一款名为“会声会影2024”的视频编辑软件横空出世,它不仅继承了前代产品的优秀传统&#xf…

如何在VMwareWorkstation上安装的ESXi系统扩容存储

在做ESXi的相关实验的时候,需要扩容ESXi的存储,那么如何进行操作呢? 扩容VMwareWorkstation上虚拟机的存储 首先我们需要先扩容虚拟机上的存储(可不关闭虚拟机)按照图下所示,右键虚拟机,点击设…

银行总分支文件分发系统:在安全与效率之间找到平衡

银行的组织结构通常根据其规模、业务范围和地域分布而有所不同,但一般会包括以下几个层级:总行-区域总部或分行-分行-支行-业务中心或服务中心-国际分支机构-附属机构或子公司。 在日常中,存在总分支文件分发的业务场景,文件类型通…

最方便的MODIS数据下载

这篇文章给出现在最方便的MODIS数据下载方法。 传统的方式通过访问NASA的数据中心:https://ladsweb.modaps.eosdis.nasa.gov/ 具体方法可以参考我前面的一篇文章:https://blog.csdn.net/qq_39085138/article/details/116302600 但是可以发现如果想要处理…

代码随想录算法训练营第二十二天(回溯 一)

开始学习回溯! 回溯理论基础 代码随想录文章链接:代码随想录 文章摘要: 什么是回溯法 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 在二叉树系列中,我们已经不止一次,提到了回溯。 回溯是递归的副产品,只…

屏幕翻译器下载哪个?语言达人必备这些

想象一下,你站在人头攒动的12分钟洛杉矶沙滩音乐节现场,四周是来自世界各地的音乐爱好者,他们带着各自的文化与热情,用不同的语言欢呼、交谈。 舞台上,乐队正激情演奏,旋律激荡人心,但偶尔传来…

HarmonyOS 开发

环境 下载IDE 代码 import { hilog } from kit.PerformanceAnalysisKit; import testNapi from libentry.so; import { router } from kit.ArkUI; import { common, Want } from kit.AbilityKit;Entry Component struct Index {State message: string Hello HarmonyOS!;p…

AI赋能软件测试:从自动化到智能化,让测试工作事半功倍

引言 在当今这个日新月异的数字时代,人工智能(AI)正以不可阻挡之势渗透并重塑着各行各业,其中,软件开发与测试领域更是迎来了前所未有的变革。随着软件系统的复杂性日益增加,用户对软件质量、性能及安全性的…

SQL每日一练-0816

今日SQL题:计算每个项目的年度收入增长率 难度系数:🌟☆☆☆☆☆☆☆☆☆ 1、题目要求 计算每个项目每年的收入总额,并计算项目收入环比增长率。找出每年收入增长率最高的项目。输出结果显示年份、项目ID、项目名称、项…

微软AI人工智能认证有哪些?

微软提供的人工智能认证主要包括以下几个方面: Azure AI Fundamentals(AI900认证):这是一个基础认证,旨在展示与Microsoft Azure软件和服务开发相关的基本AI概念,以创建AI解决方案。它面向具有技术和非技术…

[数据集][目标检测]航拍屋顶检测数据集VOC+YOLO格式458张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):458 标注数量(xml文件个数):458 标注数量(txt文件个数):458 标注类别…

【EI检索稳定】2024年第四届数字化社会与智能系统国际学术会议(DSInS 2024)

由悉尼科技大学和西南交通大学联合主办,四川大学、中南大学社会计算研究中心、西南财经大学、武汉理工大学协办的2024年第四届数字化社会与智能系统国际学术会议将于2024年11月22-24日在中国郑州举行。会议主题主要聚焦智能系统在数字化社会中的相关技术和应用发展。…

Vsphere连接ESXI主机创建虚拟机并安装操作系统

🏡作者主页:点击! 🐧Linux基础知识(初学):点击! 🐧Linux高级管理防护和群集专栏:点击! 🔐Linux中firewalld防火墙:点击! ⏰️创作…

Nature系列|病理人工智能综述以及模型的可解释性分析|顶刊速递·24-08-21

小罗碎碎念 文献日推主题:病理AI综述&模型可解释性分析 今天准备了四篇文章,感觉之前一次推六篇,多了点,以后都这个标准了。 前三篇都是nature reviews系列的大综述,其中两篇是不区分癌种的,第三篇是专…

FTP协议-匿名用户登录 从0到1

前言 日常大家可能接触web漏洞比较多而对其他端口及协议不那么了解,其实其他协议漏洞在渗透中也同样重要只是平时可能接触得不多。本文将介绍FTP协议、FTP匿名用户登录及其具体流程分析和自动化利用demo。 FTP简介 FTP是File Transfer Protocol(文件传…

MIAOYUN与CStack签署总代协议,共拓一体化云端交互管理市场!

在深刻洞察国内云原生技术日新月异的发展态势,并秉持着共谋市场蓝海、深化战略协同的高度共识下,成都元来云志科技有限公司(简称“MIAOYUN”)与上海酷栈科技有限公司(简称“CStack”)于近期签署了总代理合作…