/var/lib/docker 能不能挂载远端存储
· ☕ 3 分钟
不能 1. 问题背景 基于 Kubernetes 构建可靠、稳定的运维系统时,虚拟机 (VM) 的销毁和新建是一种常态。VM 提供的是计算和内存资源,而使用外部存储,通过 StorageClass 提供给集群中的 PVC 消费。 在这样的背景下,如何快速初始化 VM 成为新的挑战。常见的思路是制作 Node 节点的 VM 镜像,提前将依赖

如何定制自己的 Jenkins 镜像
· ☕ 6 分钟
1. 如何部署 Jenkins 为了方面进行下面的测试,先介绍两种部署 Jenkins 的方式,这里使用的是 shaowenchen/jenkins:2.277.4 镜像。在生产环境中,需要替换为官方 jenkins/jenkins 镜像或自己定制的镜像。 1.1 docker-compose 运行 docker-compose.yaml 文件 version: '3' services: jenkins: image: shaowenchen/jenkins:2.277.4 container_name: jenkins restart: always network_mode: "bridge" environment: - JAVA_OPTS="-Xms1Gi -Xmx4Gi" ports: - 8080:8080 - 50000:50000 - 2222:2222 environment: TZ: Asia/Shanghai volumes: - /Volumes/Data/jenkins_home:/var/jenkins_home 在本地创建一个目录 /Volumes/Data/jenkins_home 用于存储 Jenkins 的数据

Jenkins 在 Kubernetes 上的最佳实践
· ☕ 3 分钟
1. 配置较大的 -Xms -Xmx 参数 Jenkins 是由 Java 编写的编排引擎, 在 Full GC 时会 Stop The World(STW)。在大规模构建时, STW 可能会导致 Jenkins 无法处理新的请求。 为了避免频繁的 STW, 同时增大并发量, 建议设置较大的堆, -Xms3g -Xmx6g -XX:MaxRAM=6g。具体数值可以根据监控值来设置,

一个通用流水线设计
· ☕ 5 分钟
1. 解耦引擎释放流水线能力 在设计系统时,我们常面临两难。是内敛复杂度,对外提供单一易用的功能;还是释放复杂度,将灵活归还用户。这非常考验产品能力。 设计 CICD 系统时,我们可以直接将 Jenkinsfile、PipelineRun 等概念直接抛给用户,让

Kubernetes 之网络隔离(内附十多种使用场景)
· ☕ 7 分钟
1. Kubernetes 中的网络隔离 Kuberntes 自 1.3 引入了 Network Policy(网络策略) ,通过 ipBlock、podSelector、namespaceSelector 定义实体,控制其 From(Ingress)、To(Egress)的流量行为。 但 Kubernetes 只是定义了网络策略,具体实