1.制作jenkins docker镜像

1.1 下载jenkins

wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.303.2/jenkins.war

1.2 准备JDK(版本>=1.8)

jdk-8u192-linux-x64.tar.gz

1.3 编写Dockerfile

基础镜像使用的是centos7

FROM 192.168.1.110/base/centos:7
LABEL maintainer="yanql<yanqianling@faxuan.net>" ADD jdk-8u192-linux-x64.tar.gz /usr/local/
ADD jenkins.war /apps/jenkins/
ADD run_jenkins.sh /usr/bin/ ENV JAVA_HOME /usr/local/jdk1.8.0_192
ENV PATH ${PATH}:${JAVA_HOME}/bin EXPOSE 8080 CMD ["/usr/bin/run_jenkins.sh"]

1.4 run_jenkins.sh脚本

#!/bin/sh
cd /apps/jenkins && java -server -Xms1024m -Xmx1024m -Xss512k -jar jenkins-2.303.2.war --webroot=/apps/jenkins/jenkis-data --httpPort=8080
tail -f /etc/hosts

1.5 生成镜像

docker build -t 192.168.1.110/web/jenkins-2.303.2:v20211023-1211 .

1.6 测试镜像

docker run -d -p 8080:8080 192.168.1.110/web/jenkins-2.303.2:v20211023-1211

浏览器访问测试

1.7 将镜像上传至本地harbor

docker push 192.168.1.110/web/jenkins-2.303.2:v20211023-1211

2.为jenkins数据存储持久化部署创建PV/PVC

2.1 nfs 创建相关目录

jenkins会使用一下2个目录存储数据 '/apps/jenkins/jenkis-data','/root/.jenkins'

mkdir -p /data/k8s-data/jenkins/datadir-pv
mkdir -p /data/k8s-data/jenkins/root-datadir-pv

2.2 编写pv/pvc yaml

kind: PersistentVolume
metadata:
name: jenkins-datadir-pv
spec:
capacity:
storage: 20Gi
accessModes:
- ReadWriteOnce
nfs:
server: 192.168.2.10
path: /data/k8s-data/jenkins/datadir-pv
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-root-datadir-pv
spec:
capacity:
storage: 20Gi
accessModes:
- ReadWriteOnce
nfs:
server: 192.168.2.10
path: /data/k8s-data/jenkins/root-datadir-pv --- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-datadir-pvc
namespace: yan-test
spec:
accessModes:
- ReadWriteOnce
volumeName: jenkins-datadir-pv
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-root-datadir-pvc
namespace: yan-test
spec:
accessModes:
- ReadWriteOnce
volumeName: jenkins-root-datadir-pv
resources:
requests:
storage: 10Gi

2.3 创建pv/pvc并查看

# 创建
kubectl apply -f pv/jenkin-pv.yaml # 查看
root@k8-deploy:~/k8s-yaml/jenkins/yaml/pv# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
jenkins-datadir-pv 20Gi RWO Retain Bound yan-test/jenkins-datadir-pvc 3d1h
jenkins-root-datadir-pv 20Gi RWO Retain Bound yan-test/jenkins-root-datadir-pvc 3d1h root@k8-deploy:~/k8s-yaml/jenkins/yaml/pv# kubectl get pvc -n yan-test
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
jenkins-datadir-pvc Bound jenkins-datadir-pv 20Gi RWO 3d1h
jenkins-root-datadir-pvc Bound jenkins-root-datadir-pv 20Gi RWO 3d1h

3.部署jenkins服务器

3.1 编写deployment,svc yaml

apiVersion: v1
kind: Service
metadata:
name: jenkins
namespace: yan-test
spec:
type: NodePort
ports:
- name: http
port: 8080
protocol: TCP
targetPort: 8080
nodePort: 38080
selector:
app: jenkins
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins
namespace: yan-test
spec:
replicas: 1
selector:
matchLabels:
app: jenkins
template:
metadata:
labels:
app: jenkins
spec:
containers:
- name: server
image: 192.168.1.110/web/jenkins-2.303.2:v20211023-1211
imagePullPolicy: Always
ports:
- containerPort: 8080
protocol: TCP
name: http
volumeMounts:
- mountPath: "/apps/jenkins/jenkis-data"
name: jenkins-datadir-vl
- mountPath: "/root/.jenkins"
name: jenkins-root-datadir-vl
volumes:
- name: jenkins-datadir-vl
persistentVolumeClaim:
claimName: jenkins-datadir-pvc
- name: jenkins-root-datadir-vl
persistentVolumeClaim:
claimName: jenkins-root-datadir-pvc

