基于Kubernetes/K8S构建Jenkins持续集成平台(下)

简介: Jenkins-Master-Slave架构图回顾

Jenkins-Master-Slave架构图回顾:

2387773-20220308171711369-1268596781.png


安装和配置NFS


NFS简介


NFS(Network File System),它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。我们可以利用NFS共享Jenkins运行的配置文件、Maven的仓库依赖文件等


NFS安装


我们把NFS服务器安装在20.0.0.10机器上

安装NFS服务(在所有K8S的节点都需要安装)

yum install -y nfs-utils

创建共享目录


mkdir -p /opt/nfs/jenkins


vi /etc/exports #编写NFS的共享配置


#内容如下:

/opt/nfs/jenkins *(rw,no_root_squash) *代表对所有IP都开放此目录,rw是读写


启动服务

 

systemctl enable nfs 开机启动

systemctl start nfs 启动


查看NFS共享目录

 

showmount -e 20.0.0.10



 

Kubernetes安装Jenkins-Master


创建NFS client provisioner


nfs-client-provisioner 是一个Kubernetes的简易NFS的外部provisioner,本身不提供NFS,需要现有的NFS服务器提供存储。

 

上传nfs-client-provisioner构建文件


2387773-20220308210246251-1438399793.png


其中注意修改deployment.yaml,使用之前配置NFS服务器和目录


2387773-20220308210510374-572263821.png


构建nfs-client-provisionerpod资源

 

cd nfs-client

kubectl create -f .


查看pod是否创建成功

kubectl get pods


装 Jenkins-Master

上传Jenkins-Master构建文件


2387773-20220308210246251-1438399793.png


创建kube-ops的namespace

因为我们把Jenkins-Master的pod放到kube-ops下

kubectl create namespace kube-ops


构建Jenkins-Masterpod资源

 

cd jenkins-master

kubectl create -f .


查看pod是否创建成功

kubectl get pods -n kube-ops


查看信息,并访问

查看Pod运行在那个Node上


2387773-20220308210805839-1806776709.png


查看分配的端口


2387773-20220308210837149-2021777713.png


然后去访问:http://20.0.0.70:31087/20.0.0.70k8s-node1IP


2387773-20220308211003663-761079535.png


看到这个页面就很简单了!

找到密钥复制进去登录:


2387773-20220308211038474-14770798.png


进去后就创建一个管理员用户都是老生常谈的操作了就不多说了

然后就实现的界面了!


2387773-20220308211052953-754825729.png

然后继续下面的操作!

 


设置插件下载地址:

cd /opt/nfs/jenkins/kube-ops-jenkins-home-jenkins-0-pvc-e90ef63e-5bf2-4747-a9b3-e8fe13ae21cf/updates 

sed -i 's/http:\/\/updates.jenkins- ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json


Manage Plugins点击Advanced,把Update Site改为

国内插件下载地址https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

 

 

先安装基本的插件:“


  1. Localization:Chinese
  2. Git
  3. Pipeline
  4. Extended Choice Parameter

还有一个jenkins与k8s整合的插件:

  1. kubernetes

 

重启Jenkins


实现JenkinsKubernetes


系统管理->系统配置->云->新建云->Kubernetes


2387773-20220308223649811-1101937960.png

2387773-20220308223725807-1336577585.png

2387773-20220308223754769-1328973855.png


kubernetes 地 址 采 用 了 kube 的 服 务 器 发 现 :https://kubernetes.default.svc.cluster.local 


namespace填kube-ops,然后点击Test Connection,如果出现 Connection test successful 的提示信息证明 Jenkins 已经可以和 Kubernetes 系统正常通信


Jenkins URL 地址:http://jenkins.kube-ops.svc.cluster.local:8080



构建Jenkins-Slave自定义镜像


