参考:https://www.cnblogs.com/rb2010/p/16195443.html
https://blog.csdn.net/qq_43470725/article/details/135345309

我的 账号:admin 密码123456

jenkins插件清华镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

docker 拉取镜像到本地:

版本号要下载和插件相对应的,最好是最新的版本。可以去官网看最新的版本是哪个:
https://www.jenkins.io/download/

docker pull docker.io/jenkins/jenkins:2.440

使用命令查看已经下载好的镜像:

docker images

配置端口:
在这里插入图片描述

在这里插入图片描述

配置资源限制!

这里一定要配置资源限制,要不然用maven打包时,会一直oom的
在这里插入图片描述

配置卷挂载:使用nfs

参考:https://www.kuboard.cn/learning/k8s-intermediate/persistent/nfs.html#%E5%9C%A8%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%B5%8B%E8%AF%95nfs

配置NFS服务器

安装nfs

yum install -y rpcbind nfs-utils

编辑文件:

vim /etc/exports

写入:

/root/nfs_root/ *(insecure,rw,sync,no_root_squash)

执行以下命令,启动 nfs 服务

# 创建共享目录,如果要使用自己的目录,请替换本文档中所有的 /root/nfs_root/
mkdir /root/nfs_root

systemctl enable rpcbind
systemctl enable nfs-server

systemctl start rpcbind
systemctl start nfs-server
exportfs -r

检查配置是否生效

exportfs

在客户端测试nfs

yum install -y nfs-utils

执行以下命令检查 nfs 服务器端是否有设置共享目录

# showmount -e $(nfs服务器的IP)
showmount -e 172.17.216.82
# 输出结果如下所示
Export list for 172.17.216.82:
/root/nfs_root *

输出结果如下所示

/root/nfs_root /root/nfs_root

在这里插入图片描述

注意卷挂载这里要讲nfs服务器上准备的文件权限设为可使用的才行!

chmod 777 jenkins

在这里插入图片描述

要能安装插件,访问外网,还需要配置dns,和主机相关设置,将hostNetwork设置为true

在这里插入图片描述

参考:https://blog.csdn.net/justlpf/article/details/132233455
在这里插入图片描述
在这里插入图片描述

nfs卷挂载初始化的密码文件要在nfs服务器上才能找的到:

/root/nfs_root/jenkins/secrets

在这里插入图片描述
配置jdk和maven:jdk是jenkins自己会带有的,可以直接搜索看到本容器的jdk的位置:

java -version

find / -name "openjdk"

在这里插入图片描述
然后在网上下载好maven包,然后将它放在jenkins_home的挂载路径下去:
在这里插入图片描述

记得修改settings文件,添加阿里镜像

<mirror>
      <id>alimaven</id>
      <mirrorOf>central</mirrorOf>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>

k8s部署jenkins时,虚拟内存不足的情况出现:
在这里插入图片描述
在这里插入图片描述

新增虚拟内存

开启虚拟内存:https://my.oschina.net/u/2306127/blog/657269
1、查看内存使用情况

free -m

在这里插入图片描述
虚拟空间为0
2、创建虚拟内存磁盘卷

# 大概count=2024288,2G左右,可以视磁盘大小和需求创建。
# 默认存放在/swap/swapadd,可以是自己的任何目录。阿里云服务器默认没有swap,需要自己mkdir /swap创建。
dd if=/dev/zero of=/swapadd bs=1024 count=2024288

3、将磁盘卷转为虚拟内存卷

mkswap /swapadd

4、启用虚拟内存服务

swapon /swapadd

5、再来查看内存使用情况

free -m

在这里插入图片描述
6、关闭虚拟内存服务

swapoff -v /swapadd

7、移动虚拟内存空间
如果当前的虚存所在的磁盘空间不够,可以首先关闭虚存服务,将其移动到别的磁盘,再启用即可。

swapoff -v /swapadd
mv /swapadd /mnt/swap
swapon /swapadd

在输出编译日志的时候,能看到maven执行的jar保存的地址在哪里:
/var/jenkins_home/workspace/my_test/gencell-test/target/gencell-test.jar
在这里插入图片描述
能正常编译成功打包然后看见你的shell输出基本的环境就搭建好了,接下来就可以编写流水线了!
在这里插入图片描述

pipeline生成器

两个关键命令:

1、通过yaml生成pod

kubectl apply -f ./gencell-test.yaml

直接复制可能会有下面的这些冲突,删除掉就好了:
参考:
https://stackoverflow.com/questions/51297136
在这里插入图片描述

  creationTimestamp:   
  resourceVersion:  
  selfLink:   
  uid:  
kubectl rollout restart deployment <deployment_name> -n <namespace>

2、滚动部署命名空间为default的gencell-test

kubectl rollout restart deployment gencell-test -n default

借助piple片段生成器生成piple脚本:

安装k8s插件 :名称通常是 “Kubernetes Continuous Deploy” 或 “Kubernetes”
安装 kubernetes cli 插件,否则会报错
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

jenkins使用kubectl

使用Jenkins容器时,是访问不到kubectl命令的和其相关的文件,可以将这个kubectl和相关的文件都复制到挂载的文件夹下面去!

rsync -av kubectl root@hadoop102:/root/nfs_root/jenkins/k8s/
rsync -av k8s-yml/ root@hadoop102:/root/nfs_root/jenkins/k8s/

在这里插入图片描述
在这里插入图片描述
复制成功!

pipeline脚本:

pipeline {
    agent any
    tools {
        maven 'maven'
    }
    environment {
        APP_PROFILE='dev'
    }
    stages {
        stage('拉取代码') {
            steps {
                echo '拉取代码开始!'
                git credentialsId: '1a3fae19-50bd-47fd-99cc-f88ef90c04d5', url: 'https://gitee.com/deng-chaosheng/gencell.git'
                echo '拉取代码完毕!'
            }
        }
        stage('构建代码') {
            steps {
                echo '构建代码开始!'
                sh 'mvn clean package -Dfile.encoding=UTF-8 -DskipTests=true'
                echo '构建代码成功!'
            }
        }
        stage('部署代码') {
            steps {
                echo "===========================应用部署配置==========================="
                withKubeConfig(caCertificate: '', clusterName: '', contextName: '', credentialsId: 'k8s', namespace: '', restrictKubeConfigAccess: false, serverUrl: 'https://192.168.10.103:6443') {
                    sh '/var/jenkins_home/k8s/kubectl version'
                    sh '/var/jenkins_home/k8s/kubectl apply -f /var/jenkins_home/k8s/gencell-test.yaml'
                }
            }
        }
       
       
    }
}

maven运行很吃内存,如果是虚拟机运行,还用pod的话,可能直接就OOM了,所以介意配置jenkins的容器要给大点内存容量才行,再运行!
在这里插入图片描述

想在jenkins中运行docker的挂载配置:

参考:https://blog.csdn.net/weixin_42763696/article/details/134499562

/usr/bin/docker (这里是为了为jenkins容器能调用host主机的docker所做的映射)

/var/run/docker.sock(此映射卷主要用于执行docker镜像内的docker命令执行 共享当前docker的状态)
都挂载到容器中就可以了
注意要在对应的服务器上安装docker,并且将docker-sock设置为任何用户可操作的权限!
在这里插入图片描述
当不指定类型的时候就选择EmptyString
在这里插入图片描述

下面来使用脚本文件进行自动化流水线部署!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