cd发布策略
部署策略 虽然业界使用了一致的术语来描述各种部署策略,但这些策略的实现往往因工具而异,为了明确 Argo Rollouts 的行为方式,以下是 Argo Rollouts 提供的各种部署策略实施的描述。 RollingUpdate(滚动更新):慢慢地用新版本替换旧版本,随着新版本的出现,旧版本会慢慢缩减,以保持应用程序的总数量。这是 Deployment 对象的默认策略。 Recreate(重新创建):Recreate 会在启动新版本之前删除旧版本的应用程序,这可确保应用程序的两个版本永远不会同时运行,但在部署期间会出现停机时间。 Blue-Green(蓝绿):蓝绿发布(有时称为红黑)指同时部署了新旧两个版本的应用程序,在此期间,只有旧版本的应用程序会收到生产流量,这允许开发人员在将实时流量切换到新版本之前针对新版本进行测试。 Canary(金丝雀):金丝雀发布指将一部分用户暴露在新版本的应用程序中,而将其余流量提供给旧版本,一旦新版本被验证是正确的,新版本可以逐渐取代旧版本。Ingress 控制器和服务网格,如 NGINX Ingress 和 Istio,可以使金丝雀的流量拆分模式比原生的更复杂(例如,实现非常细粒度的流量分割,或基于 HTTP 头的分割)。
Jenkins Pipeline
Jenkins Pipeline 要实现在 Jenkins 中的构建工作,可以有多种方式,我们这里采用比较常用的 Pipeline 这种方式。Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。 Jenkins Pipeline 有几个核心概念: Node:节点,一个 Node 就是一个 Jenkins 节点,Master 或者 Agent,是执行 Step 的具体运行环境,比如我们之前动态运行的 Jenkins Slave 就是一个 Node 节点 Stage:阶段,一个 Pipeline 可以划分为若干个 Stage,每个 Stage 代表一组操作,比如:Build、Test、Deploy,Stage 是一个逻辑分组的概念,可以跨多个 Node Step:步骤,Step 是最基本的操作单元,可以是打印一句话,也可以是构建一个 Docker 镜像,由各类 Jenkins 插件提供,比如命令:sh ‘make’,就相当于我们平时 shell 终端中执行 make 命令一样。 那么我们如何创建 Jenkins Pipline 呢? Pipeline 脚本是由 Groovy 语言实现的,但是我们没必要单独去学习 Groovy,当然你会的话最好 Pipeline 支持两种语法:Declarative(声明式)和 Scripted Pipeline(脚本式)语法 Pipeline 也有两种创建方法:可以直接在 Jenkins 的 Web UI 界面中输入脚本;也可以通过创建一个 Jenkinsfile 脚本文件放入项目源码库中 一般我们都推荐在 Jenkins 中直接从源代码控制(SCMD)中直接载入 Jenkinsfile Pipeline 这种方法 这里我们使用 podTemplate 来定义不同阶段使用的的容器;这里给一个 demo...
gitlab runner
# Download the binary for your system sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 # Give it permission to execute sudo chmod +x /usr/local/bin/gitlab-runner # Create a GitLab Runner user sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash # Install and run as a service sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner sudo gitlab-runner start sudo gitlab-runner register --url http://git.k8s.local/ --registration-token JLKyh3fUix_jzL-GZoRX
cpu 负载高
CPU 负载高而 CPU 使用率不高的情况可能表明系统中存在一些问题,如大量的 I/O 等待、资源争用或系统瓶颈。这种现象通常意味着 CPU 并不是系统性能的瓶颈,而是其他因素导致了系统的阻塞或延迟。以下是一些可能的原因及排查步骤: 1. 检查 I/O 等待(I/O Wait) I/O 等待是指 CPU 在等待磁盘或网络 I/O 操作完成时处于空闲状态。当系统中有大量的 I/O 操作(如磁盘读写、网络操作)时,CPU 可能需要等待 I/O 操作完成,这会导致负载升高,但 CPU 使用率不高。 说明一下,日常工作中确实其实有很多问题就是直接是 io 导致的; 排查步骤: 使用 top 命令查看 wa(I/O Wait)列。如果该值较高,表示系统中存在大量的 I/O 等待。 使用 iostat 命令(需要安装 sysstat 包)它们可以显示磁盘的响应时间和服务时间。 bash 复制代码 iostat -x 1 5 检查是否有进程正在进行大量的磁盘读写操作,可以使用 iotop 或 iostat -p 查看具体的磁盘活动。 2. 查看系统中断(Interrupts) 大量的硬件中断或软中断也可能导致 CPU 负载高,而实际 CPU 使用率不高。这可能是由于某些硬件设备频繁产生中断,或者系统中有高频的网络数据包处理。 排查步骤: 使用 vmstat 查看 in (interrupts)列和 cs (context switches)列,看看中断和上下文切换是否异常高。...
前后端分离系统模子
说明 技术栈 语言:Golang、Vue+Typescript; 后端:gin gorm 、Casbin; 前端:Vue3、Vite、Element-Plus、TypeScript、Pinia 等; 后端项目运行 git clone 起来 mysql 和 redis go run main.go 前端运行 npm i npm run dev npm run build:prod 打包 效果图