基于Jenkins+K8S+python构建DevOps自动化运维管理平台构建Jenkins+developer+ 自动化运维平台

一、实验环境:

Master1\node1\node2还原至单节点集群配置完成

Harbor开184,还原至k8s新系统,开机

NFS还原至K8S新系统,添加4块100G SCSI硬盘

二、配置Habor仓库(使用server 184)

[root@habor] gdisk /dev/sdb(对sdb磁盘进行分区)
[root@habor] mkfs.xfs /dev/sdb1
(格式化硬盘)
[root@habor] mkdir /data(创建data目录)
[root@habor] blkid (查看磁盘ID号)

编辑开机挂载配置文件

[root@habor] vim /etc/fstab(编辑开机挂载配置文件)
[root@habor] systemctl daemon-reload(重新加载系统进程)
[root@habor] mount -a(重新加载挂载项)
[root@habor] df -hT(查看磁盘容量)

安装docker插件

[root@habor] yum install -y yum-utils device-mapper-persistent-data lvm2(安装docker插件)

安装docker阿里云数据源

[root@habor] yum  config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(安装docker阿里云数据源)

安装dockers-ce

[root@habor] dnf -y install docker-ce 安装dockers-ce
[root@habor] systemctl enable --now docker(启动docker并设置开机启动)

创建docker镜像源配置文件

{
    "registry-mirrors":[
        "https://mirror.baidubce.com",
        "https://9cpn8tt6.mirror.aliyuncs.com",
        "https://registry.docker-cn.com",
        "https://dockerproxy.com",
        "https://mirror.baidubce.com",
        "https://docker.m.daocloud.io",
        "https://docker.nju.edu.cn",
        "https://docker.1panel.live",
        "https://hub.rat.dev",
        "https://mirror-gcr.onrender.com",
        "https://docker.mirrors.sjtug.sjtu.edu.cn",
        "https://docker.mirrors.ustc.edu.cn",
        "https://reg-mirror.qiniu.com",
        "https://registry.docker-cn.com"
    ]
}
{
"insecure-registries":["192.168.7.202","harbor"]
}
[root@habor] systemctl restart docker(重启Docker)

创建Docker环境变量

[root@habor] DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}(创建Docker环境变量)

创建插件目录

[root@habor] mkdir -p $DOCKER_CONFIG/cli-plugins(创建插件目录)

安装容器编排

[root@habor] curl -SL https://github.com/docker/compose/releases/download/v2.37.0/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose(安装容器编排)

剪切到$DoCKER_CoNFIG/cli-plugins/docker-compose

[root@habor] mv docker-compose-1inux-x86_64 $DoCKER_CoNFIG/cli-plugins/docker-compose(剪切到$DoCKER_CoNFIG/cli-plugins/docker-compose)

给$DoCKER_cONFIG/cli-plugins/docker-compose增加执行权限

[root@habor] chmod +x $DoCKER_cONFIG/cli-plugins/docker-compose(给$DoCKER_cONFIG/cli-plugins/docker-compose增加执行权限)

查看容器编排版本

[root@habor] docker compose version(查看容器编排版本)

创建/data/ssl目录

[root@habor] mkdir /data/ssl
[root@habor] cd /data/ssl(进入ssl目录)

生成域名证书请求文件