Jenkins-Master在构建Job的时候,Kubernetes会创建Jenkins-Slave的Pod来完成Job的构建。我们选择  运行Jenkins-Slave的镜像为官方推荐镜像:jenkins/jnlp-slave:latest,但是这个镜像里面并没有Maven    环境,为了方便使用,我们需要自定义一个新的镜像:


准备材料:


2387773-20220308224012562-452767536.png


Dockerfile文件内容如下:

 

FROM jenkins/jnlp-slave:latest


MAINTAINER lvbu


# 切换到 root 账户进行操作

USER root


# 安装 maven

COPY apache-maven-3.6.2-bin.tar.gz .


RUN tar -zxf apache-maven-3.6.2-bin.tar.gz && \

   mv apache-maven-3.6.2 /usr/local && \

   rm -f apache-maven-3.6.2-bin.tar.gz && \

   ln -s /usr/local/apache-maven-3.6.2/bin/mvn /usr/bin/mvn && \

   ln -s /usr/local/apache-maven-3.6.2 /usr/local/apache-maven && \

   mkdir -p /usr/local/apache-maven/repo


COPY settings.xml /usr/local/apache-maven/conf/settings.xml


USER jenkins

 

然后构建镜像:然后查看

docker build -t jenkins-slave-maven:latest .


2387773-20220308224230341-889380513.png

下面要做的就是修改指向harbor:K8s三台都要做


2387773-20220308224333871-1124280760.png


然后k8s master登录harbor:

docker login -u admin -p Harbor12345 20.0.0.50:85

docker tag jenkins-slave-maven:latest 20.0.0.50:85/library/jenkins-slave-maven:latest

docker push 20.0.0.50:85/library/jenkins-slave-maven:latest


2387773-20220308224608914-452775931.png

2387773-20220308224619391-2105473162.png


测试Jenkins-Slave是否可以创建


创建一个Jenkins流水线项目


2387773-20220308224702801-523095660.png


添加凭据:


2387773-20220308224743395-265228594.png


编写Pipeline,从GItlab拉取代码(使用http方式)使用流水线片段生成器

def git_address = "http://20.0.0.20:82/root/tensquare_back.git"

def git_auth = "904eff5d-41c8-44ad-ba24-7f539a0edb96"


//创建一个Pod的模板,label为jenkins-slave

podTemplate(label: 'jenkins-slave', cloud: 'kubernetes', containers: [

   containerTemplate(

       name: 'jnlp',

       image: "20.0.0.50:85/library/jenkins-slave-maven:latest"

   )

 ]

)

{

   //引用jenkins-slave的pod模块来构建Jenkins-Slave的pod

   node("jenkins-slave"){

       stage('拉取代码'){

           checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]])

       }

   }

}


2387773-20220308224903889-533093209.png


然后开始构建:


2387773-20220308225048605-411396646.png


在构建前再开一台jenkins去看节点列表,初始状态是,一个主节点!然后构建的时候刷新会看到从节点上线构建,构建完就会自动下线释放资源

主节点不参与构建

2387773-20220308225336326-1685178326.png

2387773-20220308225344141-394512713.png








