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 -y
 systemctl 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: v1
 kind: PersistentVolume
 metadata:
 name: jenkins-k8s-pv
 spec:
 capacity:
 storage: 10Gi
 accessModes:- ReadWriteMany
 nfs:
 server: 192.168.58.231
 path: /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加映射端口访问:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

windows下本地部署安装hadoop+scala+spark-【不需要虚拟机】

注意版本依赖【本实验版本如下】 Hadoop 3.1.1 spark 2.3.2 scala 2.11 1.依赖环境 1.1 java 安装java并配置环境变量【如果未安装搜索其他教程】 环境验证如下&#xff1a; C:\Users\wangning>java -version java version "1.8.0_261" Java(TM) SE Runti…

【Android】布局文件layout.xml文件使用控件属性android:layout_weight使布局较为美观,以RadioButton为例

目录 说明举例 说明 简单来说&#xff0c;android:layout_weight为当前控件按比例分配剩余空间。且单个控件该属性的具体数值不重要&#xff0c;而是多个控件的属性值之比发挥作用&#xff0c;例如有2个控件&#xff0c;各自的android:layout_weight的值设为0.5和0.5&#xff0…

新项目上传gitlab

Git global setup git config --global user.name “FUFANGYU” git config --global user.email “fyfucnic.cn” Create a new repository git clone gitgit.dev.arp.cn:casDs/sawrd.git cd sawrd touch README.md git add README.md git commit -m “add README” git push…

AI智能日志分析系统

文章目录 1.combinations-intelligent-analysis-starter1.目录结构2.pom.xml3.自动配置1.IntelligentAnalysisAutoConfiguration.java2.spring.factories 2.combinations-intelligent-analysis-starter-demo1.目录结构2.pom.xml3.application.yml4.IntelligentAnalysisApplicat…

K8s运维管理平台 - xkube体验:功能较多

目录 简介Lic安装1、需要手动安装MySQL&#xff0c;**建库**2、启动命令3、[ERROR] GetNodeMetric Fail:the server is currently unable to handle the request (get nodes.metrics.k8s.io qfusion-1) 使用总结优点优化 补充1&#xff1a;layui、layuimini和beego的详细介绍1.…

MacOS安装Docker battery-historian

文章目录 需求安装battery-historian实测配置国内源相关文章 需求 分析Android电池耗电情况、唤醒、doze状态等都要用battery-historian&#xff0c; 在 MacOS 上安装 battery-historian&#xff0c;可以使用 Docker 进行安装runcare/battery-historian:latest。装完不需要做任…

VUE elTree 无子级 隐藏展开图标

这4个并没有下级节点&#xff0c;即它并不是叶子节点&#xff0c;就不需求展示前面的三角展开图标! 查阅官方文档如下描述&#xff0c;支持bool和函数回调处理&#xff0c;这里咱们选择更灵活的函数回调实现。 给el-tree结构配置一下props&#xff0c;注意&#xff01; :pr…

AWScurl笔记

摘要 AWScurl是一款专为与AWS服务交互设计的命令行工具&#xff0c;它模拟了curl的功能并添加了AWS签名版本4的支持。这一特性使得用户能够安全有效地执行带有AWS签名的请求&#xff0c;极大地提升了与AWS服务交互时的安全性和有效性。 GitHub - okigan/awscurl: curl-like acc…

JDK自带工具解析与生产问题定位指南(一)

1. 引言 Java开发工具包&#xff08;JDK&#xff09;内置了强大的诊断工具集&#xff0c;用于监控、分析和调试Java应用程序。这些工具涵盖了从进程管理、内存分析到性能监控的各个方面。本文将介绍一些最常用的Java开发工具&#xff0c;包括jps、jmap、jstat、jcmd、jstack、…

基于vscode的cppcmake调试环境配置

1. 创建项目文件 创建cpp文件及CMakeLists.txt文件 helloOpenCV.cpp #include <opencv2/opencv.hpp> int main() {// 创建图像&#xff0c;初始化为黑色cv::Mat image cv::Mat::zeros(200, 300, CV_8UC3);// 设置为纯绿色 (BGR格式&#xff1a;0, 255, 0)image.setTo…

