K8S部署DevOps自动化运维平台

持续集成(CI)

        持续集成强调开发人员提交了新代码之后,立刻自动的进行构建、(单元)测试。根据测试结果,我 们可以确定新代码和原有代码能否正确地集成在一起。持续集成过程中很重视自动化测试验证结果,对 可能出现的一些问题进行预警,以保障最终合并的代码没有问题。 常见的持续集成工具:

 Jenkins:Jenkins 是用 Java 语言编写的,是目前使用最多和最受欢迎的持续集成工具,使用 Jenkins,可以自动监测到 git 或者 svn 存储库代码的更新,基于最新的代码进行构建,把构建好的 源码或者镜像发布到生产环境。Jenkins 还有个非常好的功能:它可以在多台机器上进行分布式地 构建和负载测试。

持续交付

        持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」 (production-like environments)中。交付给质量团队或者用户,以供评审。如果评审通过,代码就 进入生产阶段。 如果所有的代码完成之后一起交付,会导致很多问题爆发出来,解决起来很麻烦,所以持续集成,也 就是没更新一次代码,都向下交付一次,这样可以及时发现问题,及时解决,防止问题大量堆积。

 持续部署

        持续部署是指当交付的代码通过评审之后,自动部署到生产环境中。持续部署是持续交付的最高阶 段。 Puppet,SaltStack 和 Ansible 是这个阶段使用的流行工具。容器化工具在部署阶段也发挥着重要作 用。 Docker 和 k8s 是流行的工具,有助于在开发,测试和生产环境中实现一致性。 除此之外,k8s 还 可以实现自动扩容缩容等功能。 

k8s 集群环境 

 

集群角色IP主机名
控制节点192.168.58.231master
工作节点192.168.58.232node1
工作节点192.168.58.233node2

安装 Jenkins

安装 nfs 服务

yum install nfs-utils -ysystemctl enable nfs --now
[root@k8s-master ~]# mkdir -pv /data/v1
[root@k8s-master ~]#  vim /etc/exports
[root@k8s-master ~]#  exportfs -arv
exporting *:/data/v1
[root@k8s-master ~]#  systemctl restart nfs
[root@k8s-master ~]#  chmod -R 777 /data/v1/

 在 kubernetes 中部署 jenkins

创建PV

[root@k8s-master jenkins]# mv pv pv.yaml
[root@k8s-master jenkins]# kubectl apply -f pv.yaml 
error: error parsing pv.yaml: error converting YAML to JSON: yaml: line 2: mapping values are not allowed in this context
[root@k8s-master jenkins]# cat pv.yaml 
apiVersion: v1kind: PersistentVolumemetadata:name: jenkins-k8s-pvspec:capacity:storage: 10GiaccessModes:- ReadWriteManynfs:server: 192.168.58.231path: /data/v1
[root@k8s-master jenkins]# vim pv.yaml 
[root@k8s-master jenkins]# kubectl apply -f pv.yaml 
persistentvolume/jenkins-k8s-pv created
[root@k8s-master jenkins]#  kubectl get pv
NAME             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
jenkins-k8s-pv   10Gi       RWX            Retain           Available                                   8s

 创建PVC