相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
运维 Kubernetes 监控
构建高效自动化运维体系:基于Docker和Kubernetes的实践指南
【2月更文挑战第30天】 在当今快速发展的云计算时代,传统的IT运维模式已难以满足业务的敏捷性和稳定性需求。本文深入探讨了如何通过Docker容器化技术和Kubernetes集群管理工具构建一个高效、可靠的自动化运维体系。文章首先概述了容器化技术和微服务架构的基本概念,随后详细阐述了基于Docker的应用打包、部署流程,以及Kubernetes在自动化部署、扩展和管理容器化应用中的关键作用。最后,文中通过案例分析,展示了如何在实际场景中利用这些技术优化运维流程,提高系统的整体效率和可靠性。
|
1月前
|
小程序 调度 数据库
jeecg-boot集成xxl-job调度平台,每秒/每分钟/手动都能执行成功,但是设置固定时间不触发?
jeecg-boot集成xxl-job调度平台,每秒/每分钟/手动都能执行成功,但是设置固定时间不触发?
34 0
|
7天前
|
SQL 机器学习/深度学习 数据可视化
Pandas与其他库的集成:构建强大的数据处理生态
【4月更文挑战第16天】Pandas在数据处理中扮演关键角色,但与其他Python库如NumPy、Matplotlib/Seaborn、Scikit-learn和SQL的集成使其功能更加强大。结合NumPy进行数值计算,搭配Matplotlib/Seaborn实现高效可视化,与Scikit-learn联用加速机器学习,以及与SQL集成便于数据库操作,这些都构建了一个全面的数据处理生态系统,提升了数据科学家的工作效率,助力于数据价值的发掘。
|
10天前
|
Kubernetes 监控 Cloud Native
构建高效云原生应用:基于Kubernetes的微服务治理实践
【4月更文挑战第13天】 在当今数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以支持其业务敏捷性和可扩展性。本文深入探讨了利用Kubernetes作为容器编排平台,实现微服务架构的有效治理,旨在为开发者和运维团队提供一套优化策略,以确保云原生应用的高性能和稳定性。通过分析微服务设计原则、Kubernetes的核心组件以及实际案例,本文揭示了在多变的业务需求下,如何确保系统的高可用性、弹性和安全性。
15 4
|
9天前
|
Kubernetes 搜索推荐 Docker
使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装
使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装
48 17
|
21天前
|
机器学习/深度学习 人工智能 自然语言处理
构建未来:移动应用中的人工智能集成与用户体验优化
【4月更文挑战第3天】 随着人工智能技术的不断进步,移动应用领域正在经历一场革命。本文将深入探讨移动应用中人工智能集成的最新趋势,以及如何通过这些技术提升用户体验。我们将分析自然语言处理、机器学习和计算机视觉等AI技术在移动应用中的具体应用场景,并讨论它们对用户互动、个性化服务和智能推荐系统的影响。此外,文章还将提出一系列策略,帮助开发者在保持用户隐私和数据安全的前提下,有效地集成人工智能功能。
|
23天前
|
Kubernetes 安全 网络安全
搭建k8s集群kubeadm搭建Kubernetes二进制搭建Kubernetes集群
搭建k8s集群kubeadm搭建Kubernetes二进制搭建Kubernetes集群
105 0
|
25天前
|
运维 Kubernetes 持续交付
构建高效自动化运维体系:基于Docker和Kubernetes的最佳实践
在现代云计算环境中,自动化运维成为保障系统稳定性与提升效率的关键。本文深入探讨了如何利用Docker容器化技术和Kubernetes容器编排工具构建一个高效、可靠的自动化运维体系。文中不仅介绍了相关的技术原理,还结合具体案例分析了实施过程中的常见问题及解决方案,为读者提供了一套行之有效的最佳实践指南。
|
28天前
|
jenkins Java 持续交付
Docker搭建持续集成平台Jenkins最简教程
Jenkins 是一个广泛使用的开源持续集成工具,它能够自动化构建、测试和部署软件项目。在本文中,我们将使用 Docker 搭建一个基于 Jenkins 的持续集成平台。
113 2
|
29天前
|
Kubernetes Cloud Native Docker
【云原生】kubeadm快速搭建K8s集群Kubernetes1.19.0
Kubernetes 是一个开源平台,用于管理容器化工作负载和服务,提供声明式配置和自动化。源自 Google 的大规模运维经验,它拥有广泛的生态支持。本文档详细介绍了 Kubernetes 集群的搭建过程,包括服务器配置、Docker 和 Kubernetes 组件的安装,以及 Master 和 Node 的部署。此外,还提到了使用 Calico 作为 CNI 网络插件,并提供了集群功能的测试步骤。
218 0

热门文章

最新文章