leetcode刷题记录(一百)——121. 买卖股票的最佳时机

&#xff08;一&#xff09;问题描述 121. 买卖股票的最佳时机 - 力扣&#xff08;LeetCode&#xff09;121. 买卖股票的最佳时机 - 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票&#xff0c;并…

算法每日双题精讲 —— 二分查找(寻找旋转排序数组中的最小值,点名)

&#x1f31f;快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。 &#x1f31f; 别再犹豫了&#xff01;快来订阅我们的算法每日双题精讲专栏&#xff0c;一起踏上算法学习的精彩之旅吧&#x1f4aa; 在算法的…

Java中的依赖注入(可以不使用@Autowired注解)

一、Autowired Autowired 是 Spring 框架中一个非常重要的注解&#xff0c;用于实现依赖注入&#xff08;Dependency Injection, DI&#xff09;。它可以让 Spring 容器自动将符合条件的 Bean 注入到标注了该注解的字段、构造函数或方法中&#xff0c;从而简化了代码的编写&am…

Android开发,待办事项提醒App的设计与实现(个人中心页)

文章目录 1. 编写UI布局2. 实现逻辑3. 运行效果图3. 关于作者其它项目视频教程介绍 Android开发&#xff0c;待办事项提醒App的设计与实现&#xff1a; https://blog.csdn.net/jky_yihuangxing/article/details/145277956?spm1001.2014.3001.5501 1. 编写UI布局 fragment_mi…

分布式系统学习:小结

关于分布式系统的学习就暂时告一段落了&#xff0c;下面整理了个思维导图&#xff0c;只涉及分布式的一些相关概念&#xff0c;需要的可自取。后面准备写下关于AI编程相关的技术文章&#xff0c;毕竟要紧跟时代的脚步嘛 思维导图xmind文件下载地址&#xff1a;https://download…

Ansible自动化运维实战--复制模块和用户模块(3/8)

文章目录 一、复制模块&#xff08;copy&#xff09;1.1、功能1.2、常用参数1.3、示例1.4、注意事项 二、用户模块&#xff08;user&#xff09;2.1、功能2.2、常用参数2.3、示例 一、复制模块&#xff08;copy&#xff09; 1.1、功能 用于将本地文件复制到远程主机。可以指定…

深度解析iTransformer:维度倒置与高效注意力机制的结合

今天&#xff0c;我想和大家一起探讨一篇非常有意思的Paper——iTransformer。作为一种针对多变量时间序列预测的新型架构&#xff0c;iTransformer 引入了颠覆性的设计思路&#xff0c;特别是在维度倒置和高效自注意力机制上的创新&#xff0c;展现出了出色的性能和适应性。 …

蓝桥杯模拟算法:多项式输出

P1067 [NOIP2009 普及组] 多项式输出 - 洛谷 | 计算机科学教育新生态 这道题是一道模拟题&#xff0c;我们需要分情况讨论&#xff0c;我们需要做一下分类讨论 #include <iostream> #include <cstdlib> using namespace std;int main() {int n;cin >> n;for…

82,【6】BUUCTF WEB .[CISCN2019 华东南赛区]Double Secret

进入靶场 提到了secret&#xff0c;那就访问 既然这样&#xff0c;那就传参看能不能报错 这个页面证明是有用的 传参长一点就会报错&#xff0c;传什么内容无所谓 所以网站是flask框架写的 有一个颜色深一点&#xff0c;点开看看 rc4加密url编码 import base64 from urllib…

MySQL--》深度解析InnoDB引擎的存储与事务机制

目录 InnoDB架构 事务原理 MVCC InnoDB架构 从MySQL5.5版本开始默认使用InnoDB存储引擎&#xff0c;它擅长进行事务处理&#xff0c;具有崩溃恢复的特性&#xff0c;在日常开发中使用非常广泛&#xff0c;其逻辑存储结构图如下所示&#xff0c; 下面是InnoDB架构图&#xf…