- 博客(46)
- 收藏
- 关注
原创 Ansible【第四课】:实施任务控制
when 负责判断要不要干活;handlers 负责条件触发后置动作;一堆参数和 block‑rescue 用来控制任务出错之后该怎么办。本章讲 Ansible 怎么控制任务:循环、条件判断、触发器 handlers、任务出错处理。handlers 就是一堆特殊任务,平时不会主动执行,只有被notify通知了才会跑。loop用来重复跑同一个任务,不用复制多遍代码;循环里用item拿每一轮的数据。when:满足条件才跑这个任务,不满足就跳过。第 4 章 实施任务控制。
2026-10-18 19:43:02
165
原创 Ansible【第三课】:管理变量和事实
(事实):Ansible 执行 playbook 时,自动收集受控主机的系统信息(主机名、CPU、内存、Python 版本、网卡等),全部存放在内置变量 ansible_facts 里,不需要自己定义变量。两个play,第一个play五个task,第二个play一个task,所有用到的变量写在vars里统一存储,需要修改变量时只改vars里的,task里用到的会随时同步更新,方便修改。自定义事实:被控机/etc/ansible/facts.d/下放.fact文件,支持 INI/JSON,不支持 YAML。
2026-10-17 19:08:46
218
原创 Ansible【第二课】:实施 Ansible Playbook
尽量优先使用 Ansible 自带模块,少用 shell/command 直接敲命令,shell 命令没有幂等性,反复执行容易出问题。简单说:清单登记机器,配置文件规定怎么连机器,Playbook 写要干什么活,模块干实际操作,最后执行脚本批量干活。就是 Ansible 的脚本文件,后缀 yml,用 YAML 语法写,靠缩进控制层级,缩进错就直接报错。YAML 注意点:用空格缩进,不能用 Tab,冒号后面必须带空格,列表用-开头。可以配置登录用户名、ssh 端口、密码、是否用 sudo 提权。
2026-10-13 23:48:58
219
原创 Ansible【第一课】:Ansible介绍
是用来自动化管理 Linux 机器的工具,不用一台台手动敲命令,写好脚本就能批量操作多台服务器,减少人工出错,把配置、操作写成代码(基础设施即代码),方便复用、版本管理。分社区版 Ansible 和红帽商业版 Ansible 自动化平台 (RHAAAP),商业版有官方支持,自带大量现成集合(Collections)工具包,还有导航器、执行环境这些配套工具。可以用容器作为执行环境;简单说:Ansible 就是一台主控机器,通过 ssh,跑写好的 yaml 剧本,批量指挥一堆服务器干活,不用手动登录每台机器。
2026-10-12 02:12:38
135
原创 k8s云原生【第十四课】: Argo CD(GitOps)
不用外部工具往集群推配置,让 ArgoCD 在集群里盯着 Git 仓库,以 Git 里的配置为准,自动同步、自动改错,更安全也好追溯变更。装在集群内部,会一直盯着这个 Git 仓库,不停对比:Git 里写好的期望状态 VS 集群现在真实状态。一旦发现两边不一样,ArgoCD 自动动手,把集群改回和 Git 仓库保持一致。把 Git 仓库当成唯一标准,所有应用该长什么样,全部写在 Git 里存好。第 25 节 Argo CD(GitOps)
2026-10-05 13:15:37
351
原创 k8s云原生【第十三课】:CRD 与 Operator 模式
你只需要简短 CR 声明,Operator 自动管理 Prometheus 实例、自动采集指标、自动加载告警规则,实现自动化运维。像 MySQL 集群、Prometheus 这类复杂应用,除了创建 Pod,还需要自动备份、主从切换、故障转移等运维逻辑;用来给 K8s 新增自定义资源类型,Operator(控制器)用来监听这个资源、自动执行运维逻辑,把复杂中间件 / 监控系统的运维自动化。⚠️重点:只创建 CRD+CR,不会自动创建 Pod,CRD 只定义数据格式,本身没有执行逻辑,必须搭配控制器。
2026-09-28 23:58:02
259
原创 k8s云原生【第十二课】:Kustomize 管理
不同环境大部分配置一样,只有少量差别,不用复制多份完整 YAML 反复改。核心模型:Base 基础层 + Overlay 覆盖层,最终资源 = 基础配置 + 环境定制补丁。放所有环境通用的原始资源(Deployment、Service、Secret 等),作为统一基准,所有环境共用这一套底子,靠kustomization.yaml来管理这些基础文件。Kustomize 原生内置在 kubectl 里,不改动基础 yaml,用叠加补丁的方式,给不同环境做差异化配置,避免多套 yaml 重复维护。
2026-09-24 10:15:16
166
原创 k8s云原生【第十一课】:集群升级与生命周期管理
集群升级遵循先 Master、后 Worker的滚动升级思路,先用 cordon+drain 把节点业务腾空再升级,小版本逐步升级、版本对齐、提前备份 etcd,升级完校验版本和废弃 API,减少业务中断风险。--ignore-daemonsets 作用:忽略 DaemonSet 这类必须每个节点都跑的 Pod,不然 drain 会卡住。全部节点升级完,检查所有节点版本统一;集群升级是为拿到新功能、安全补丁,但操作风险高,改错容易整个集群瘫痪,必须遵守固定规则。第 22 节 集群升级与生命周期管理。
2026-09-21 22:10:19
256
原创 k8s云原生【第十课】:水平 Pod 自动扩缩容
可以自动增减 Pod 副本数量。流量大就多开 Pod 扩容;流量变小就减少 Pod 缩容,实现服务弹性。HPA 计算使用率,拿的是 Pod 的resources.requests,不是 limits。可以依据 CPU、内存或者自定义指标自动调整 Deployment 副本。示例:设置 CPU 使用率超过 50% 就扩容,副本数量限制 1‑5 个。Pod 不配置 requests,HPA 无法计算,扩缩容直接失效。监控指标 → 判断是否需要扩缩容 → 修改副本数量。第 21 节 水平 Pod 自动扩缩容。
2026-09-21 22:09:20
235
原创 云原生k8s【第九课】:调度优先级 PriorityClass
集群资源被低优先级后台任务占满,部署高优先级 Pod,调度器会杀掉低优先级 Pod,高优先级 Pod 成功启动,事件日志可以看到抢占驱逐的记录。用来规定 Pod 谁优先拿到资源。集群资源不够的时候,高优先级 Pod 可以把低优先级 Pod 驱逐赶走,腾出资源。PriorityClass 是集群级资源,用数值 value 代表优先级,数字越大优先级越高。资源不足时,先干掉最低优先级 Pod,逐级往上杀,尽量不动系统最高优先级组件。注意:它不是资源配额,就算优先级很高,机器完全没资源也跑不起来。
2026-09-10 20:40:44
75
原创 云原生k8s【第八课】: ETCD 备份与恢复
ETCD 是 K8s 的核心数据库,集群所有数据,Pod、Service、密钥、权限全部存在这里,是集群唯一真实数据源。小提示:恢复会覆盖现有全部集群数据,一般集群彻底损坏的时候才用。第 19 节 ETCD 备份与恢复。生成快照文件,这个文件就保存了整个。3.ETCD 恢复简单总结。集群全部数据,完成备份。1.ETCD 基础特点。
2026-09-07 23:28:01
302
原创 云原生k8s【第七课】:集群监控与可观测性
轻量级组件,不保存历史数据,只保留近期资源快照。整体链路:Promtail采集日志 → Loki存储 → Grafana查看日志内容。Prometheus 采用拉取模式,主动去找各个组件拿监控数据。Grafana:本身不存监控数据,负责把数据渲染成图表展示。4、Prometheus 与 Grafana 分工。Prometheus:负责收集、存储监控数据。5、日志方案 Loki + Promtail。Loki:日志存储服务,保存收集上来的日志。3、Prometheus 监控体系。1、可观测性三个核心维度。
2026-09-06 14:48:05
370
原创 云原生k8s【第六课】:K8s 访问控制
先创建命名空间(kubectl create namespace acctest)并在其内新建 SA(kubectl -n acctest create serviceaccount ylacct),Pod 清单指定绑定 SA(serviceAccountName: SA名称),Pod 运行后容器内置 SA 凭证,当pod内部程序调用API server时凭借该凭证完成身份核验,API Server 可识别 SA 归属命名空间。容器可以开特权、访问主机硬件、主机网络,风险最高,测试环境偶尔用。
2026-08-25 10:40:36
284
原创 云原生k8s【第五课】:资源配额与限制
目的:给容器定好 CPU、内存的上下限,防止某个程序乱占机器资源,把整台服务器拖崩,多团队共用集群时还能划分资源地盘。这个空间里所有新建的 Pod / 容器,CPU、内存的「最小申请值、最大上限值、默认值」全都统一规定死;test 命名空间规定:最多 1 个 Pod、全部 CPU 申请总和≤1 核、内存总和≤1Gi;总 CPU 申请、总内存申请、总 CPU 上限、总内存上限、最多能跑多少个 Pod 等;一、Requests(申请值)& Limits(上限值)单个 Pod 资源管控。
2026-08-24 08:59:04
273
原创 云原生k8s【第四课】:Pod(最小调度单元)
对应节点 kubelet 收到任务,调用容器运行时拉镜像、启动 pause 容器、启动业务容器。不用 API‑Server 管理,kubelet 直接读取本机指定目录下 yaml,直接启动 Pod。在 Pod 级别定义 volume,多个容器挂载这个卷,实现容器之间文件互相读写。适合日志采集这类场景,一个业务写日志,另一个容器读日志。每个 Pod 都会自带一个 pause 容器,它先创建,搭建好网络、PID 命名空间。是 K8s 最小调度单元,一个 Pod 里面可以跑多个容器,不是单个容器。
2026-08-21 14:05:12
167
原创 云原生k8s【第三课】:Namespace(命名空间)
同一个物理 K8s 集群,可以切出多个逻辑隔离的虚拟小集群,这就是 Namespace,用来做多项目、多团队隔离,防止名字冲突。删除 namespace 会把这个命名空间里面所有 Pod、Service 等资源全部连带删掉。如果 namespace 卡在 Terminating 删不掉,一般是里面还有残留删不掉的资源。YAML 声明式创建,生产环境推荐 YAML+apply。第 6 节 Namespace(命名空间):namespace 不能互相嵌套。
2026-08-20 23:22:44
209
原创 云原生k8s【第二课】:K8s 部署与架构
所有节点装 kubeadm/kubelet/kubectl;master 用 kubeadm init 初始化集群;worker 拿命令加入集群;装上网络插件 Calico 集群网络才通。每个节点 kubelet 接收指令,调用容器运行时启动容器。给节点、Pod 打标签做标记;选择器通过标签筛选匹配资源,Service 就是靠标签找到后端 Pod。集群分为控制平面 master 节点 + worker 工作节点。用来批量管理容器,目标是实际状态往期望状态靠拢。第 5 章 K8s 部署与架构。
2026-08-19 11:05:00
276
原创 云原生k8s【第一课】: Docker 容器技术
kubelet → CRI → cri‑dockerd → docker → containerd,cri‑dockerd 是适配器,用来让 k8s 可以对接 docker。镜像分层只读,容器写数据不会改动原镜像,会单独开一层可写层;容器删掉,可写层数据全部丢失,想要保存数据必须用卷。写时复制,修改文件就把文件拷贝到上层再改动。安装 docker、配置镜像加速,实操模拟 namespace、cgroup、overlay2 加深理解。容器不是虚拟机,本质就是受限制、做了隔离的普通 Linux 进程。
2026-08-18 14:49:16
256
原创 MySQL 管理复制拓扑【MySQL第四课】
多线程(并行复制)从库:配置slave_parallel_workers开启,生成多个工作线程,可并发回放事务,加快同步速度。重置从库:执行RESET SLAVE,清除从库保存的主库连接、日志坐标等复制信息,断开和旧主库关联,用来重新配置复制环境。2.通过中继日志坐标、主库日志坐标,可以判断复制延迟。单线程从库:默认模式,只有 1 个 SQL 线程,串行执行中继日志里的事务,回放速度慢,容易产生复制延迟。3.Last_IO_Error、Last_SQL_Error可以查看 I/O、SQL 线程报错信息。
2026-08-17 23:56:36
241
原创 MySQL 配置复制拓扑【MySQL第三课】
这一章讲 MySQL 复制,也就是主从复制,主要讲复制的作用、各种拓扑结构、复制冲突、搭建配置、GTID、半同步复制、二进制日志格式这些内容。复制冲突:多主架构很容易碰到冲突,两边同时修改同一行数据,各个库数据就会不一致,结果取决于事件执行顺序,这个问题要尽量规避。 BLACKHOLE 引擎复制:只转发 binlog,不存真实数据,做中继转发。 水平横向扩展:多个从库分担读请求,实现读写分离,减轻主库压力。拓扑规划、复制账号权限、重置主库等操作,属于实操细节。一、复制是什么,什么时候用复制。
2026-08-14 09:03:40
575
原创 MySQL 维护稳定系统【MySQL第二课】
想要数据库稳定,硬件、虚拟机环境、操作系统、网络、应用程序这些环节都不能出问题。硬件故障、虚拟化资源争抢、磁盘性能差、网络波动,都会直接搞崩 MySQL。数据库维护核心就是:持续监控、提前规划容量、遇到故障按步骤排查、重点处理锁和崩溃恢复。这一章主要讲怎么把 MySQL 维护得稳定、排查性能问题、容量规划、锁问题、故障恢复这些内容。数据库异常断电、崩溃之后,InnoDB 依靠 redo、undo 日志自动做崩溃恢复。启动的时候会读取日志,把已经提交的数据落盘,回滚没提交的事务,保证数据一致性。
2026-08-13 23:25:52
249
原创 MySQL体系结构【MySQL第一课】
拿到 SQL 语句之后,依次经过解析器、优化器、查询执行,处理权限、语法解析、生成执行计划,这一层不直接碰磁盘数据,把请求交给下层存储引擎。• MySQL8 采用事务型数据字典,全部存放在 InnoDB 内部,支持事务,崩溃安全,易于升级维护;1. 全局内存:服务器启动就分配,所有会话共享,最关键是 InnoDB 缓冲池,缓存表数据、索引,减少磁盘 IO,是影响性能的核心。修改数据的时候,先写 redo 日志,再刷磁盘数据。老版本引擎,不支持事务,只有表锁,崩溃不能安全恢复,查询速度快,现在使用很少。
2026-08-12 15:38:23
343
原创 MySQL【总结】
依靠 redo、undo 日志实现事务与并发控制,所有数据表最终都会存放到磁盘表空间文件中。Linux 远程运维 + 磁盘管理 → MySQL 登录、建库建表使用 → 数据库底层磁盘文件架构 → 版本升级迁移实操。通过 IP 远程登录 Linux 虚拟机,是所有 MySQL 操作的访问入口,不用在虚拟机桌面操作。表层 SQL 语句只是操作入口,磁盘文件、日志、表空间是 MySQL 运行底层核心。默认独立表空间、通用表空间,建表语句会区分携带参数。二、MySQL 架构与建库实操(核心重点)
2026-08-10 12:32:11
473
原创 Docker容器技术原理【第五课】
Docker 网络 = Linux 网络命名空间实现网络隔离 + veth 虚拟网卡 + 网桥 docker0 + iptables NAT 数据包转发,实现容器完整网络通信能力。Docker 借助 Linux 网络命名空间做网络隔离,提供 4 种网络模式:Host、Container、None、Bridge。4. Bridge 模式(Docker默认模式)2. Container 模式。Bridge 底层原理。1. Host 模式。3. None 模式。
2026-08-09 23:16:23
218
原创 Docker容器技术原理【第四课】
多个容器同时运行,高负载容器会抢占宿主机硬件,影响其他业务,CGroups 用来解决这个资源争抢问题。CGroups 通过子系统管理各类资源,把进程加入控制组实现配额限制,是容器必不可少的技术。CGroups(Control Groups)是 Linux 内核机制,对进程做分组管理,为分组设置资源限制,实现资源的限制、控制、监控,是容器核心技术之一。Docker、K8s 大量使用 CGroups 对容器做 CPU、内存、IO 资源管控。限制进程资源使用上限(CPU、内存),防止资源耗尽。
2026-08-08 12:31:46
231
原创 Docker容器技术原理【第三课】
Namespace 做内核资源隔离;unshare 是手动创建 namespace 的工具,Docker 自动帮我们完成这套操作。Namespace 是 Linux 内核级资源隔离技术,把系统资源封装隔离,让不同进程拥有独立的一套系统资源视图,是容器实现隔离的基础。使用docker export导出容器 rootfs,通过chroot切换根目录。unshare命令可以创建一组全新命名空间,启动 shell,实现资源隔离。2. 实验对比:chroot vs Namespace。1.Namespace 概念。
2026-08-07 16:08:45
257
原创 Docker容器技术原理【第二课】
镜像层只读,容器单独拥有可写层;镜像层全部作为 lowerdir,容器运行才新增 upperdir 可写层,使用写时复制 CoW 机制。容器镜像是静态、只读的软件模板,不包含操作系统内核,打包了应用代码、依赖库、配置、环境变量以及完整 rootfs 根文件系统,本身不能运行进程。启动容器时,镜像全部只读层作为 lowerdir,额外生成容器专属可写层 upperdir;容器所有修改、新增、删除都发生在可写层,镜像不变。容器镜像不带内核,共享宿主机内核,体积小;镜像为模板,容器是镜像的运行实例。
2026-08-07 16:06:36
212
原创 Docker容器技术原理【第一课】
目录结构|`br`分支指定多层,upper为可写层,挂载点为合并视图|4个核心目录:`lowerdir`(多只读层)、`upperdir`(可写)、`workdir`(工作目录)、`merged`(合并视图),**必须要有workdir**||内核归属|第三方补丁,不在Linux主线内核,部分系统需要手动安装补丁|属于**Linux主线内核原生支持**,主流发行版自带,无需打补丁||白文件命名|`.wh.xxx`白文件屏蔽底层文件|同样使用`.wh.xxx`白文件,规则类似,但内部实现不一样|
2026-08-06 19:28:31
207
原创 Docker容器技术原理【总结】
容器底层原理:容器不是虚拟机,本质是受 Namespace 隔离、CGroup 资源限制、UnionFS(Overlay2)做分层文件系统,拥有独立文件系统的普通进程,直接复用宿主机 Linux 内核。镜像提供只读 rootfs 模板,实例化后生成容器,容器新增可写层运行业务进程。四、Docker Bridge 网络模式(默认网络)二、Docker 存储原理(Overlay2)三、Namespace 命名空间详解。Docker容器技术原理。五、镜像与容器简单补充。
2026-08-05 23:16:34
367
原创 linux 常见命令
因此,grep temporary 命令的作用是从输入中(在这个例子中是MySQL日志文件的内容)搜索所有包含 “temporary” 字符串的行,并将这些行显示在屏幕上。这个命令使用 scp(Secure Copy Protocol)工具来递归地(-r 选项)复制本地文件系统中的 /stage/ 目录到远程服务器 server2 的根目录(/)下。在这个命令中,cat /var/log/mysqld.log 的输出(即MySQL日志文件的内容)被作为 grep temporary 命令的输入。
2026-08-04 14:22:21
192
原创 容器的运行
podman generate systemd --new --name 容器名 > ~/.config/systemd/user/容器名.service。基础指令: podman ps 查看容器、 podman rm 删容器、 podman rmi 删镜像。podman start 容器名 # 启动已存在的容器。podman exec -it 容器名 bash # 进入容器内部终端。podman stop 容器名 # 停止容器。
2026-08-02 23:54:01
210
原创 管理网络安全
放行http服务永久生效: firewall-cmd --add-service=http --permanent && firewall-cmd --reload。概括:SELinux会给端口绑定专属标签,程序监听端口必须匹配对应标签,否则会被拦截,进一步加固网络安全(比如22端口绑定ssh_port_t)。概括:基于netfilter的上层防火墙服务,用区域划分不同网络环境管控规则,系统默认区域为public,每个区域独立放行端口、服务。无直接操作命令,是底层内置机制。4、SELinux端口标签管控。
2026-07-31 14:43:00
200
原创 控制启动过程
1. 知识点概括:target就是系统运行模式,支持运行中临时切换,也能设定开机默认进入的模式(图形界面/命令行界面)- 设置开机默认纯命令行: systemctl set-default multi-user.target。1. 知识点概括:系统文件损坏、启动报错无法正常开机时,进入紧急目标环境,排查、修复磁盘与文件系统故障。- 运行中切到命令行模式: systemctl isolate multi-user.target。- 查看当前默认开机目标: systemctl get-default。
2026-07-31 14:41:42
184
原创 访问网络附加存储
一台服务器把本机文件夹对外开放,其他多台客户端挂载这个共享目录,就能像读写本地硬盘一样,直接读写服务器里的文件。autofs自动挂载服务,和vim /etc/fstab 开机立刻挂载不一样:只有你进入、访问这个文件夹的时候,系统才自动挂上NFS/远程共享;autofs自动挂载服务,和vim /etc/fstab 开机立刻挂载不一样:只有你进入、访问这个文件夹的时候,系统才自动挂上NFS/远程共享;- autofs:用时挂上,闲置自动卸下,动态生效。- autofs:用时挂上,闲置自动卸下,动态生效。
2026-07-30 09:37:17
167
原创 管理存储堆栈
LVM支持RAID级别为0、1、2、3、4、5、6、10。LVM就是逻辑卷管理,能把多块磁盘/分区合并成一个大资源池,空间不够时随时扩容,不用重新分区格式化,存储调配十分灵活。LVM就是逻辑卷管理,能把多块磁盘/分区合并成一个大资源池,空间不够时随时扩容,不用重新分区格式化,存储调配十分灵活。先vgextend给卷组扩容,再lvextend增加逻辑卷大小,可在线扩容,不用卸载磁盘、不用停机。先vgextend给卷组扩容,再lvextend增加逻辑卷大小,可在线扩容,不用卸载磁盘、不用停机。
2026-07-30 09:35:18
196
原创 管理基本存储
磁盘最多4个主分区,主分区不够用时,必须划分扩展分区,再在扩展分区里新建逻辑分区;parted磁盘分区 → mkfs.xfs/mkswap格式化分区 → 写入/etc/fstab配置永久挂载 → mount -a生效校验。写完fstab配置后执行 mount -a 校验配置并立刻挂载,配置写错开机无法进系统,一定要校验。含义:分区只是划出一块空间,必须格式化写入XFS文件系统,分区才能存放文件数据。2./etc/fstab:系统永久挂载配置文件,写入该行配置后开机自动挂载磁盘。2.临时开启交换分区。
2026-07-29 09:01:02
148
原创 SELinux
SELinux规则全部生效,不合规的操作直接拦截、拒绝访问,还会记录日志,平时上课考试都是这个模式。永久开启示例: setsebool -P httpd_enable_homedirs on。布尔值就是SELinux内置的权限开关(on/off),按需启闭就能放开对应服务权限。临时开启示例: setsebool httpd_enable_homedirs on。作用:临时切换上面两种运行模式,系统重启就会恢复原本配置,无法永久关闭SELinux。setsebool:修改开关状态,-P实现永久生效。
2026-07-29 08:58:33
214
原创 systemctl enable --now httpd 对命令的理解
systemctl:系统服务管理工具,管Linux里面所有软件服务启停。整条命令:systemctl enable --now httpd。httpd:Apache网页服务在RHEL系统里的服务名。
2026-07-28 12:08:09
169
原创 Day 7 对一条命令的理解
3. 假如文本里带有$符号、感叹号等符号,不用引号的话系统会把它当成系统变量执行,内容就会错乱,单引号可以完全屏蔽shell的转义解析,文字原样存进文件。3. 整条命令作用:在/custom文件夹里生成index.html文件,文件内部写入内容This is SERVERA.,刚好完成题目要求。4. 双引号会解析$这类变量,单引号是完全原样保留文本,写固定静态文本优先用单引号更稳妥。2. > 是输出重定向符号,不会把文字打印在屏幕,而是写入后面指定的文件里。1. echo 负责输出括号里的文字内容。
2026-07-28 10:20:28
245
原创 Day 5
2. hostname :查看当前虚拟机/服务器主机名。3. top :实时查看系统CPU、内存占用和运行程序。5. fg %1 :把1号后台程序切回前台运行。1. clear :清屏,清空终端所有文字。6. shutdown now :立刻关机。4. jobs :查看后台运行的任务。
2026-07-27 22:51:56
209
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