[root@k8s-master jenkins]# vim pvc.yaml
[root@k8s-master jenkins]# kubectl apply -f pvc.yaml 
persistentvolumeclaim/jenkins-k8s-pvc created
[root@k8s-master jenkins]# kubectl get pvc
No resources found in default namespace.
[root@k8s-master jenkins]# kubectl get pvc -n jenkins-k8s
NAME              STATUS   VOLUME           CAPACITY   ACCESS MODES   STORAGECLASS   AGE
jenkins-k8s-pvc   Bound    jenkins-k8s-pv   10Gi       RWX                           19s
[root@k8s-master jenkins]#  kubectl create sa jenkins-k8s-sa -n jenkins-k8s
serviceaccount/jenkins-k8s-sa created
[r
[root@k8s-master jenkins]# kubectl create clusterrolebinding jenkins-k8s-sa-cluster -n jenkins-k8s --clusterrole=cluster-admin --serviceaccount=jenkins-k8s:jenkins-k8s-sa 
clusterrolebinding.rbac.authorization.k8s.io/jenkins-k8s-sa-cluster created

 通过 deployment 部署 jenkins

使用docker镜像拉取Jenkins

[root@k8s-node2 ~]# docker pull jenkins/jenkins:2.462.2-lts
2.462.2-lts: Pulling from jenkins/jenkins
903681d87777: Already exists 
f76fc73f1c48: Already exists 
fc1d2482b243: Already exists 
5bae62448211: Already exists 
9020ffff6008: Already exists 
8a9191d56587: Already exists 
da374eff6f05: Already exists 
31aceeb653c9: Pull complete 
061dcd72fbac: Pull complete 
79716cc251e4: Pull complete 
628c862ab449: Pull complete 
d7dec4cb14f6: Pull complete 
Digest: sha256:95313257a8cddbef83c74e3d577ea139aeae30c3c014ddcaa83a72b60409bbe1
Status: Downloaded newer image for jenkins/jenkins:2.462.2-lts
docker.io/jenkins/jenkins:2.462.2-lts
[root@k8s-node2 ~]# docker images
REPOSITORY                                                                    TAG           IMAGE ID       CREATED        SIZE
jenkins/jenkins                                                               2.462.2-lts   7a7add0bf3da   4 months ago   470MB

 编辑jenkins-deployment.yaml文件

[root@k8s-master jenkins]# kubectl apply -f jenkins-deployment.yaml 
deployment.apps/jenkins created
[root@k8s-master jenkins]#  kubectl get pods -n jenkins-k8s -o wide
NAME                       READY   STATUS    RESTARTS   AGE   IP               NODE        NOMINATED NODE   READINESS GATES
jenkins-5d574cf778-jrbvr   0/1     Running   0          10s   10.244.169.129   k8s-node2   <none>           <none>
[root@k8s-master jenkins]#  kubectl get pods -n jenkins-k8s -o wide
NAME                       READY   STATUS    RESTARTS   AGE   IP               NODE        NOMINATED NODE   READINESS GATES
jenkins-5d574cf778-jrbvr   0/1     Running   0          20s   10.244.169.129   k8s-node2   <none>           <none>

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

[root@k8s-master jenkins]# vim jenkins-service.yaml
[root@k8s-master jenkins]# kubectl apply -f jenkins-service.yaml 
service/jenkins-service created
[root@k8s-master jenkins]#  kubectl get svc -n jenkins-k8s 
NAME              TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                          AGE
jenkins-service   NodePort   10.96.125.185   <none>        8080:30002/TCP,50000:31909/TCP   9s

 通过本机ip加映射端口访问:

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

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

相关文章

SpringCloud系列教程:微服务的未来(十七)监听Nacos配置变更、更新路由、实现动态路由

前言 在微服务架构中&#xff0c;API 网关是各个服务之间的入口点&#xff0c;承担着路由、负载均衡、安全认证等重要功能。为了实现动态的路由配置管理&#xff0c;通常需要通过中心化的配置管理系统来实现灵活的路由更新&#xff0c;而无需重启网关服务。Nacos 作为一个开源…

Lua 环境的安装

1.安装Lua运行环境 本人采用的是在windows系统中使用cmd指令方式进行安装&#xff0c;安装指令如下&#xff1a; winget install "lua for windows" 也曾使用可执行程序安装过&#xff0c;但由于电脑是加密电脑&#xff0c;最后都已失败告终。使用此方式安装可以安…

03-画P封装(制作2D+添加3D)

画P封装的方法2D制作3D添加 使用P封装自己画0603格式的电阻的P封装1. 看规格书,找参数2. 创建一个新的P封装3. 灯泡两侧放焊盘4.设置焊盘大小和形状5.根据坐标定义中间间隔: L/2原则6. 画最外层丝印(丝印层直接围住即可)7.在平面的P封装上,添加3D立体封装库 立创商城下载P封装向…

libOnvif通过组播不能发现相机

使用libOnvif库OnvifDiscoveryClient类&#xff0c; auto discovery new OnvifDiscoveryClient(QUrl(“soap.udp://239.255.255.250:3702”), cb.Build()); 会有错误&#xff1a; end of file or no input: message transfer interrupted or timed out(30 sec max recv delay)…

高德开放平台:红绿灯倒计时与车车协同安全预警,开启出行新时代

近期&#xff0c;有幸参加了“高德开放平台第二期开发者开放日”。这次活动不仅有机会近距离了解高德地图的前沿技术动态和最新产品&#xff0c;还看到了高德开放平台在各个行业中的广泛应用。高德展厅里&#xff0c;每一处展示都让人感到震撼&#xff0c;仿佛置身于一个充满无…

C语言------指针从入门到精通

第一部分: 前言: 本篇文章主要划分为两大部分: 第一部分适合零基础的同学,主要学习了解指针的概念&#xff0c;对指针大概有个概念。如果你已经有基础,即可跳过第一部分的内容。 第二部分主要是分解指针的实现逻辑,通过19个例子,再结合代码公式把不同类型的指针及指针的应用详细…

JavaScript赋能智能网页设计

构建AI驱动的实时风格迁移系统 案例概述 本案例将实现一个基于深度学习的实时图像风格迁移系统&#xff0c;通过浏览器端神经网络推理实现以下高级特性&#xff1a; WebAssembly加速的ONNX模型推理 WebGL Shader实现的风格混合算法 WebRTC实时视频流处理 基于Web Workers的…

‌Windows系统cmd命令行创建vue项目

Windows系统cmd命令行创建vue项目 首先确保node.js已安装(也就是JavaScript运行时环境已安装)找到我们要创建项目的文件夹 直接在路径上输入cmd 按Enter(回车键)后&#xff0c;弹出命令行窗口在命令行窗口输入npm init vuelatest,执行该命令&#xff0c;将会安装并执行Vue项目…

[C语言日寄]exit函数的使用及其拓展

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋&#xff1a;这是一个专注于C语言刷题的专栏&#xff0c;精选题目&#xff0c;搭配详细题解、拓展算法。从基础语法到复杂算法&#xff0c;题目涉及的知识点全面覆盖&#xff0c;助力你系统提升。无论你是初学者&#xff0c;还是…

GestureDetector组件的功能与用法

文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了ListView响应事件的内容,本章回中将介绍GestureDetector Widget.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1 概念介绍 我们在这里介绍的GestureDetector是一个事件响应Widget,它可以响应双击事件&…

Java Web-Cookie与Session

会话跟踪技术 会话跟踪技术是一种在 Web 应用程序中跟踪用户会话状态的机制&#xff0c;它允许服务器在多个请求之间识别和关联属于同一用户的请求&#xff0c;以便在整个会话过程中保持用户相关的信息。以下是几种常见的会话跟踪技术&#xff1a; Cookie 概念&#xff1a;Cook…

线性回归、协同过滤、基于内容过滤、主成分分析(PCA)

线性回归 使用item特征用户打分标签线性回归训练&#xff0c;最小化成本函数&#xff0c;得到每个用户的参数 协同过滤 协同过滤基于一个核心假设&#xff1a;相似的用户会有相似的兴趣&#xff0c;因此可以通过分析相似用户历史行为&#xff0c;来预测当前用户可能感兴趣的i…

WPS数据分析000009

一、函数与数据透视表统计数据时效率差异 函数 F4绝对引用 数据透视表 二、数据透视表基础操作 数据透视表&#xff1a;一个快速的生成报表的工具 显示详细信息 方式一; 方式二&#xff1a; 移动数据透视表 删除数据透视表 复制粘贴数据透视表 留足空间&#xff0c;否则拖动字…

idea实用设置

一.View 1.配置工具包方便按 二.File->Settings 点开设置然后进行后面的配置 1.这个看个人习惯 2.更新 3.更改菜单字体大小 4.鼠标控制字体大小 5.文件默认字体大小 6. 代码的智能提示功能 7.自动导包 8.编码 9.取消双击shift搜索

CE-PBFT:大规模联盟区块链的高可用一致性算法

摘要 区块链已广泛应用于农产品溯源、供应链管理、物流运输等各个领域。作为联盟区块链不可缺少的组成部分&#xff0c;共识算法保证了网络中每个节点的一致性和可信度。然而&#xff0c;由于通信过程的复杂性&#xff0c;现有的大规模联盟区块链场景中的共识算法存在低系统吞…

基于Springboot用axiospost请求接收字符串参数为null的解决方案

问题 ​ 今天在用前端 post 请求后端时发现&#xff0c;由于是以 Json对象的形式传输的&#xff0c;后端用两个字符串形参无法获取到对应的参数值 前端代码如下&#xff1a; axios.post(http://localhost:8083/test/postParams,{a: 1, b:2} ,{Content-Type: application/jso…

【云安全】云原生-K8S-简介

K8S简介 Kubernetes&#xff08;简称K8S&#xff09;是一种开源的容器编排平台&#xff0c;用于管理容器化应用的部署、扩展和运维。它由Google于2014年开源并交给CNCF&#xff08;Cloud Native Computing Foundation&#xff09;维护。K8S通过提供自动化、灵活的功能&#xf…

【架构面试】一、架构设计认知

涉及分布式锁、中间件、数据库、分布式缓存、系统高可用等多个技术领域&#xff0c;旨在考查候选人的技术深度、架构设计能力与解决实际问题的能力。 1. 以 Redis 是否可以作为分布式锁为例&#xff1a; 用 Redis 实现分布式锁会存在哪些问题&#xff1f; 死锁&#xff1a;如果…

Linux:文件与fd(未被打开的文件)

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习《Linux&#xff1a;文件与fd&#xff08;未被打开的文件&#xff09;》&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 如果本篇文章对你有帮助&#xf…

流行的开源高性能数据同步工具 - Apache SeaTunnel 整体架构运行原理

概述 背景 数据集成在现代企业的数据治理和决策支持中扮演着至关重要的角色。随着数据源的多样化和数据量的迅速增长&#xff0c;企业需要具备强大的数据集成能力来高效地处理和分析数据。SeaTunnel通过其高度可扩展和灵活的架构&#xff0c;帮助企业快速实现多源数据的采集、…