提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- maven
- 生命周期
- 二方包
- maven的配置
- Java内存管理
- 堆
- jvm内存调优
- GC流程
- G1垃圾回收器
- CPU负载及使用率
- docker
- 二进制安装及配置
- nexus
- nginx做反向代理
- k8s
- pod生命周期
- 探针
- linux中fork和exec的区别
- python的安装步骤
- 使用dockerfile构建镜像,并作为yaml文件中的镜像源
- 资源限制及优先级
- iptables四表五链
- jenkins
- 安装
- pipeline
- 结合gitlab
- 自动构建大致流程
提示:以下是本篇文章正文内容,下面案例可供参考
maven
生命周期
Maven生命周期就是为了对所有构建过程进行抽象和统一;包括项目清理、初始化、编译、打包、测试、部署等几乎所有构建步骤;生命周期可以理解为构建工程的步骤。
Maven中有三套相互独立的生命周期:
Clean Lifecycle:构建前的清理工作 Mvn clean
Default(build) Lifecycle:构建的核心部分:编译、测试、打包、部署等 Mvn compile test package install deploy
Site Lifecycle:生成项目报告、站点、发布站点
典型的Maven生命周期:
validate验证 compile编译 test测试 package打包 verify检查 install安装 deploy部署
**正是生命周期阶段和插件的互相绑定,才能真正完成项目的构建**
二方包
简单理解就是公司内部其他项目发布的jar包,我们可以去调用
maven的配置
基本上就是对配置文件中的本地仓库、镜像源、jdk版本进行修改,再去idea中将默认的Maven改为我们自己配置的Maven
Java内存管理
JVM内存分为堆、栈、方法区;分别用于存储不同的数据
堆
JVM堆内存将内存分为新生代、老年代、元空间(存储一些方法中的临时对象)
建立一个对象时从两个地方都分配了内存,在堆中分配的内存实际上建立了这个对象,而在栈中分配的内存只是一个指向这个堆对象的指针(引用)而已。
jvm内存调优
主要是为了减少GC频率和FULL GC次数
GC流程
基本所有数据都会保存在JVM堆内存中,最需要处理的是年轻代和老年代的GC,元空间都不在GC范围内
新对象产生,JVM要为该对象进行内存空间申请,先判断eden区有没有空间,没有进行新生代GC,再判断,还是不够则判断存活区,以此类推,最坏的情况就是full GC之后还是没有空间,则会产生内存溢出
G1垃圾回收器
一种暂停时间在可接受范围内的高吞吐量GC(-XX:+UseG1GC开启)
CPU负载及使用率
造成cpu load过高的原因有:full gc次数增大或者死循环(首先要找到那几个线程在占用cpu,再通过线程的id值在堆栈文件中查找具体的线程,来判断问题)
docker
二进制安装及配置
wget 解压
docker.service docker.socket containerd.service
修改docker默认的网段和地址要在/etc/docker/daemon.json中修改:镜像加速、允许不安全的镜像仓库、修改地址、网段等配置;并使用systemctl管理
nexus
拉取镜像 运行(前面配置没有问题就可以成功login) ps:放在/opt/下
nginx做反向代理
安装nginx,用nginx做转发,添加域名;在push的时候会出现问题,要修改默认上传文件大小(默认很小)
k8s
安装k8s:安装kubeadm,kubelet,kubectl;使用阿里云的yum镜像仓库,在daemon.json中设置exec-opts:[“native.cgroupdriver=systemd”],否则docker和k8s的cgroupdriver可能冲突;kubeadm init,并添加flannel.yaml并应用
去除污点:kubectl taint nodes --all node-role.kubernetes.io/master-
在创建ingress-controller的时候,主要端口冲突的问题
pod生命周期
init容器:在应用容器启动前运行完成,可以用来延迟应用容器的启动;可以包含一些安装过程中不存在的实用工具或个性代码
探针
livenessProbe存活探针:指示容器是否正在运行 readinessProbe就绪探针 startupProbe启动探针:为了防止存活探针误杀正在启动的容器,一般可以给容器配置一个启动探针
linux中fork和exec的区别
fork生成的子进程是一个与正在运行的进程完全相同的副本;总结就是fork是进程的分身(执行相同的程序而分为两个进程)而exec是进程的变身(进程执行而程序发生了变化)
python的安装步骤
安装依赖 在opt下wget软件包,并解压 编译 、make 、make install 绝对路径执行python和pip 添加软连接,便于直接使用
使用dockerfile构建镜像,并作为yaml文件中的镜像源
我们可以在构建镜像的时候自定义内容,例如nginx可以增添新的路径及页面等
资源限制及优先级
可以对CPU、内存进行资源限制;也可以对某一命名空间下的内存和cpu统一进行限制
优先级有两种方式:一种是Qos发方式,另一种是pod优先级,在pod.spec.PriorityClassName后边添加pod名称即可
iptables四表五链
iptables是linux系统下应用层内置控制防火墙的工具
FORWARD链是转发链,只有在网卡数大于等于2的时候才具有
Filter表:过滤数据包 NAT表:用于网络地址转换 Mangle表:修改数据包的服务类型、TTL、并且可以配置路由实现QOS Raw表:决定数据包是否被状态跟踪机制处理
jenkins
安装
在安装的时候,如果出现该jenkins实例似乎已离线的问题,我们首先需要检查本机是否能够ping通外网,如果没有问题,再去进入容器内部检查容器内是否可以ping通外网,还有注意DNS解析的问题;如果容器内不能连通外网,就要检查flannel插件的问题或者在node不多等情况下,通过设置iptables策略来使得pod出网,这个问题就可以解决
pipeline
下面是一个用钉钉机器人给钉钉群推送消息的功能,也可以设置定时推送
pipeline {
agent any
stages {
stage(‘test’){
steps{
sh ‘’‘curl -XPOST ‘https://oapi.dingtalk.com/robot/send?access_token=404e1fdc5aafa19563960ebb2035c960cc42ebd65d15c9705152a6dd2fa92949’ -H ‘Content-Type: application/json’ -d ‘{“msgtype”: “text”,“text”: {“content”:"’“time$(date +%Y-%m-%d_%H-%M-%S)”’"}}’
‘’’
}
}
}
}
结合gitlab
拉取gitlab代码,自动触发构建等等
自动构建大致流程
拉取代码,构建、测试、部署、存储等这些流程