3.2 创建

root@k8-deploy:~/k8s-yaml/jenkins/yaml# kubectl apply -f jenkins.yaml
service/jenkins created
deployment.apps/jenkins created

3.2 查看验证

# kubectl describe pod jenkins-7f4c78cdd5-48hb8 -n yan-test
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 45s default-scheduler Successfully assigned yan-test/jenkins-7f4c78cdd5-48hb8 to 192.168.2.18
Normal Pulling 44s kubelet Pulling image "192.168.1.110/web/jenkins-2.303.2:v20211023-1211"
Normal Pulled 16s kubelet Successfully pulled image "192.168.1.110/web/jenkins-2.303.2:v20211023-1211" in 28.065811801s
Normal Created 13s kubelet Created container server
Normal Started 12s kubelet Started container server root@k8-deploy:~/k8s-yaml/jenkins/yaml# kubectl get pod -n yan-test
NAME READY STATUS RESTARTS AGE
jenkins-7f4c78cdd5-48hb8 1/1 Running 0 56s root@k8-deploy:~/k8s-yaml/jenkins/yaml# kubectl exec jenkins-7f4c78cdd5-48hb8 -n yan-test -it -- bash
[root@jenkins-7f4c78cdd5-48hb8 /]# df -h
Filesystem Size Used Avail Use% Mounted on
...
192.168.2.10:/data/k8s-data/jenkins/root-datadir-pv 98G 22G 72G 24% /root/.jenkins
192.168.2.10:/data/k8s-data/jenkins/datadir-pv 98G 22G 72G 24% /apps/jenkins/jenkis-data
...

4.验证测试jenkins服务

4.1 查看登录密码

root@k8-deploy:~/k8s-yaml/jenkins/yaml# kubectl exec jenkins-7f4c78cdd5-48hb8 -n yan-test -it -- bash 

[root@jenkins-7f4c78cdd5-48hb8 /]# cat /root/.jenkins/secrets/initialAdminPassword
3cef3596ebdb4af592f331383023897

4.2 重启jenkins是初始化安装的插件生效

因为数据都放在了nfs存储上,所以重建jenkins不会导致数据丢失。

kubectl delete -f jenkins.yaml
kubectl apply -f jenkins.yaml

4.3如果密码已更改,但有忘记admin密码了可以参考。

https://www.cnblogs.com/aerospace191/p/14063088.html