[root@harbor ssl]# openssl req -new -509 -days 3650 -key ca.key -out ca.pem  生成创建证书的请求文件
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:harbor.cn   	(域名,本机设置计算机名一致)  
Organizational Unit Name (eg, section) []:k8s
Common Name (eg, your name or your server's hostname) []:Meng
Email Address []:1319276778@qq.com

生成域名的证书

[root@harbor ssl]# openssl genrsa -out harbor.key 3072		生成域名的证书,harbor.k

生成域名证书的请求文件,harbor.csr

[root@harbor ssl]# openssl req -new -key harbor.key -out harbor.csr		生成域名证书的请求文件,harbor.csr	
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:harbor.cn		这里注意不要写错
Organizational Unit Name (eg, section) []:k8s
Common Name (eg, your name or your server's hostname) []:Meng
Email Address []:1319276778@qq.com		

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:					密码不要写 直接回车
An optional company name []:
[root@harbor ssl]# openssl x509 -req -in harbor.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out harbor.pem -days 3650		签发证书
Certificate request self-signature ok
subject=C=CN, ST=BJ, L=BJ, O=harbor.cn, OU=k8s, CN=Meng, emailAddress=1319276778@qq.com		成功了
[root@harbor ssl]# 

加载内核

[root@harbor ssl]# modprobe br_netfilter(加载内核)

编辑docker配置文件

[root@harbor ssl]# vim /etc/sysctl.d/docker.conf(编辑docker配置文件)
net.bridge.bridge-nf-call-ip6tables = 1(开启防火墙的ipv4和ipv6的桥接功能)
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1(开启ipv4转发功能)

创建install目录

mkdir /data/install(创建install目录)
cd /data/install(进入install目录)

将harbor离线压缩包解压到data目录下

[root@harbor install]# tar zxf harbor-offline-installer-v2.7.3.tgz -C /data/(将harbor离线压缩包解压到data目录下)
[root@harbor install]# 
[root@harbor install]# cd /data/harbor/(进入data目录)
[root@harbor harbor]# cp harbor.yml.tmpl harbor.yml 将harbor模板配置文件复制到原文件

编辑harbor原配置文件

[root@harbor harbor]# vim harbor.yml(编辑harbor原配置文件)

安装harbor

[root@harbor harbor]# ./install.sh (安装harbor)
[root@harbor harbor]# docker compose ps

建立映射:7.184和harbor之间的映射

拍摄快照:关机拍快照,名称:加证书的harbor

开机

[root@harbor ]# cd /data/
[root@harbor ]# cd install/harbor/
[root@harbor harbor]# docker compose restart 启动容器编排

真实机登录

三、配置nfs

gdisk /dev/sdb(对sdb磁盘进行分区)
gdisk /dev/sdc(对sdc磁盘进行分区)
gdisk /dev/sdd(对sdd磁盘进行分区)
gdisk /dev/sde(对sde磁盘进行分区)

安装raid磁盘镜像软件

dnf -y install mdadm(安装raid磁盘镜像软件)
mdadm -C /dev/md5 -ayes -l5 -n3 -x1 /dev/sd[b-e]1
md5(raid创建好的名称)

查看raid信息

cat /proc/mdstat (查看raid信息)
md5 : active raid5(raid5活动) sdd1[4] sde1[3](S) sdc1[1] sdb1[0]

查看raid5磁盘详细信息

mdadm -D /dev/md5(查看raid5磁盘详细信息)
/dev/md5:
           Version : 1.2
     Creation Time : Mon Jul  7 23:03:14 2025
        Raid Level : raid5(raid级别raid5)
        Array Size : 209579008 (199.87 GiB 214.61 GB)
     Used Dev Size : 104789504 (99.94 GiB 107.30 GB)
      Raid Devices : 3(raid设备三块)
     Total Devices : 4(磁盘四块)

将四块磁盘raid信息追加到raid配置文件中

echo 'DEVICE /dev/sd[b-e]1' >> /etc/mdadm.conf(将四块磁盘raid信息追加到raid配置文件中)

将当前所有RAID设备的配置信息以动态方式追加到/etc/mdadm.conf配置文件中

mdadm -Ds  >> /etc/mdadm.conf
#-D(显示设备详细信息)
#-s(扫描系统并输出所有以激活的RAID设备配置信息,以合适放入配置文件的格式呈现)

查看RAID配置文件

cat /etc/mdadm.conf (查看RAID配置文件)

格式化RAID的磁盘

mkfs.xfs /dev/md5(格式化RAID的磁盘)

创建data目录

mkdir /data(创建data目录)

查看设备磁盘信息

blkid (查看设备磁盘信息)

编辑开机挂载配置文件

vim /etc/fstab (编辑开机挂载配置文件)
UUID=b056af2e-e88c-43ef-a142-16319a53e680  /data     xfs     defaults        0 0
RAID磁盘挂载到data目录下

重新加载系统进程

systemctl daemon-reload(重新加载系统进程)

重新加载挂载项

mount -a(重新加载挂载项)

查看磁盘容量

df -hT(查看磁盘容量)
/dev/md5                     xfs       200G  1.5G  199G   1% /data  (看这个)

在data下创建目录

mkdir /data/v1(在data下创建v1目录)
mkdir /data/v2(在data下创建v2目录)

安装nfs

dnf -y install nfs-utils(安装nfs)

编辑nfs配置文件

/data/v1 *(rw,no_root_squash)(将data目录下v1共享给任何IP,可写可读,以匿名用户执行)
/data/v2 *(rw,no_root_squash)(将data目录下v2共享给任何IP,可写可读,以匿名用户执行)
*(任何IP)
systemctl enable --now nfs-server(启动nfs并设置开机启动)
exportfs -avr(将nfs发布出去)
showmount -e(查看nfs挂载项)

关机,拍设快照,名称:NFS

四、安装jenkins

node1、node2上安装nfs、启动nfs并设置开机启动

dnf -y install nfs-utils(安装nfs)
systemctl enable --now nfs-server(启动nfs并设置开机启动)

查看192.168.7.185挂载项

showmount -e 192.168.7.185(查看192.168.7.185挂载项)

master1上创建jenkins命名空间

[root@master1 ~]# kubectl create ns jenkins-k8s(创建jenkins命名空间)

master1上创建Jenkins目录

[root@master1 ~]# mkdir jenkins(创建Jenkins目录)
[root@master1 ~]# cd jenkins/(进入Jenkins目录)

master1上创建持久卷配置文件

[root@master1 jenkins~]# vim pv.yaml(创建持久卷配置文件)
apiVersion: v1(api版本为1)
kind: PersistentVolume(类型持久卷)
metadata:(元数据)
  name: jenkins-k8s-pv(元数据名称为jenkins-k8s-pv)
spec:(资源定义对象)
  capacity:(容量)
    storage: 10Gi(存储10个G)
  accessModes:(访问模式)
  - ReadWriteMany(多节点挂载并读写操作)
  nfs:
    server: 192.168.7.185(服务是192.168.7.185)
    path: /data/v2(nfs路径是/data/v2)
kubectl apply -f pv.yaml(应用pv的配置文件)
kubectl get pv(查看pv)

master1上编辑pvc

[root@master1 jenkins~]# vim pvc.yaml(编辑pvc)
kind: PersistentVolumeClaim(类别持久卷消费)
apiVersion: v1(api版本为1)
metadata:
  name: jenkins-k8s-pvc(名称为 jenkins-k8s-pvc)
  namespace: jenkins-k8s(命名空间jenkins-k8s)
spec:(资源定义对象)
  resources:(资源请求)
    requests:(请求)
      storage: 10Gi(存储10个G)
  accessModes:(访问模式)
  - ReadWriteMany(多节点可以挂载并进行读写操作)

master1上查看pvc、jenkins-k8s命名空间下的pvc

[root@master1 jenkins~]# kubectl apply -f pvc.yaml(查看pvc)
[root@master1 jenkins~]# kubectl get pvc -n jenkins-k8s(查看jenkins-k8s命名空间下的pvc)

master1上在命名空间下创建sa账号,名称为jenkins-k8s

[root@master1 jenkins~]# kubectl create sa jenkins-k8s-sa -n jenkins-k8s(在命名空间下创建sa账号,名称为jenkins-k8s)

master1上对sa账号进行RABC授权

[root@master1 jenkins~]# kubectl create clusterrolebinding jenkins-k8s-sa-cluster -n jenkins-k8s --clusterrole=cluster-admin --serviceaccount=jenkins-k8s:jenkins-k8s-sa(对sa账号进行RABC授权)

node1、node2上传jenkins-agent和jenkins2.502tar镜像包

node1\node2下导入jenkins2.502镜像

[root@node1\node2 ~]# ctr -n k8s.io images import jenkins2.502.tar.gz(导入jenkins2.502镜像)

node1\node2下导入jenkins-agent-maven镜像

[root@node1\node2 ~]# ctr -n k8s.io images import jenkins-agent-maven.tar.gz(导入jenkins-agent-maven镜像)

master1的root/jenkins目录,下导入Jenkins无状服务配置文件

[root@master1 jenkins~]# kubectl apply -f jenkins-deployment.yaml (应用Jenkins无状服务配置文件)
[root@master1 jenkins~]# kubectl get pods -n jenkins-k8s(查看在jenkins-k8s下的pod信息)
[root@master1 jenkins~]# kubectl logs jenkins-5496d9c64f-kjpt9 jenkins-k8s(排查错误第二种方式,查看在命名空间下的Jenkins的pod日志信息)
[root@master1 jenkins~]# kubectl delete -f jenkins-deployment.yaml(删除Jenkins无状态服务配置文件)

在nfs下将v2目录设置组号为1000,用户ID号为1000

[root@nfs ~]# chown -R 1000.1000 /data/v2(将v2目录设置组号为1000,用户ID号为1000)

master1上应用Jenkins无状服务配置文件

[root@master1 jenkins]# kubectl apply -f jenkins-deployment.yaml (应用Jenkins无状服务配置文件)
[root@master1 jenkins]# kubectl get pods -n jenkins-k8s(查看在jenkins-k8s下的pod信息)

master1上创建Jenkins服务配置文件

[root@master1 jenkins]# vim apply -f jenkins-service.yaml (创建Jenkins服务配置文件)
[root@master1 jenkins]# kubectl apply -f jenkins-service.yaml (应用Jenkins服务配置文件)
[root@master1 jenkins]# kubectl get svc -n jenkins-k8s(查看在jenkins-k8s下的服务信息)

nfs下查看管理员密码

本机web上测试:

master1 jenkins上 安装docker插件、安装docker阿里云数据源、安装docker

[root@master1]# yum install -y yum-utils device-mapper-persistent-data lvm2(安装docker插件)
[root@master1]# yum  config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(安装docker阿里云数据源)
[root@master1]# dnf -y install docker-ce(安装docker)
[root@master1]# systemctl enable --now docker(启动docker并设置开机启动)

创建docker镜像源配置文件

[root@master1]# vim /etc/docker/daemon.json(创建docker镜像源配置文件)
[root@master1]# systemctl restart docker(重启Docker)

master1、node1下编辑config.toml配置文件

[root@master1]# vim /etc/containerd/config.toml(编辑config.toml配置文件)(一个一个编辑不然容易发生错误)

master1、node1下重启containerd服务

[root@master1\node1]# systemctl restart containerd.service(重启containerd服务)

node1下导入golang

[root@node1]# docker load < golang1104.tar(导入 golang)

node1下递归地将/docker.sock更改为用户ID 1000和所属组ID 1000

[root@node1 ~]# chown -R 1000:1000 /var/run/docker.sock(递归地将/docker.sock更改为用户ID 1000 和所属组ID 1000)

node1下给/docker.sock添加777权限

[root@node1 ~]# chmod 777 /var/run/docker.sock(给/docker.sock添加777权限)

node1下给/docker添加777权限

[root@node1 ~]# chmod 777 /usr/bin/docker(给/docker添加777权限)

递归地将/docker更改为用户ID 1000和所属组ID 1000

[root@node1 ~]# chown -R 1000:1000 /usr/bin/docker(递归地将/docker更改为用户ID 1000 和所属组ID 1000)

将master1隐藏文件复制到node1的root目录下

[root@master1 ~]# scp -r /root/.kube node1:root(将master1隐藏文件复制到node1的root目录下)

node1下递归地将/.kube更改为用户ID 1000和所属组ID 1000

[root@node1 ~]# chown -R 1000:1000 /root/.kube(递归地将/.kube更改为用户ID 1000 和所属组ID 1000)

master、node1下vim /etc/hosts(编辑hosts文件)

vim /etc/hosts(编辑hosts文件)

master上将hosts文件复制剪切到192.168.7.202:/etc/hosts

scp /etc/hosts 192.168.7.202:/etc/hosts(将hosts文件复制剪切到192.168.7.202:/etc/hosts)

master1上创建开发的命名空间、创建测试、创建产品

[root@master1 ~]# kubectl create ns devlopment(创建开发的命名空间)
[root@master1 ~]# kubectl create ns qatest(创建测试)
[root@master1 ~]# kubectl create ns production(创建产品)

node1远程登录harbor仓库

[root@node1 ~]# docker login 192.168.7.202(node1远程登录harbor仓库)

master1上查看jenkins-k8s命名空间的pod信息、查看jenkins-k8s命名空间所有信息

[root@master1 ~]# kubectl get pods -n jenkins-k8s(查看jenkins-k8s命名空间的pod信息)
[root@master1 ~]# kubectl get all -n devlopment(查看jenkins-k8s命名空间所有信息)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