Docker 基本架构
本文介绍了使用Docker的原因及其基本架构。传统应用部署方式存在操作系统适配和依赖安装复杂的问题,而Docker通过提供一种轻量级且方便的解决方案来解决这些问题,它能够抹平不同操作系统的差异,并提高服务器资源利用率。Docker的基本架构包括Docker Daemon(守护进程)、Docker Client(客户端)、Docker Registry(镜像仓库)、Images(镜像)以及Containers(容器)。此外,还简述了支持Docker运行的关键技术如Namespace、Cgroups和UnionFS。最后,文章对比了Dockerd与Containerd的特点及适用场景,并补充了一些关于容器运行时的相关概念。
Helm Chart 方式部署 Sentry
Sentry 是一款全栈应用程序监控工具,提供代码级可观测性,帮助开发者识别、调试性能问题及错误,并持续了解跨系统和服务的应用程序运行状况。其主要功能包括:错误监控、性能监控、实时监控、分布式追踪、代码级分析和团队协作支持等。Sentry 支持 100 多个平台和框架,涵盖 30 多种编程语言。部署过程涉及创建命名空间、添加 Sentry 仓库、下载 Chart 包、修改 `sentry/values.yaml` 文件以配置存储类、初始账号信息和 ROOT URL 等参数,最后通过 Helm 命令部署服务并等待资源对象创建和数据库初始化完成。
Kylin V10 下 MySQL 容器内存占用异常的解决方法
博主在文章中详细介绍了如何解决Kylin V10系统下MySQL容器内存占用异常的问题。最初,MySQL容器启动时内存占用超过20GB,无业务运行时也高达16GB,远高于正常情况下的几百MB。通过一系列排查,发现是由于`open_files_limit`参数在Kylin V10下取值异常导致的。博主尝试了多种方法调整内存相关参数,但效果不佳。最终,通过对比不同系统下的MySQL参数,确定`open_files_limit`参数存在巨大差距。为了解决问题,博主修改了MySQL容器的启动脚本`docker-entrypoint.sh`,在第391行添加了设置`ulimit -n 1048576`的命令,并重新构建了MySQL镜像,成功解决了内存占用异常的问题。整个过程虽然耗时较长,但博主不仅解决了实际问题,还积累了宝贵的实战经验。
Kubernetes 虚拟机管理工具之 KubeVirt
KubeVirt 是一个开源项目,旨在将虚拟机管理功能集成到 Kubernetes 集群中,使得容器和虚拟机可以在同一平台上进行统一管理和编排。它通过引入新的自定义资源定义(如 VirtualMachine、VirtualMachineInstance 等)来实现对虚拟机的定义与控制,并支持生命周期管理、存储与网络集成、实时迁移及高可用性等功能。KubeVirt 的架构基于 Kubernetes 的可扩展性设计,主要包括 virt-api、virt-controller、virt-handler 和 virt-launcher 等核心组件。部署 KubeVirt 包括获取最新版本、安装 Operator 及其 CRD 文件、验证服务状态等步骤。使用 `virtctl` 工具可以方便地对虚拟机执行启动、停止、访问等操作。
Kylin V10 下 MySQL 容器内存占用异常的解决方法(续)
博主深入探究了Kylin V10下MySQL容器内存占用异常的根本原因,发现与Docker的LimitNOFILE设置有关,并提供了修改方法。
Kubernetes 包管理工具之 Helm 语法
本文介绍了Helm Chart的结构和语法,帮助读者更好地理解和自定义Helm Chart。Helm Chart的基本结构包括`charts`目录(存放依赖的子Chart)、`Chart.yaml`(元数据文件)、`templates`目录(Kubernetes资源模板)以及`values.yaml`(默认配置文件)。`Chart.yaml`定义了Chart的基本信息如名称、版本等;`values.yaml`则定义了模板中使用的变量值。在`templates`目录下,包含了各种Kubernetes资源对象的模板文件。文章还详细讲解了Helm模板语法,包括模板指令、注释方法、内置对象(如Release、Chart、Values等)、模版函数(如quote, squote, title等)、控制结构(if/else, with, range),以及命名模板的使用方法。此外,还介绍了锚点和锚点别名的概念及其用法,这些工具使得Helm Chart更加灵活和强大。
Kubernetes 包管理工具之 Helm 简介
Helm 是 Kubernetes 的一种包管理工具,用于定义、安装、升级和配置应用程序。它通过 Chart 形式打包复杂的应用程序(如 Deployment、Service 等资源对象),简化了安装过程,并支持版本管理和依赖管理。Helm 通过 Values 配置和资源清单模版机制,使得用户可以在一处修改配置,提高部署效率和标准化程度。主要特点包括声明式配置、可重用性、社区支持、安全性以及插件机制等。主要概念有 Chart、Repository、Value、Template 和 Release。Helm 安装简单,可通过 GitHub 下载二进制文件完成。
GitLab 禁用 RACK ATTACK 机制
文章描述了公司内部自建GitLab服务中遇到的频繁403错误问题,该问题是由于RACK ATTACK模块对来自负载均衡设备IP的请求进行了限制。为解决此问题,首先尝试了临时方法——通过删除Redis中的特定key来解除IP封禁,但这不是长久之计。接着探索了官方文档提供的配置修改方案,但由于环境差异未能直接应用。进一步分析发现,可以通过调整Kubernetes部署下的环境变量`RACK_ATTACK_ENABLED`来控制RACK ATTACK模块的状态。最终,通过将`RACK_ATTACK_ENABLED`设置为`false`成功解决了问题,使研发团队能够正常访问GitLab服务。此外,也提到了另一种解决方案是保持RACK ATTACK启用但添加白名单的方式。