8.3 k8s部署jenkins,通过pv/pvc结合NFS服务器持久化的更多相关文章

  1. 8.2 k8s 基于StatefulSet运行mysql 一主多从 ,数据通过pv/pvc结合NFS服务器持久化

    1.准备mysql和xtrabackup镜像 下载mysql官方镜像并上传到本地harbor docker pull mysql:5.7 docker tag m ysql:5.7 192.168.1 ...

  2. k8s系列---存储卷pv/pvc。configMap/secert

    因为pod是有生命周期的,pod一重启,里面的数据就没了.所以我们需要数据持久化存储. 在k8s中,存储卷不属于容器,而是属于pod.也就是说同一个pod中的容器可以共享一个存储卷. 存储卷可以是宿主 ...

  3. k8s集群,使用pvc方式实现数据持久化存储

    环境: 系统 华为openEulerOS(CentOS7) k8s版本 1.17.3 master 192.168.1.244 node1 192.168.1.245 介绍: 在Kubernetes中 ...

  4. K8S系列第九篇(持久化存储,emptyDir、hostPath、PV/PVC)

    更多k8s内容,请关注威信公众好:新猿技术生态圈 一.数据持久化 Pod是由容器组成的,而容器宕机或停止之后,数据就随之丢了,那么这也就意味着我们在做Kubernetes集群的时候就不得不考虑存储的问 ...

  5. k8s-数据持久化存储卷,nfs,pv/pvc

    目录 数据持久化-储存卷 官方文档 存储卷类型 1.emptyDir 2.hostpath 3.pv/pvc(推荐使用) nfs官方文档 安装测试nfs pv/pvc管理nfs 官方文档 pv/pvc ...

  6. k8s的持久化存储PV&&PVC

    1.PV和PVC的引入 Volume 提供了非常好的数据持久化方案,不过在可管理性上还有不足. 拿前面 AWS EBS 的例子来说,要使用 Volume,Pod 必须事先知道如下信息: 当前 Volu ...

  7. 6.k8s.存储Volume.PV.PVC

    #Volume Volume 解决数据持久化和容器间共享数据 Kubernetes支持几十种类型的后端存储卷 #hostPath挂载实例,挂载Node节点/tmp/test-volume目录到容器/t ...

  8. kubernetes(14):k8s基于NFS部署storageclass实现pv自动供给

    k8s基于NFS部署storageclass实现pv自动供给 https://www.cnblogs.com/Smbands/p/11059843.html https://www.jianshu.c ...

  9. 8.1 k8s使用PV/PVC做数据持久化运行redis服务,数据保存至NFS

    1.制作redis docker镜像 1.1 准备alpine基础镜像 # 下载 docker pull alpine:3.13 # 更改tag docker tag alpine:3.13 192. ...

随机推荐

  1. 异构智联Wi-Fi+蓝牙模组,连接快、准、稳!

    下班回家打开门,电灯.电视.空调.音响.电动窗帘.扫地机器人--一呼百应,有序开工,原本冰冷的房子立刻变成了温暖港湾.可以说,舒适便捷的智能设备已经完全融入了我们的生活中. 从单一场景.单一设备,到现 ...

  2. Java:NIO 学习笔记-3

    Java:NIO 学习笔记-3 根据 黑马程序员 的课程 JAVA通信架构I/O模式,做了相应的笔记 3. JAVA NIO 深入剖析 在讲解利用 NIO 实现通信架构之前,我们需要先来了解一下 NI ...

  3. MySQL:提高笔记-2

    MySQL:提高笔记-2 学完基础的语法后,进一步对 MySQL 进行学习,第一篇为:MySQL:提高笔记-1,这是第二篇内容 说明:这是根据 bilibili 上 黑马程序员 的课程 mysql入门 ...

  4. Java:常用的容器小记

    Java:常用的容器小记 对 Java 中的 常用容器,做一个微不足道的小小小小记 容器类概述 常见容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 M ...

  5. the Agiles Scrum Meeting 1

    会议时间:2020.4.9 20:00 1.每个人的工作 今天已完成的工作 前端 学习JavaScript.Vue.ElementUI相关知识 issues:预习任务-前端:JavaScript 预习 ...

  6. EFCore_环境搭建与简单使用_01

    开发环境搭建 经典步骤:建实体类.建DbContext.生成数据库 本次使用codefirst模式,走下流程,(你也可以先建好数据库,用命令行的形式,直接生成DbContext,而且生成的DbCont ...

  7. popStar机机对战数据生成器代码(C#)

    代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...

  8. 第04课 OpenGL 旋转

    旋转: 在这一课里,我将教会你如何旋转三角形和四边形.左图中的三角形沿Y轴旋转,四边形沿着X轴旋转. 上一课中我教给您三角形和四边形的着色.这一课我将教您如何将这些彩色对象绕着坐标轴旋转.其实只需在上 ...

  9. Forest v1.5.12 发布,声明式 HTTP 框架,已超过 1.6k star

    Forest介绍 Forest 是一个开源的 Java HTTP 客户端框架,它能够将 HTTP 的所有请求信息(包括 URL.Header 以及 Body 等信息)绑定到您自定义的 Interfac ...

  10. DeWeb 电脑和手机动态适配

    DeWeb 做多平台适配很方便! 多平台适配代码在OnMouseUp中. X,Y分别表示当前设备的Width/Height: Button : mbLeft : 屏幕纵向, mbRight:屏幕横向: ...