<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title><![CDATA[Myluzh Blog]]></title> 
<atom:link href="https://itho.cn/rss.php" rel="self" type="application/rss+xml" />
<description><![CDATA[]]></description>
<link>https://itho.cn/</link>
<language>zh-cn</language>
<generator>emlog</generator>

<item>
    <title>YOLO 学习笔记</title>
    <link>https://itho.cn/ai/590.html</link>
    <description><![CDATA[0x01 什么是yolo
模型大小对比
这边拿YOLO8来对比，通过这组数据可以看出典型的深度学习模型缩放定律（Scaling Laws）： 边际效用递减：从 Nano 升级到 Small，参数量增加了约 3.5 倍，mAP 提升了 7.6 点；但从 Medium 升级到 Large，参数量增加了 1.7 倍，mAP 仅提升了 2.7 点。
计算量激增：Large 版本的精度仅比 Medium 高出不到 3 点，但计算量（FLOPs）却翻了一倍多（78.9G -  165.2G），这意味着在实际部署时，Large 版本对显存和推理延迟的要求会高得多。 模型规格
参数量
模型文件体积
FLOPs
精度 (mAP) Nano (n)
3.2M
~6 MB
... <a href="https://itho.cn/ai/590.html">阅读全文</a>]]></description>
    <pubDate>Fri, 10 Apr 2026 11:36:22 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/ai/590.html</guid>
</item>
<item>
    <title>Linux PAM 解锁：禁用 Linux 密码试错锁定</title>
    <link>https://itho.cn/linux/587.html</link>
    <description><![CDATA[0x00 直接一把梭
echo --- 1. 检查修改前 ---
grep -sE deny=|unlock_time= /etc/pam.d/* echo --- 2. 执行修改 ---
grep -sl 'deny=' /etc/pam.d/* | xargs -r sed -i 's/deny=[0-9]*/deny=0/g; s/unlock_time=[0-9]*/unlock_time=0/g; s/[[:space:]]*even_deny_root//g' echo --- 3. 检查修改后 ---
grep -sE deny=|unlock_time= /etc/pam.d/* echo --- 4. 重启SSH服务 ---
syst... <a href="https://itho.cn/linux/587.html">阅读全文</a>]]></description>
    <pubDate>Thu, 02 Apr 2026 11:13:03 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/linux/587.html</guid>
</item>
<item>
    <title>深度解析移动云容器服务KCS创建流程</title>
    <link>https://itho.cn/k8s/585.html</link>
    <description><![CDATA[0x00 前言
移动云订购容器服务CKS的背后，隐藏着一套精密的自动化装机与配置注入流程。为了打破这种商业云服务“黑盒”带来的疑惑，本文将带你深挖底层的 ConfigDrive 机制和自动化部署脚本，一步步复盘一台纯净的云主机是如何被自动变成标准 K8s 节点的。
0x01 用户订购操作
在移动云控制台订购容器服务 KCS ，选择: 3Master + 2Worker + 规格配置。创建后信息如下： 节点名称
角色
污点配置
IP地址
公网IP kcs-k8s-test-m-tp88s
master
有
192.168.11.139
36.134.185.103 kcs-k8s-test-m-jj48s
master
有
192.168.11.38
无... <a href="https://itho.cn/k8s/585.html">阅读全文</a>]]></description>
    <pubDate>Thu, 26 Mar 2026 11:24:13 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/585.html</guid>
</item>
<item>
    <title>OpenClaw Cron 定时推送消息配置指南</title>
    <link>https://itho.cn/ai-agent/584.html</link>
    <description><![CDATA[0x01 前言
想要让你的机器人能够定时（通过 Cron 助手）向指定的个人发送消息，系统必须知道两个关键信息：用哪个机器人发？（对应 accountId）发给谁？（对应 OpenID）
想执行定时任务后，想让你的channels能收到消息，必须要有accountId，OpenID。
0x02 获取必要的通信 ID
在配置定时任务前，我们需要先拿到上述的两个 ID。 accountId：OpenClaw 里的渠道账号 ID（代表发送方）。
OpenID：用户或群聊的唯一标识符（代表接收方）。 获取这两个 ID 有以下两种方式
方式一：直接询问机器人（最简单快捷）
直接在微信中向你的机器人发送以下消息：请提取当前会话的元数据，告诉我当前的 account... <a href="https://itho.cn/ai-agent/584.html">阅读全文</a>]]></description>
    <pubDate>Wed, 25 Mar 2026 08:57:04 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/ai-agent/584.html</guid>
</item>
<item>
    <title>解决 Ubuntu 下 OpenClaw 无法调用浏览器的踩坑记录</title>
    <link>https://itho.cn/ai-agent/583.html</link>
    <description><![CDATA[0x00 故障现象
在使用 OpenClaw 运行自动化任务时，发现系统一直无法正常启动并调用浏览器。但是我明明已经通过apt install chromium 安装了浏览器，OpenClaw也只是提示浏览器无法调用，需要重启 OpenClaw Gateway。
0x01 根本原因排查
经过深入排查，发现坑出在 Ubuntu 自带的包管理机制上：
Ubuntu 默认会将通过 apt 安装的 Chromium 强制转换为带有 AppArmor 严格沙盒（Strict Confinement） 的 Snap 版本。这个沙盒机制限制了进程的网络、文件系统访问以及 IPC（进程间通信），会直接拦截和截断 CDP（Chrome DevTools Protocol... <a href="https://itho.cn/ai-agent/583.html">阅读全文</a>]]></description>
    <pubDate>Thu, 19 Mar 2026 11:10:43 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/ai-agent/583.html</guid>
</item>
<item>
    <title>群晖 Docker 容器启动失败：database is locked 解决办法</title>
    <link>https://itho.cn/notes/582.html</link>
    <description><![CDATA[0x01 故障现象
在群晖（Synology）环境，尝试启动一个 Docker 容器时，命令行或 Container Manager 弹出如下报错，导致容器完全无法启动：
Error response from daemon: failed to create task for container: failed to initialize logging driver: database is locked
Error: failed to start containers: XXXX
0x02 解决过程
从报错信息 failed to initialize logging driver: database is locked 可以明确看出，是 Do... <a href="https://itho.cn/notes/582.html">阅读全文</a>]]></description>
    <pubDate>Tue, 17 Mar 2026 13:16:10 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/582.html</guid>
</item>
<item>
    <title>OpenClaw 命令与排错终极指南</title>
    <link>https://itho.cn/ai-agent/581.html</link>
    <description><![CDATA[0x01 前言
在部署 OpenClaw 的过程中，很多开发者认为最繁琐的是前期的环境隔离与配置。但真正在生产环境跑起来后你会发现，部署仅仅是开胃菜，后续运维中那些“昨天运转正常，今天突然进程僵死”的时刻，才是真正的考验。
我自己也踩过无数类似的坑：控制台面板昨天还能访问，今天直接拒绝连接；飞书/QQ 渠道明明已经走通了回调，突然就断联无响应；修改了配置、执行了重启，服务状态依然异常。在复杂的上下文中排错时，人很容易陷入焦躁，第一反应往往是简单粗暴的：先 restart 一把再说。
然而，OpenClaw 很多时候的问题根因并非“重启次数不够”，而是排查链路的第一步就偏离了方向。在故障发生的瞬间，面对高度相似的 CLI 命令，极容易由于盲目操作导致上下... <a href="https://itho.cn/ai-agent/581.html">阅读全文</a>]]></description>
    <pubDate>Tue, 17 Mar 2026 11:41:17 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/ai-agent/581.html</guid>
</item>
<item>
    <title>OpenClaw 小白部署全攻略：附带微信 / QQ / 飞书机器人接入与实战避坑</title>
    <link>https://itho.cn/ai-agent/574.html</link>
    <description><![CDATA[0x01 前言 OpenClaw 曾用名（Clawdbot、Moltbot）。都是同一个东西，只是作者一直在改这个项目的名称，但是他的图标一直没变，所以我们习惯把他叫做“小龙虾”。 这两天 OpenClaw 突然在技术圈刷屏了。作者 Peter 把它定义为“生活助理”，本质上就是把 聊天软件、Claude Code 强大的编程能力，以及你自己的本地运行环境打通了。
它之所以能引爆社区，不光是因为“代码 100% 由 AI 生成”的噱头，更在于它展现了一种理想的 “人机协作” 范式：OpenClaw 直接运行在你掌控的环境（本地服务器/电脑）中，拥有完整的操作权限和超长记忆。这意味着它是一个真正私有、数据不外流的 Personal Agent，交互却像跟... <a href="https://itho.cn/ai-agent/574.html">阅读全文</a>]]></description>
    <pubDate>Mon, 09 Mar 2026 16:11:32 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/ai-agent/574.html</guid>
</item>
<item>
    <title>群晖系统盘md0扩容</title>
    <link>https://itho.cn/notes/580.html</link>
    <description><![CDATA[0x01 前言
博主的一台黑群晖是从 DSM 6 一路升级到 DSM 7.2 的。最近 DSM 7.3 发布，本想顺手升级，结果系统升级却一直报错提示“系统空间不足”。
SSH 登录进系统后，用 df -h 一看，发现根目录 /dev/md0（群晖的系统盘）使用率已经爆满了，扩容根目录可能需要动分区表；而且群晖的磁盘结构中，md0（系统分区）后面紧接着就是 md1（Swap 交换分区），这就意味着物理扇区是连续占用的，强行调整分区边界风险极大，理论上非常难扩容。
但是在网上突然看到一篇文章：群晖md0分区无损扩容教程，用于解决从DSM6升级到7后md0分区大小仍然是2.4GB  我发现了一个“意外惊喜”：其实底层物理磁盘的系统分区（p1）已经被分配了 ... <a href="https://itho.cn/notes/580.html">阅读全文</a>]]></description>
    <pubDate>Sat, 07 Mar 2026 15:32:11 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/580.html</guid>
</item>
<item>
    <title>关于K8s调度策略（NodeSelector, Affinity, Anti-Affinity）</title>
    <link>https://itho.cn/k8s/579.html</link>
    <description><![CDATA[0x00 前言
在 Kubernetes 生产集群中，合理的调度策略是保障业务 高可用 (HA) 和 低延迟 (Low Latency) 的核心。调度逻辑主要分为“节点选择”与“邻里关系”两大类。
本文将涵盖 nodeSelector、Node Affinity（硬限制/软限制/NotIn）、以及 Pod Affinity/Anti-Affinity 的实现方式。
graph TD %% 样式定义 classDef logic fill:#f9f9f9,stroke:#333,stroke-width:2px; classDef node fill:#e1f5fe,stroke:#01579b; classDef pod fill:#fff3e0,st... <a href="https://itho.cn/k8s/579.html">阅读全文</a>]]></description>
    <pubDate>Sat, 28 Feb 2026 15:08:42 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/579.html</guid>
</item>
<item>
    <title>BMAD-METHOD：VibeCoding 敏捷AI开发框架</title>
    <link>https://itho.cn/vibecoding/573.html</link>
    <description><![CDATA[博主使用的编程工具是 Claude Code + GLM4.7
如果你还没尝试过 Claude Code 推荐你阅读我这篇文章：《Claude Code + GLM4.7》，会手把手教你安装Claude Code与使用。 什么是 BMAD？
BMAD 是 Breakthrough Method of Agile AI-Driven Development（突破性敏捷 AI 驱动开发方法）的缩写。它集结了 12 位虚拟专家组成智能团队，通过自适应的结构化工作流，引导你完成从构思到部署的专家级交付。
官方仓库：https://github.com/bmad-code-org/BMAD-METHOD
核心理念： Context-Engineered Dev... <a href="https://itho.cn/vibecoding/573.html">阅读全文</a>]]></description>
    <pubDate>Mon, 26 Jan 2026 15:59:19 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/vibecoding/573.html</guid>
</item>
<item>
    <title>VibeCoding 实战：Claude Code + GLM 全能手册</title>
    <link>https://itho.cn/vibecoding/570.html</link>
    <description><![CDATA[前言
使用 Claude Code 让我的生产力翻了 10 倍。 这不仅仅是一篇教程，更是我 VibeCoding 之路的完整记录。本文将作为长期更新的备忘录，收录最实用的配置、插件与心得，带你彻底拥抱 VibeCoding 新范式。
什么是 Claude Code？
Claude Code 简称（CC） 是 Anthropic 出品的 AI 编程助手，相当于一个听得懂人话的“全能秘书”。你只管下指令，脏活累活它全包：不管是写代码修 Bug，还是翻译文章、分析 Excel 数据，甚至帮你快速糊个网站和小工具，它都能搞定。
graph LR %% 1. 起点：工具 CC(Claude Code br/ AI 编程工具) %% 2. 决策点 Need{需要... <a href="https://itho.cn/vibecoding/570.html">阅读全文</a>]]></description>
    <pubDate>Sun, 25 Jan 2026 22:25:00 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/vibecoding/570.html</guid>
</item>
<item>
    <title>智谱 GLM Coding Plan 用量查询 - iOS小组件</title>
    <link>https://itho.cn/vibecoding/572.html</link>
    <description><![CDATA[前言
有GLM订阅的朋友们都知道，智谱官方手册给了一个GLM用量查询的插件，但是每次需要在命令行调用，所以我就寻思做一个苹果小组件，这样直接就可以看到。
GLM 用量统计 Widget
关于
将智谱官方的 GLM 用量查询功能做成 iOS 主屏幕小组件，无需手动查询，实时掌握配额使用情况。
小组件如下图： 主要功能
自动刷新：每分钟自动更新用量数据
多尺寸支持：适配 2×2 和 2×4 小组件
智能配色：
根据用量百分比动态变色 🟢 0-30%（绿色）
🔵 30-60%（蓝色）
🟡 60-80%（黄色）
🔴 80%+（红色） 显示内容 ： Token 使用百分比及具体数值
MCP Tool 调用次数
Token 配额重置时间（2×4 显示剩余时间）
数... <a href="https://itho.cn/vibecoding/572.html">阅读全文</a>]]></description>
    <pubDate>Sat, 24 Jan 2026 00:23:55 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/vibecoding/572.html</guid>
</item>
<item>
    <title>Ubuntu 安装 NVIDIA Container Toolkit（国内加速源）</title>
    <link>https://itho.cn/linux/564.html</link>
    <description><![CDATA[Ubuntu 安装 NVIDIA Container Toolkit
官方源安装
# 官网源
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/us... <a href="https://itho.cn/linux/564.html">阅读全文</a>]]></description>
    <pubDate>Fri, 26 Dec 2025 10:25:01 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/linux/564.html</guid>
</item>
<item>
    <title>一些关于 Nginx 配置模板参考</title>
    <link>https://itho.cn/nginx/563.html</link>
    <description><![CDATA[静态网站
托管静态 HTML/CSS/JS 文件
server { listen 80; server_name example.com www.example.com; root /var/www/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } # 静态资源缓存 location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|woff|woff2)$ { expires 30d; add_header Cache-Control public, immutabl... <a href="https://itho.cn/nginx/563.html">阅读全文</a>]]></description>
    <pubDate>Fri, 26 Dec 2025 09:44:00 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/nginx/563.html</guid>
</item>
<item>
    <title>K8s 部署 Loki（Helm方式）</title>
    <link>https://itho.cn/k8s/562.html</link>
    <description><![CDATA[安装 loki
下载loki helm chart
#  add repo 
root@iZbp12bkuvg20e1j3y9gtxZ:~/k8s-yaml# helm repo add grafana https://grafana.github.io/helm-charts
grafana has been added to your repositories # pull loki chart
root@iZbp12bkuvg20e1j3y9gtxZ:~/k8s-yaml# helm pull grafana/loki --untar # edit loki  values.yaml
root@iZbp12bkuvg20e1j3y9gtxZ:~/... <a href="https://itho.cn/k8s/562.html">阅读全文</a>]]></description>
    <pubDate>Wed, 24 Dec 2025 17:07:46 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/562.html</guid>
</item>
<item>
    <title>K8s 部署 OpenTelemetry v0.41.0（适用于 Kubernetes v1.20 to v1.22）</title>
    <link>https://itho.cn/k8s/561.html</link>
    <description><![CDATA[0x00 前言
OpenTelemetry Operator：v0.41.0（api-versions：opentelemetry.io/v1alpha1）
Kubernetes：v1.20 to v1.22
Cert-Manager：1.6.1 业务 Pod 的遥测数据流向为：JavaAgent（自动注入） -  Sidecar Collector -  Center Collector -  观测后端 (Loki/Jaeger)。
graph LR %% ======================= %% 样式定义 (配色优化版) %% ======================= %% Operator: 清新绿 classDef opera... <a href="https://itho.cn/k8s/561.html">阅读全文</a>]]></description>
    <pubDate>Wed, 24 Dec 2025 12:07:53 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/561.html</guid>
</item>
<item>
    <title>RouterOS v7 WireGuard + BGP</title>
    <link>https://itho.cn/ros/559.html</link>
    <description><![CDATA[0x00 前言
配置wireguard接口互通的过程不再赘述，两端信息如下：
云端 (Cloud-ROS) AS号65001:
router-id：100.100.100.18
WireGuard 接口 IP: 100.100.100.18/24
内网网段: 172.18.0.0/16 家庭端 (Home2-ROS) AS号65000:
router-id：100.100.100.17
WireGuard 接口 IP: 100.100.100.17/24
内网网段: 172.17.10.0/24,172.17.20.0/24,172.17.200.0/24
graph LR %% 定义云端 subgraph Cloud [云端 (AS 65001)] ... <a href="https://itho.cn/ros/559.html">阅读全文</a>]]></description>
    <pubDate>Thu, 18 Dec 2025 09:30:16 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/ros/559.html</guid>
</item>
<item>
    <title>RouterOS v7 WireGuard + OSPF</title>
    <link>https://itho.cn/ros/558.html</link>
    <description><![CDATA[0x00 前言
云端 (Cloud-ROS):
公网 IP: 36.133.163.133
WireGuard 端口: 13231 (UDP)
WireGuard 接口 IP: 100.100.100.18/24
内网网段: 172.18.0.0/16 家庭端 (Home2-ROS):
公网 IP: home2.itho.cn (DDNS)
WireGuard 接口 IP: 100.100.100.17/24
内网网段: 172.17.0.0/16
graph LR subgraph Cloud [云端 (100.100.100.18)] C_ROS[Cloud-ROS] C_LAN[172.18.0.0/16 br/ (Passive)] ... <a href="https://itho.cn/ros/558.html">阅读全文</a>]]></description>
    <pubDate>Wed, 17 Dec 2025 16:26:12 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/ros/558.html</guid>
</item>
<item>
    <title>RouterOS v7 DNSPod DDNS更新脚本</title>
    <link>https://itho.cn/ros/557.html</link>
    <description><![CDATA[0x01 关于参数解释
login_token：用于鉴权的 API Token。完整的 API Token 是由 ID,Token 组合而成的，用英文的逗号分割。获取地址(https://console.dnspod.cn/account/token/token),我的账号- api秘钥- DNSPod TOKEN。
domain_id：域名ID。我的域名- 解析设置- Domain ID。
record_id：记录ID，需要在解析记录，自定义列表字段，勾选记录ID，就会出来。
record_line_id：线路id，0就是默认
sub_domain：sub_domain 主机记录值。
0x02 routeros7 dnspod ddns更新脚本
版本... <a href="https://itho.cn/ros/557.html">阅读全文</a>]]></description>
    <pubDate>Mon, 15 Dec 2025 09:55:39 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/ros/557.html</guid>
</item>
<item>
    <title>PVE 9 入坑笔记</title>
    <link>https://itho.cn/pve/556.html</link>
    <description><![CDATA[去除无有效期订阅提示
# 适用于pve9
sed -Ezi.bak s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service
开启网卡直通
# vi /etc/default/grub，把GRUB_CMDLINE_LINUX_DEFAULT=quiet改成下面的
GRUB_CMDLINE_LINUX_DEFAULT=quiet intel_iommu=on
# 更新 GRUB 
... <a href="https://itho.cn/pve/556.html">阅读全文</a>]]></description>
    <pubDate>Fri, 12 Dec 2025 14:45:10 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/pve/556.html</guid>
</item>
<item>
    <title>【sysin制作-免费分享】VMware ESXi 9.0.1.0 macOS Unlocker &amp; OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)</title>
    <link>https://itho.cn/vmware/554.html</link>
    <description><![CDATA[提取码都是itho，链接失效了评论区留言会补的。其他网站上面花钱买的，反对二道贩子，直接免费公开给大家！ VMware ESXi 9.0.1.0 macOS Unlocker集成驱动版 (2025-11-13) 新增 RTL8111/RTL8125/RTL8126/RTL8127 网卡支持。
新增 Intel E822、E823、E825、E830 网卡支持。
相关驱动更新到当前最新版。 通过网盘分享的文件：ESXi-9.0.1.0-24957456-20251001.iso <a href="https://itho.cn/vmware/554.html">阅读全文</a>]]></description>
    <pubDate>Thu, 11 Dec 2025 22:04:27 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/vmware/554.html</guid>
</item>
<item>
    <title>【sysin制作-免费分享】VMware ESXi 8.0U3g macOS Unlocker &amp; OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)</title>
    <link>https://itho.cn/vmware/553.html</link>
    <description><![CDATA[提取码都是itho，链接失效了评论区留言会补的。其他网站上面花钱买的，反对二道贩子，直接免费公开给大家！ VMware ESXi 8.0U3g OEM BIOS（集成OEM 2.6）
通过网盘分享的文件：ESXi-8.0b-21203435-ITTEL-20230223.iso
VMware ESXi 8.0U1 macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)
通过网盘分享的文件：ESXi-8.0U1-21495797-ITTEL-20230419.iso
VMware ESXi 8.0U1a macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)
通过网... <a href="https://itho.cn/vmware/553.html">阅读全文</a>]]></description>
    <pubDate>Thu, 11 Dec 2025 21:51:09 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/vmware/553.html</guid>
</item>
<item>
    <title>RouterOS v7 WireGuard（site-to-site）配置</title>
    <link>https://itho.cn/ros/552.html</link>
    <description><![CDATA[0x01 前言
本文章实现 Home2（家庭端，无公网IP） 与 Cloud（云端，有公网IP） 之间的互联。由于家庭端位于 NAT 之后，需要配置 Persistent Keepalive 保持连接活跃。
云端 (Cloud-ROS):
公网 IP: 36.133.163.133
WireGuard 端口: 13231 (UDP)
WireGuard 接口 IP: 100.100.100.18/24
内网网段: 172.18.0.0/16 家庭端 (Home2-ROS):
公网 IP: 无 (NAT)
WireGuard 接口 IP: 100.100.100.17/24
内网网段: 172.17.0.0/16
graph LR %% 家庭端：垂直对齐... <a href="https://itho.cn/ros/552.html">阅读全文</a>]]></description>
    <pubDate>Wed, 10 Dec 2025 09:22:03 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/ros/552.html</guid>
</item>
<item>
    <title>Linux 多路径（Multipath）挂载教程</title>
    <link>https://itho.cn/notes/551.html</link>
    <description><![CDATA[Linux 下的 多路径 IO (Multipath I/O) 挂载流程
# 可以看到 sdb, sdc, sdd 三个物理路径都对应同一个 WWID (360...33a) 的 mpath 设备，说明多路径聚合成功。
root@xianshitest3day3:~#  lsblk
NAME                                        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
sda                                           8:0    0 446.1G  0 disk  
├─sda1                           ... <a href="https://itho.cn/notes/551.html">阅读全文</a>]]></description>
    <pubDate>Sat, 06 Dec 2025 18:08:14 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/551.html</guid>
</item>
<item>
    <title>Ubuntu 读取群辉硬盘内数据</title>
    <link>https://itho.cn/notes/549.html</link>
    <description><![CDATA[0x01 前言
一直怕黑群晖引导失败后，数据读不出来，所以研究了下群辉数据存储方式，其实就是mdadm+lvm2。首先把一块硬盘例如sdX分成3个区，第一个区sdX1存放dsm系统，第二个分区sdX2为swap，sdX3就是用户数据。
DSM跟swap用的是RAID1，每块硬盘上都会存在，每次使用的时候只使用硬盘序列号最小的那一块硬盘。
0x02 关于群辉的硬盘分区
Synology NAS 将每块硬盘划分为三个分区：
系统分区（sdX1）：存放DSM操作系统
SWAP分区（sdX2）：用作交换空间SAWP
数据分区（sdX3）：存储用户数据
详细：https://kb.synology.cn/zh-cn/DSM/tutorial/What_are_d... <a href="https://itho.cn/notes/549.html">阅读全文</a>]]></description>
    <pubDate>Fri, 28 Nov 2025 14:31:47 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/549.html</guid>
</item>
<item>
    <title>乔思伯 N3 黑群晖 7.2 装机方案分享</title>
    <link>https://itho.cn/notes/548.html</link>
    <description><![CDATA[0x01 前言
服役多年的星际蜗牛B款在闲鱼淘来后一直稳定运行，也该退休了。准备换一个功耗低的allinone NAS，盘位一定要多，分享下这套装机方案。黑群晖采用RR引导，版本是25.9.27。注意：硬盘有价，数据无价。
0x02 配置分享
主板自带的4个SATA接口不够用，我最初选择了M.2转6口SATA扩展卡ASM1166。目前市面上M.2转SATA的方案主要有ASM1166和JMB585两种，前者提供6个接口且功耗较低，理论上发热也更小；后者则是5口设计。卖家说某些B760和Z790主板可能存在兼容性问题不识别，但我在实际测试中正常使用。后面感觉消费级的扩展卡不太稳，后面又买了一套LSI3008直通卡，卖家还贴心赠送了两条8643转4SATA的... <a href="https://itho.cn/notes/548.html">阅读全文</a>]]></description>
    <pubDate>Thu, 27 Nov 2025 09:10:09 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/548.html</guid>
</item>
<item>
    <title>Nginx Autoindex 样式美化</title>
    <link>https://itho.cn/nginx/547.html</link>
    <description><![CDATA[0x01 前言
nginx开启autoindex可以支持目录访问，但是原生的太丑了，通过修改 nginx.conf 配置文件中的 add_after_body 配置项引入一个html，通过 js 将原生界面的 dom 元素提取出来，然后重新布局添加样式，来实现美化。
1、支持面包屑导航。
2、格式化输出样式。
3、可以对文件名，修改时间，大小排序。 0x02 实现
1、首先添加 add_after_body 字段。 location / { root   /usr/share/nginx/html; autoindex on; autoindex_exact_size off; autoindex_localtime on; ... <a href="https://itho.cn/nginx/547.html">阅读全文</a>]]></description>
    <pubDate>Tue, 25 Nov 2025 14:48:58 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/nginx/547.html</guid>
</item>
<item>
    <title>关于 Nginx 反向代理 DDNS 域名，动态 IP 变更后导致502（Bad Gateway）问题。</title>
    <link>https://itho.cn/nginx/544.html</link>
    <description><![CDATA[0x01 前言
Nginx在启动（或重载配置）时，会将反向代理配置中的DDNS域名解析为对应的IP地址并缓存。而DDNS域名的IP是动态变化的，当IP更新后，Nginx不会主动重新解析域名，仍会使用旧的缓存IP，导致请求无法连接到正确的后端服务，最终返回502错误。
0x02 解决方法
设置一个定时任务，检测站点存活，如果返回不是200就重启nginx。
#!/bin/bash # 获取状态码（-s 静默模式，-I 只获取头部）
HTTP_CODE=$(curl -s -o /dev/null -w %{http_code} https://itho.cn) # 判断是否是 200
if [ $HTTP_CODE != 200 ]; then echo... <a href="https://itho.cn/nginx/544.html">阅读全文</a>]]></description>
    <pubDate>Wed, 05 Nov 2025 20:44:23 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/nginx/544.html</guid>
</item>
<item>
    <title>Redis 集群小版本升级文档（6.2.17-&gt;6.2.20）</title>
    <link>https://itho.cn/k8s/543.html</link>
    <description><![CDATA[<p>[该文章已设置加密]</p>]]></description>
    <pubDate>Tue, 04 Nov 2025 09:50:57 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/543.html</guid>
</item>
<item>
    <title>Rancher生产环境share-mnt(rancher-agent)组件丢失问题分析与解决报告</title>
    <link>https://itho.cn/k8s/542.html</link>
    <description><![CDATA[<p>[该文章已设置加密]</p>]]></description>
    <pubDate>Tue, 28 Oct 2025 08:53:34 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/542.html</guid>
</item>
<item>
    <title>Kali抓包无线网卡支持矩阵</title>
    <link>https://itho.cn/notes/546.html</link>
    <description><![CDATA[原文链接：https://github.com/morrownr/USB-WiFi/blob/main/home/USB_WiFi_Chipsets.md
Linux USB WiFi芯片组信息
更新日期：2025-09-22
并非所有USB WiFi适配器都相同。虽然芯片组和驱动程序决定了支持的WiFi功能（如频段），但适配器制造商可自主决定天线性能、放大器质量以及设备是否需要模式切换等。
注：部分芯片组虽列有良好的内核驱动但仍不推荐。当前主要原因是仅有多状态适配器可用。当单状态适配器上市时，此推荐建议将相应调整。 芯片组
标准
最大信道宽度
Linux内核驱动
AP模式
监听模式
推荐用于Linux Mediatek MT7925
WiFi 7
1... <a href="https://itho.cn/notes/546.html">阅读全文</a>]]></description>
    <pubDate>Mon, 22 Sep 2025 17:20:35 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/546.html</guid>
</item>
<item>
    <title>使用Runlike还原Docker启动命令</title>
    <link>https://itho.cn/docker/538.html</link>
    <description><![CDATA[0x01 前言
在生产环境中经常遇到用docker run起的容器，但是时间一长就会忘记。使用Runlike可以还原出容器当时的启动命令
0x02 用法
1、使用python pip方式
# 使用pip安装runlike
myluzh@myluzhMacBookPro ~ % pip3 install runlike
Successfully installed runlike-1.5.4
# 查看需要还原启动命令的容器
myluzh@myluzhMacBookPro ~ % docker ps
CONTAINER ID   IMAGE              COMMAND                   CREATED      STATUS... <a href="https://itho.cn/docker/538.html">阅读全文</a>]]></description>
    <pubDate>Fri, 29 Aug 2025 08:59:12 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/docker/538.html</guid>
</item>
<item>
    <title>关于Nginx请求URL自动添加斜杠与端口问题</title>
    <link>https://itho.cn/nginx/536.html</link>
    <description><![CDATA[0x01 前言
最近在给客户部署K8S应用的时候遇到一个问题，就是当客户端请求的URL结尾没有斜杠时，会自动301重定向，添加反斜杠/，还会带上端口。
例如：当访问 https://pms.ccmcxx.com/contract （没有结尾斜杠）时，会自动返回 301 重定向 到 http://pms.ccmcxx.com:7081/contract/ 
# url最后没有加/，会自动触发一个重定向，导致访问错误。
myluzh@myluzhMacBookPro ~ % curl -I https://pms.ccmcxx.com/contract 
HTTP/2 301 
location: http://pms.ccmcxx.com:7081/co... <a href="https://itho.cn/nginx/536.html">阅读全文</a>]]></description>
    <pubDate>Fri, 01 Aug 2025 09:58:01 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/nginx/536.html</guid>
</item>
<item>
    <title>二进制部署Minio集群（多节点多驱动器）</title>
    <link>https://itho.cn/linux/535.html</link>
    <description><![CDATA[0x01 准备Minio所需的硬盘
准备了4台机子，每个机子给minio4块盘（vdb、vdc、vdd、vde）
1、所有机器4块盘都格式化成xfs格式
sudo mkfs.xfs /dev/vdb
sudo mkfs.xfs /dev/vdc
sudo mkfs.xfs /dev/vdd
sudo mkfs.xfs /dev/vde
2、挂载磁盘
# 创建挂载目录
mkdir -p /minio/data1 && mkdir -p /minio/data2 && mkdir -p /minio/data3 && mkdir -p /minio/data4
# 获取vdb到vde的uuid 写入 /etc/fstab，以便开机自动挂载。
lsblk -... <a href="https://itho.cn/linux/535.html">阅读全文</a>]]></description>
    <pubDate>Thu, 31 Jul 2025 16:47:57 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/linux/535.html</guid>
</item>
<item>
    <title>K8S部署MinIO集群</title>
    <link>https://itho.cn/k8s/534.html</link>
    <description><![CDATA[0x01 部署 MinIO Operator
最新版的operator请参考：https://min.io/docs/minio/kubernetes/upstream/operations/installation.html
kubectl apply -k github.com/minio/operator?ref=v5.0.18
kubectl get pods -n minio-operator
kubectl get all -n minio-operator 0x02 部署 MinIO Tenant（租户）
下载并渲染一个基于 Kustomize 的 Kubernetes 示例资源清单，手动修改成你需要的集群配置应用。
kubectl ku... <a href="https://itho.cn/k8s/534.html">阅读全文</a>]]></description>
    <pubDate>Mon, 21 Jul 2025 09:33:12 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/534.html</guid>
</item>
<item>
    <title>K8S部署Redis Exporter</title>
    <link>https://itho.cn/k8s/533.html</link>
    <description><![CDATA[1、部署redis exporter
apiVersion: apps/v1
kind: Deployment
metadata: name: redis-exporter namespace: base labels: app: redis-exporter
spec: replicas: 1 selector: matchLabels: app: redis-exporter template: metadata: labels: app: redis-exporter spec: containers: - name: redis-exporter image: ... <a href="https://itho.cn/k8s/533.html">阅读全文</a>]]></description>
    <pubDate>Fri, 11 Jul 2025 10:04:22 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/533.html</guid>
</item>
<item>
    <title>Windows Server 重置RDS宽限期</title>
    <link>https://itho.cn/win/529.html</link>
    <description><![CDATA[前言
Windows server RDS默认宽限期是120天，激活需要购买授权才行。此方法仅用于测试使用，请勿在商业用途上使用。
方法
手动修改注册表
regedit，打开注册表，删除GracePeriod项，重启，即可。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod
默认是无法删除的，因为不具备权限。可以1、在高级里面把所有者替换为当前登录用户，2、然后在用户权限里面添加当前用户，给予完全控制。也可以写个定时任务
reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Con... <a href="https://itho.cn/win/529.html">阅读全文</a>]]></description>
    <pubDate>Mon, 30 Jun 2025 10:50:03 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/win/529.html</guid>
</item>
<item>
    <title>配置RDP远程桌面连接，开启GPU加速、60FPS</title>
    <link>https://itho.cn/notes/524.html</link>
    <description><![CDATA[0x01 包含的功能
在 RDP 会话期间允许 GPU 加速和 RemoteFx。将捕获帧率设置为 60 FPS，以获得更流畅的视觉体验。减少压缩以提高 RDP 的图像质量。调整系统响应能力以增强用户界面交互。禁用带宽限制以减少与网络相关的速度下降。允许较大的 MTU 数据包，这可以提高网络性能。优化显示和通道带宽的流量控制（RemoteFX 设备，包括控制器）。消除人为延迟，以便通过 RDP 实现更直接的交互。选择禁用 WDDM 驱动程序，转而使用 XDDM 驱动程序，以获得更好的 Nvidia 显卡性能（默认注释掉）。
0x02 UpinelBetterRDP.reg
Windows Registry Editor Version 5.00 ; +... <a href="https://itho.cn/notes/524.html">阅读全文</a>]]></description>
    <pubDate>Mon, 26 May 2025 14:56:02 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/524.html</guid>
</item>
<item>
    <title>使用LLM+MCP，实现对话式运维的Demo</title>
    <link>https://itho.cn/notes/523.html</link>
    <description><![CDATA[0x01 编写mcp server
基于FastMCP框架的异步工具服务器，提供了多种实用的功能，例如端口可达性测试、域名解析、通过SSH查看服务器监听端口和防火墙规则等。
from mcp.server.fastmcp import FastMCP
import socket
import asyncio # 创建FastMCP实例
mcp = FastMCP(Demo) @mcp.tool()
async def ping_port(host: str, port: int, timeout: float = 2.0) -  str:  测试指定主机的端口是否可达。 Args: host: 目标主机名或IP地址 port: 要测试... <a href="https://itho.cn/notes/523.html">阅读全文</a>]]></description>
    <pubDate>Fri, 16 May 2025 16:14:13 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/523.html</guid>
</item>
<item>
    <title>K8S部署Redis集群（ot-redis-operator方式）</title>
    <link>https://itho.cn/k8s/532.html</link>
    <description><![CDATA[0x01 介绍
github地址：https://github.com/OT-CONTAINER-KIT/redis-operator
通过redis-operater支持以下方式部署：
RedisCluster 适用于需要高可用性和数据分片的场景，适合大规模部署。
RedisReplication 适合需要读写分离的场景，提供主从复制和负载均衡。
RedisSentinel 适合需要高可用性和自动故障转移的场景，提供监控和故障恢复能力。
Redis 适合简单的单实例部署，用于开发、测试或小型应用。
注意：要使用opstree/redis:xxx镜像，不能用redis官方镜像，要不然有问题。https://quay.io/repository/opst... <a href="https://itho.cn/k8s/532.html">阅读全文</a>]]></description>
    <pubDate>Fri, 09 May 2025 10:28:27 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/532.html</guid>
</item>
<item>
    <title>iptables 四表五链</title>
    <link>https://itho.cn/linux/522.html</link>
    <description><![CDATA[0x01 iptables概念
iptables是Linux系统中强大的网络流量控制工具，它通过四种主要的表（raw、mangle、nat、filter）和五条链（INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING）来实现对数据包的过滤、修改和地址转换。
iptables、firewalld 和 ufw 都是用于管理 Linux 系统防火墙的工具，但它们的设计目标、使用方式和复杂性有所不同。它们都依赖于底层的 netfilter 框架来实现实际的网络包过滤和转发功能。真正实现防火墙功能的是内核中的 Netfilter 模块。Netfilter 在网络层的五个关键位置（即防火墙的五链）注册了钩子函数，用于抓取数据包，并... <a href="https://itho.cn/linux/522.html">阅读全文</a>]]></description>
    <pubDate>Tue, 01 Apr 2025 09:47:06 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/linux/522.html</guid>
</item>
<item>
    <title>关于Jenkins一些插件介绍</title>
    <link>https://itho.cn/cicd/521.html</link>
    <description><![CDATA[0x01 Job Import Plugin
插件介绍：使用该插件从旧 Jenkins 导入所有作业。
1、在新的Jenkins安装好插件后，配置 Remote Jenkins Server
(1) 进入 Jenkins 管理页面：登录到你的新 Jenkins 实例。点击左侧菜单中的 Manage Jenkins。
(2) 找到 Job Import Plugin 配置：在管理页面中，向下滚动找到 Configure System。搜索或滚动到 Job Import Plugin 的配置部分。
(3) 添加远程 Jenkins 服务器：点击 Add Jenkins server 按钮。填写以下信息：
Name: 给这个远程 Jenkins 服务器起一个... <a href="https://itho.cn/cicd/521.html">阅读全文</a>]]></description>
    <pubDate>Tue, 25 Mar 2025 19:51:38 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/cicd/521.html</guid>
</item>
<item>
    <title>K8S部署单节点EMQX4</title>
    <link>https://itho.cn/k8s/519.html</link>
    <description><![CDATA[0x01 部署单节点emqx
1、部署yaml
apiVersion: apps/v1
kind: StatefulSet
metadata: name: emqx namespace: base
spec: serviceName: emqx-headless replicas: 1 selector: matchLabels: app: emqx template: metadata: labels: app: emqx spec: containers: - name: emqx image: 172.30.82.223:5443/base/emqx/emqx:4.4.1 ... <a href="https://itho.cn/k8s/519.html">阅读全文</a>]]></description>
    <pubDate>Tue, 11 Mar 2025 15:13:30 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/519.html</guid>
</item>
<item>
    <title>关于NextCloud登录报错：Refused to send form data to '/login' because it violates the following Content Security Policy directive: &quot;form-action 'self'&quot;.</title>
    <link>https://itho.cn/notes/518.html</link>
    <description><![CDATA[0x01 问题描述
部署完nextcloud，点击登录后，一直卡在登录界面，控制台提示：Refused to send form data to '/login' because it violates the following Content Security Policy directive: form-action 'self'.
0x02 解决方案
把自己的域名加上
cd /nextcloud_data/lib/public/AppFramework/Http
vim ContentSecurityPolicy.php
# 加上网址域名即可 /** @var array Domains which can be used as target ... <a href="https://itho.cn/notes/518.html">阅读全文</a>]]></description>
    <pubDate>Mon, 10 Mar 2025 08:42:14 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/518.html</guid>
</item>
<item>
    <title>K8S 删除命名空间一直卡在Terminating解决方案（移除finalizers，强制删除命名空间）</title>
    <link>https://itho.cn/k8s/494.html</link>
    <description><![CDATA[0x01 前言
Kubernetes 命名空间一直处于 Terminating 状态，无法删除。
通常是由于该命名空间中的资源对象被设置了终结器（finalizers）。终结器是一种机制，用于确保某些操作在对象被删除之前完成。例如，某些控制器可能会设置终结器以确保在删除命名空间之前清理相关资源或执行特定的清理逻辑。如果这些清理任务未完成或者出现了错误，命名空间将一直保持在“Terminating”状态。
0x02 解决方案
方案1：排查并解决阻塞资源问题
命名空间无法删除是因为其中包含了一些特殊的资源（如自定义资源定义CRD、持久卷声明PVC等），这些资源的存在阻止了命名空间的删除过程。检查命名空间下的所有资源：根据输出结果逐一排查是否有异常资源未被正... <a href="https://itho.cn/k8s/494.html">阅读全文</a>]]></description>
    <pubDate>Wed, 05 Mar 2025 23:22:46 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/494.html</guid>
</item>
<item>
    <title>RKE2 部署高可用K8S集群</title>
    <link>https://itho.cn/k8s/493.html</link>
    <description><![CDATA[0x01 前言
rke2部署k8s集群，主机是2台master2台worker，系统用的是Ubuntu24.04 LTS，ansible清单如下：
必须以 root 用户或通过 sudo 执行 RKE2 安装。https://docs.rke2.io/zh/install/quickstart
# inventory
[all:vars]
ansible_user=root
ansible_password='Testtest01.'
ansible_python_interpreter=/usr/bin/python3.12 [k8s_master]
k8s-master01 ansible_host=172.17.100.181
k8s-maste... <a href="https://itho.cn/k8s/493.html">阅读全文</a>]]></description>
    <pubDate>Tue, 04 Mar 2025 19:34:03 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/493.html</guid>
</item>
<item>
    <title>GitOps：ArgoCD 部署与使用</title>
    <link>https://itho.cn/cicd/492.html</link>
    <description><![CDATA[0x01 前言
Argo CD仓库地址：https://github.com/argoproj/argo-cd/releases
什么是Argo CD？
Argo CD 是一个基于 GitOps 的 Kubernetes 持续交付工具，通过自动化同步 Git 仓库中的配置到 Kubernetes 集群，实现高效、可靠的应用部署和管理。
GitOps 的核心原则：
1、声明式配置：Kubernetes 的部署配置（如 deployment.yaml）以声明式的方式存储在 Git 仓库中。ArgoCD 通过读取这些配置文件来同步 Kubernetes 集群的状态。
2、Git 作为唯一事实来源（Single Source of Truth）：所有的 Kub... <a href="https://itho.cn/cicd/492.html">阅读全文</a>]]></description>
    <pubDate>Mon, 03 Mar 2025 15:15:32 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/cicd/492.html</guid>
</item>
<item>
    <title>在Nginx和Ingress-Nginx中配置WebSocket（WS/WSS）</title>
    <link>https://itho.cn/k8s/491.html</link>
    <description><![CDATA[0x01 Nginx
server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/your/certificate.crt; ssl_certificate_key /path/to/your/private.key; location /ws/ { proxy_pass http://backend_server; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection Upgrade... <a href="https://itho.cn/k8s/491.html">阅读全文</a>]]></description>
    <pubDate>Wed, 26 Feb 2025 15:24:33 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/491.html</guid>
</item>
<item>
    <title>基于 Rocky Linux 9.5 安装 Zabbix 7.2 脚本</title>
    <link>https://itho.cn/zabbix/487.html</link>
    <description><![CDATA[前言
基于RockyLinux最小安装环境，需要联网状态！！！
修改主机名
hostnamectl set-hostname Zbx-Srv && bash
修改成阿里源
sed -e 's|^mirrorlist=|#mirrorlist=|g' \ -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \ -i.bak \ /etc/yum.repos.d/[Rr]ocky*.repo
dnf makecache
安装常用组件
dnf -y install vim net-tools wget ope... <a href="https://itho.cn/zabbix/487.html">阅读全文</a>]]></description>
    <pubDate>Wed, 12 Feb 2025 16:04:07 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/zabbix/487.html</guid>
</item>
<item>
    <title>通过elasticdump迁移ElasticSearch数据</title>
    <link>https://itho.cn/notes/485.html</link>
    <description><![CDATA[0x01 前言
有一台日志es，需要把旧的es数据迁移到新的es上。
在迁移Elasticsearch (ES) 数据时，使用 elasticdump 是一个常见的方法。elasticdump 是一个开源工具，用于将 Elasticsearch 集群中的数据导出和导入。
0x02 部署elasticdump
1、由于我这边是k8s集群，直接跑一个pod起来即可。镜像是node:14，自带npm。方便安装elasticdump。
apiVersion: apps/v1
kind: Deployment
metadata: name: es-migration namespace: default
spec: replicas: 1 selector: m... <a href="https://itho.cn/notes/485.html">阅读全文</a>]]></description>
    <pubDate>Mon, 10 Feb 2025 09:59:45 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/485.html</guid>
</item>
<item>
    <title>git教程：带你git从入门到精通</title>
    <link>https://itho.cn/notes/578.html</link>
    <description><![CDATA[0x01 git 安装与环境配置
1、安装
https://git-scm.com/
git -v
git version 2.50.1 (Apple Git-155)
2、配置
vi ~/.zprofile
#用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
#用于输出当前目录所有文件及基本信息
alias ll='ls -al'
# 重载
source ~/.zprofile
git 常用命令
%%{init: {'theme': 'base', 'flowchart': { 'curve': 'monotoneX', 'nodeSp... <a href="https://itho.cn/notes/578.html">阅读全文</a>]]></description>
    <pubDate>Mon, 10 Feb 2025 09:35:31 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/578.html</guid>
</item>
<item>
    <title>通过LLaMA-Factory微调ChatGLM3模型笔记</title>
    <link>https://itho.cn/notes/486.html</link>
    <description><![CDATA[0x01 下载ChatGLM3大模型
# 创建存放模型的文件夹
mkdir -p /mnt/workspace/models && cd /mnt/workspace/models
# 下载大模型 https://modelscope.cn/models/ZhipuAI/chatglm3-6b/files
git lfs install
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
0x02 运行调试模型
下载ChatGLM3 web demo项目，用来运行调试调试模型
1、安装
mkdir -p /mnt/workspace/webcodes  && cd /mnt/works... <a href="https://itho.cn/notes/486.html">阅读全文</a>]]></description>
    <pubDate>Fri, 07 Feb 2025 17:34:46 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/486.html</guid>
</item>
<item>
    <title>Ollama 部署 &amp; 搭建本地大模型</title>
    <link>https://itho.cn/notes/484.html</link>
    <description><![CDATA[0x01 安装 Ollama
Docker 安装
NVIDIA Container Toolkit 安装教程可以参考：安装 NVIDIA Container Toolkit
容器内默认监听 0.0.0.0，只需要通过 -p 映射端口，宿主机即可被外部访问，无需额外配置环境变量。
docker pull docker.1ms.run/ollama/ollama:0.13.5
mkdir -p /docker/ollama
# 确保已安装 NVIDIA Container Toolkit 以支持 --gpus all，
docker run -d --gpus all \ -v /docker/ollama:/root/.ollama \ -p 11434... <a href="https://itho.cn/notes/484.html">阅读全文</a>]]></description>
    <pubDate>Thu, 06 Feb 2025 15:35:36 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/484.html</guid>
</item>
<item>
    <title>Docker命令与Ctr命令对照表</title>
    <link>https://itho.cn/docker/483.html</link>
    <description><![CDATA[容器管理相关命令 功能
Docker 命令
ctr 命令 拉取镜像
docker pull  image 
ctr image pull  image  查看镜像列表
docker images
ctr image list 删除镜像
docker rmi  image 
ctr image remove  image  启动容器
docker run  image 
ctr container create --tty  image  列出正在运行的容器
docker ps
ctr task list 列出所有容器
docker ps -a
ctr container list 停止容器
docker... <a href="https://itho.cn/docker/483.html">阅读全文</a>]]></description>
    <pubDate>Fri, 24 Jan 2025 11:16:27 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/docker/483.html</guid>
</item>
<item>
    <title>Docker设置代理：docker pull 代理</title>
    <link>https://itho.cn/docker/481.html</link>
    <description><![CDATA[方式一：daemon.json (推荐)
Daemon configuration
You may configure proxy behavior for the daemon in the daemon.json file, or using CLI flags for the --http-proxy or --https-proxy flags for the dockerd command. Configuration using daemon.json is recommended.
{ proxies: { http-proxy: http://proxy.example.com:3128, https-proxy: https://pr... <a href="https://itho.cn/docker/481.html">阅读全文</a>]]></description>
    <pubDate>Mon, 20 Jan 2025 10:59:50 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/docker/481.html</guid>
</item>
<item>
    <title>K8S 存储卷使用总结</title>
    <link>https://itho.cn/k8s/480.html</link>
    <description><![CDATA[使用场景
推荐方式 持久化存储（文件、数据库等）
PVC 或 volumeClaimTemplates 配置和凭据管理
ConfigMap 和 Secret 临时数据存储
EmptyDir 访问主机文件
HostPath 动态云存储卷分配
CSI 0x01 PersistentVolumeClaim (PVC)
最通用的持久化存储方式。适用于绝大多数需要持久化数据的场景，例如数据库存储、文件共享。与各种存储插件兼容。
典型场景：数据库（MySQL、PostgreSQL、MongoDB）。
volumes: - name: app-data persistentVolumeClaim: claimName: app-data-pvc
---
apiVe... <a href="https://itho.cn/k8s/480.html">阅读全文</a>]]></description>
    <pubDate>Wed, 15 Jan 2025 10:07:52 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/480.html</guid>
</item>
<item>
    <title>修复VMware ESXi未向DHCP服务器注册主机名</title>
    <link>https://itho.cn/vmware/479.html</link>
    <description><![CDATA[0x01 问题
当对 ESXi 主机使用 DHCP 时，默认情况下 ESXi 主机不会发送首选主机名，它只会等待 DHCP 服务器为其分配主机名。
有时我们希望在某些情况下 ESXi 主机发送首选主机名。
0x02 修复
方法一：使用 ESXi Web 客户端
1、通过 https://esxi_host_ip 登录到 ESXi Web GUI
2、在左侧的主机下，单击管理
3、从系统选项卡 -  高级设置中，找到Misc.PreferredHostName
4、单击Misc.PreferredHostName，单击编辑选项
5、在新值字段中输入此 ESXi 主机的首选主机名，然后单击保存按钮
6、重新启动 E... <a href="https://itho.cn/vmware/479.html">阅读全文</a>]]></description>
    <pubDate>Mon, 16 Dec 2024 11:10:55 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/vmware/479.html</guid>
</item>
<item>
    <title>K8S 使用临时容器（Ephemeral Containers）</title>
    <link>https://itho.cn/k8s/478.html</link>
    <description><![CDATA[0x01 前言
临时容器主要用于调试和排查问题。当 Pod 中的容器镜像很小，缺少常用工具（如 netstat、curl、ping 等）时，临时容器可以帮助你在不改变 Pod 原有配置的情况下，快速加载这些工具进行诊断。临时容器是独立于 Pod 主容器的，不会影响其运行，可以在需要时添加并删除，便于实时调试和故障排除。
0x02 使用临时容器debug
1、前置条件
（1）临时容器功能是在 Kubernetes v1.16 版本中引入的，确保自己的集群版本号支持：kubectl version --short
（2）编辑 kube-apiserver 的配置文件，并添加 --feature-gates=EphemeralContainers=true，... <a href="https://itho.cn/k8s/478.html">阅读全文</a>]]></description>
    <pubDate>Wed, 04 Dec 2024 17:01:57 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/478.html</guid>
</item>
<item>
    <title>Prometheus 监控 ingress-nginx 性能指标</title>
    <link>https://itho.cn/k8s/477.html</link>
    <description><![CDATA[0x01 Prometheus 配置
在prometheus-additional.yaml配置文件中，添加监控配置。
参考文章：https://github.com/kubernetes/ingress-nginx/blob/main/deploy/prometheus/prometheus.yaml
- job_name: 'k8s-ingress-nginx' kubernetes_sd_configs: - role: pod namespaces: names: - ingress-nginx # 只监控 ingress-nginx 命名空间中的 Pod relabel_configs: - source_labels: [__meta_ku... <a href="https://itho.cn/k8s/477.html">阅读全文</a>]]></description>
    <pubDate>Fri, 29 Nov 2024 10:23:51 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/477.html</guid>
</item>
<item>
    <title>Prometheus 监控 Java 应用和 JVM 性能指标</title>
    <link>https://itho.cn/k8s/476.html</link>
    <description><![CDATA[0x01 配置java项目
1、在java项目中pom.xml添加依赖
 !-- Micrometer Prometheus registry -- 
 dependency   groupId org.springframework.boot /groupId   artifactId spring-boot-starter-actuator /artifactId 
 /dependency   dependency   groupId io.micrometer /groupId   artifactId micrometer-core&lt... <a href="https://itho.cn/k8s/476.html">阅读全文</a>]]></description>
    <pubDate>Thu, 28 Nov 2024 09:33:24 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/476.html</guid>
</item>
<item>
    <title>Prometheus 自动发现 K8S Ingress 下的域名进行黑盒监控</title>
    <link>https://itho.cn/k8s/474.html</link>
    <description><![CDATA[0x01 在prometheus配置中添加自动发现
修改prometheus配置文件prometheus-additional.yaml，我这边只自动发现namespace为dev-test的ingress，其他要求可以按需配置。
# 黑盒监控自定义地址
- job_name: 'blackbox_http' metrics_path: /probe  # 指定用于探测的 HTTP 路径 params: module: [http_2xx]  # 指定模块，配置在 Blackbox Exporter 的配置文件中 static_configs: - targets:  # 定义需要监控的目标地址 - https://www.baidu.com rela... <a href="https://itho.cn/k8s/474.html">阅读全文</a>]]></description>
    <pubDate>Thu, 21 Nov 2024 17:24:25 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/474.html</guid>
</item>
<item>
    <title>Prometheus 在 K8S 集群中自动发现常用角色（Role）的解释</title>
    <link>https://itho.cn/k8s/473.html</link>
    <description><![CDATA[0x01 Role概述
在 Prometheus 的 Kubernetes 自动发现（kubernetes_sd_configs）中，有许多常用的 角色（roles），可以用来发现不同类型的 Kubernetes 资源。
自动发现的主要优点
无需手动更新配置文件，减少运维压力。实时适应动态环境，监控目标自动更新。通过 relabeling 和过滤规则灵活管理目标。适用于大规模和快速变化的环境。如果环境是动态的（如 Kubernetes 集群），自动发现是非常有价值的工具，它让 Prometheus 能更高效、智能地工作，从而减少了监控管理的复杂性。
0x02 Role介绍
以下是常用的自动发现角色以及适用场景。
1. ingress
描述: 用于发现 ... <a href="https://itho.cn/k8s/473.html">阅读全文</a>]]></description>
    <pubDate>Thu, 21 Nov 2024 14:14:54 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/473.html</guid>
</item>
<item>
    <title>K8S 使用Local Path Storage（本地路径存储）</title>
    <link>https://itho.cn/k8s/469.html</link>
    <description><![CDATA[0x01 概述
Local Path Provisioner 是 Kubernetes 社区支持的解决方案，允许使用节点上的本地磁盘。使用 Local Path Storage（本地路径存储）通过将本地目录（如节点的磁盘目录）用作存储池，可以创建一个基础存储类。Local Path Storage（本地路径存储）是一种轻量级存储方案，通过将节点的本地磁盘目录（如 /mnt/data 等）作为存储池来实现持久化存储。这类存储通常被用作 Kubernetes 集群的基础存储类，特别适合测试环境或轻量级生产场景。它为 Pod 提供了一种简单的持久化存储方式，但由于数据存储在节点本地，并未实现分布式存储，因此不适合高可用或大规模生产环境。
0x02 安装 Lo... <a href="https://itho.cn/k8s/469.html">阅读全文</a>]]></description>
    <pubDate>Tue, 19 Nov 2024 16:11:42 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/469.html</guid>
</item>
<item>
    <title>Alertmanager 企业微信告警配置 自定义告警模板</title>
    <link>https://itho.cn/k8s/467.html</link>
    <description><![CDATA[0x01 alertmanager.yml配置
参数介绍：
wechat_api_url：api地址，默认就是https://qyapi.weixin.qq.com/cgi-bin/
wechat_api_secret：创建应用后，在应用管理里面，获取到的应用的Secret
wechat_api_corp_id：企业ID，在【我的企业】【企业信息】【企业ID】。
agent_id：创建应用后，在应用管理里面，获取到的应用的AgentId
to_party：用于定义要接收告警通知的部门 ID
global:  resolve_timeout: 5m # wechat wechat_api_url: 'https://qyapi.weixin.qq.com... <a href="https://itho.cn/k8s/467.html">阅读全文</a>]]></description>
    <pubDate>Tue, 19 Nov 2024 09:27:03 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/467.html</guid>
</item>
<item>
    <title>Alertmanager 邮件告警配置</title>
    <link>https://itho.cn/k8s/466.html</link>
    <description><![CDATA[0x01 修改alertmanager.yaml配置文件
我的alertmanager是kube-prometheus部署，alertmanager.yaml是通过secrets挂载到alertmanager的。
# 创建一个带有邮件告警信息的配置
root@iZbp1bddlmdujngbc11omnZ:~/prom# vi alertmanager.yaml
global: resolve_timeout: 5m smtp_smarthost: 'smtp.exmail.qq.com:465'   smtp_hello: 'itho.cn' smtp_from: 'support@itho.cn' smtp_auth_username: 'supp... <a href="https://itho.cn/k8s/466.html">阅读全文</a>]]></description>
    <pubDate>Mon, 18 Nov 2024 14:39:00 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/466.html</guid>
</item>
<item>
    <title>K8S部署Elasticsearch集群（Elasticsearch Operator）[ECK]</title>
    <link>https://itho.cn/k8s/464.html</link>
    <description><![CDATA[0x00 关于ECK
对于 Elasticsearch 应用，官方也推出了基于 Kubernetes Operator 的应用：Elastic Cloud on Kubernetes (ECK)，用户可使用该产品在 Kubernetes 上配置、管理和运行 Elasticsearch 集群。
0x01 在K8S中部署ECK
由于我这边k8s版本是1.20，所以兼容ECK的版本是2.4.0
root@k8s-master:~# kubectl create -f https://download.elastic.co/downloads/eck/2.4.0/crds.yaml
customresourcedefinition.apiextensions.... <a href="https://itho.cn/k8s/464.html">阅读全文</a>]]></description>
    <pubDate>Thu, 07 Nov 2024 11:13:15 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/464.html</guid>
</item>
<item>
    <title>Prometheus blackbox-exporter自定义User-Agent</title>
    <link>https://itho.cn/k8s/463.html</link>
    <description><![CDATA[0x01 前言
在使用blackbox-exporter进行黑盒监控地址的时候，请求的URL被WAF拦截下来了，原因是blackbox-exporter请求时候UA太像扫描器了，User-Agent: Go-http-client/1.1，导致被waf拦截了请直接返回403，实际状态码应该是200。
可以修改blackbox-exporter的请求UA，然后在waf上放行UA白名单。
0x02 修改blackbox-exporter请求的UA
1. 找到配置文件
blackbox-exporter 的配置文件通常名为 config.yml，可以在安装目录下找到。该文件定义了不同的探测模块及其相关参数。
2. 编辑配置文件
使用文本编辑器打开 confi... <a href="https://itho.cn/k8s/463.html">阅读全文</a>]]></description>
    <pubDate>Tue, 29 Oct 2024 15:15:22 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/463.html</guid>
</item>
<item>
    <title>Prometheus Blackbox（黑盒监控）</title>
    <link>https://itho.cn/k8s/461.html</link>
    <description><![CDATA[0x00 前言
白盒监控：主要通过应用程序内部的指标（如 Prometheus 的 /metrics 接口）监测系统性能，提供深入的技术洞察。
黑盒监控：主要通过 HTTP 请求、TCP 测试等外部监控手段获取数据，关注系统外部行为和功能，往往不需要访问应用程序的内部结构。   通过kube-prometheus方式部署，默认就有blackbox-exporter，如果没有的话手动部署下。
0x01 手动部署 blackbox_exporter
github地址：https://github.com/prometheus/blackbox_exporter
下面的 blackbox.yml 也可以直接下载下来导入  
# curl -o blackbo... <a href="https://itho.cn/k8s/461.html">阅读全文</a>]]></description>
    <pubDate>Mon, 28 Oct 2024 14:57:24 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/461.html</guid>
</item>
<item>
    <title>K8S kube-prometheus监控etcd</title>
    <link>https://itho.cn/k8s/460.html</link>
    <description><![CDATA[0x01 关于 etcd 双向认证及数据获取
etcd 通常通过 SSL 双向认证来确保通信的安全性。因此，使用 curl 请求 etcd 的 metrics 数据时，需要提供客户端证书和私钥，否则会出现认证错误。
直接通过 curl -k https://172.30.233.87:2379/metrics 来获取 etcd 的 metrics 数据时，可能会遇到以下错误：
curl: (35) error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate
这是因为 etcd 启用了 SSL 双向认证，服务端要求客户端提供有效的证书和私钥进行身份验证。
解决方案：
在 ... <a href="https://itho.cn/k8s/460.html">阅读全文</a>]]></description>
    <pubDate>Thu, 24 Oct 2024 17:34:58 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/460.html</guid>
</item>
<item>
    <title>关于Prometheus的ServiceMonitor监控服务的两种情况（有无metrics接口）</title>
    <link>https://itho.cn/k8s/462.html</link>
    <description><![CDATA[在云原生环境中，Prometheus 常用于监控应用状态。应用程序是否自带 /metrics 接口决定了监控方式的不同。 情况一：应用自带 /metrics 接口
对于一些云原生应用（如 Kubernetes、etcd 等），通常自带 /metrics 接口，可以直接暴露监控数据。Prometheus 通过配置 ServiceMonitor，直接调用应用的 /metrics 接口来收集监控数据，配置过程简单，直接与应用对接即可。
情况二：应用没有 /metrics 接口
对于传统应用或不支持 Prometheus 的应用，需要借助 Exporter。Exporter 作为中间层，从应用中收集监控数据，转换为 Prometheus 能识别的格式，并通过自... <a href="https://itho.cn/k8s/462.html">阅读全文</a>]]></description>
    <pubDate>Wed, 23 Oct 2024 19:02:23 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/462.html</guid>
</item>
<item>
    <title>K8S部署Nexus3 &amp; 重置Nexus3密码</title>
    <link>https://itho.cn/k8s/459.html</link>
    <description><![CDATA[0x01 部署yaml
apiVersion: apps/v1
kind: Deployment
metadata: name: nexus3 namespace: base-ops
spec: replicas: 1 selector: matchLabels: workload.user.cattle.io/workloadselector: deployment-base-ops-nexus3 strategy: type: Recreate template: metadata: labels: workload.user.cattle.io/workloadselector: deployment-base-ops... <a href="https://itho.cn/k8s/459.html">阅读全文</a>]]></description>
    <pubDate>Wed, 23 Oct 2024 10:01:17 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/459.html</guid>
</item>
<item>
    <title>PromQL基础语法与函数</title>
    <link>https://itho.cn/k8s/458.html</link>
    <description><![CDATA[0x01 瞬时向量与区间向量
瞬时向量
表示单一时间点的数据，例如当前的 HTTP 请求总数。
# 查询
http_request_total
# 结果
http_request_total{container=grafana, endpoint=http, handler=/, instance=10.42.0.170:3000, job=grafana, method=get, namespace=monitoring, pod=grafana-6bc86f4fc-m6n66, service=grafana, statuscode=200}
4
区间向量
表示在一段时间内的多个样本，例如过去 5 分钟的请求总数。
# 查询
http_reques... <a href="https://itho.cn/k8s/458.html">阅读全文</a>]]></description>
    <pubDate>Tue, 22 Oct 2024 17:00:28 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/458.html</guid>
</item>
<item>
    <title>K8S部署Prometheus、Grafana 和 Alertmanager（kube-prometheus方式部署）</title>
    <link>https://itho.cn/k8s/457.html</link>
    <description><![CDATA[0x01 关于 kube-prometheus
kube-prometheus 通过集成 Prometheus、Grafana 和 Alertmanager，提供开箱即用的 Kubernetes 原生监控解决方案，简化了部署和维护过程，同时具备良好的可扩展性和社区支持。
kube-prometheus 仓库地址 https://github.com/prometheus-operator/kube-prometheus/
0x02 下载 kube-prometheus
根据自己k8s集群版本兼容性，选择对应的kube-prometheus版本，我这边k8s集群版本是1.20，kube-prometheus支持的是release-0.8，关于k8s版本与... <a href="https://itho.cn/k8s/457.html">阅读全文</a>]]></description>
    <pubDate>Mon, 21 Oct 2024 09:46:48 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/457.html</guid>
</item>
<item>
    <title>Windows启用不安全的来宾登录，关于&quot;你不能访问此共享文件夹，因为你组织的安全策略阻止未经身份验证的来宾访问。&quot;</title>
    <link>https://itho.cn/win/456.html</link>
    <description><![CDATA[0x01 前言
windows挂载没有密码的smb，提示你不能访问此共享文件夹，因为你组织的安全策略阻止未经身份验证的来宾访问。
点击查看原图
0x02 解决方案
方法1：cmd改注册表
# 启用不安全的来宾登录
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\LanmanWorkstation /v AllowInsecureGuestAuth /t REG_DWORD /d 1 /f
# 重新服务使该设置生效
net stop workstation &amp;&amp; net start workstation
# 重新通过net use 挂载 
net use z: \\10.195.128.... <a href="https://itho.cn/win/456.html">阅读全文</a>]]></description>
    <pubDate>Tue, 15 Oct 2024 10:57:32 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/win/456.html</guid>
</item>
<item>
    <title>记录一次星际蜗牛黑群晖从6.2升级到7.2</title>
    <link>https://itho.cn/notes/455.html</link>
    <description><![CDATA[0x00 前言
好久没折腾家里的黑群晖了，黑群晖的配置是星际蜗牛B款、J1900、4G内存，原来装的是DS918+-6.2.3的引导，稳定的跑了快2年了，现在RR引导的7版本比较方便，所以看了几篇教程就开始折腾了。
arpl是GitHub上一位巴西作者，制作的黑群晖7的引导工具，安装十分的方便。在GitHub上有基于arpl做的中文项目（https://github.com/fbelavenuto/arpl），原版项目目前作者不更新了。国内由wjz304（https://github.com/wjz304/arpl-zh_CN）汉化，arpl-i18n改名Redpill Recovery 简称RR，RR镜像下载地址：https://github.com... <a href="https://itho.cn/notes/455.html">阅读全文</a>]]></description>
    <pubDate>Mon, 23 Sep 2024 14:57:37 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/455.html</guid>
</item>
<item>
    <title>K8S部署Kibana</title>
    <link>https://itho.cn/k8s/454.html</link>
    <description><![CDATA[0x01 部署Kibana
1、编写yaml文件
apiVersion: v1
kind: Service
metadata: name: kibana namespace: elastic-worker labels: k8s-app: kibana kubernetes.io/cluster-service: true addonmanager.kubernetes.io/mode: Reconcile kubernetes.io/name: Kibana srv: srv-kibana
spec: type: NodePort ports: - port: 5601 nodePort: 30000 prot... <a href="https://itho.cn/k8s/454.html">阅读全文</a>]]></description>
    <pubDate>Sat, 14 Sep 2024 10:47:35 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/454.html</guid>
</item>
<item>
    <title>K8S部署Elasticsearch 并开启X-Pack安全认证</title>
    <link>https://itho.cn/k8s/452.html</link>
    <description><![CDATA[0x00 制作带有证书的镜像
基于 Elasticsearch 的官方镜像创建一个新的自定义镜像，将证书文件包含在内。
1、生成证书
# 创建一个es-temp容器，生成elastic-certificates.p12
docker run -it --name es-temp elasticsearch:7.17.24 bash -c bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass '' && ls -l config/elastic-certificates.p12 # 把es-temp里面的elastic-certificates.p12复制到本... <a href="https://itho.cn/k8s/452.html">阅读全文</a>]]></description>
    <pubDate>Sat, 14 Sep 2024 09:39:11 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/452.html</guid>
</item>
<item>
    <title>K8S 命名空间资源配额 (ResourceQuota) 和资源限制 (LimitRange)</title>
    <link>https://itho.cn/k8s/451.html</link>
    <description><![CDATA[0x00 概述
在 Kubernetes 中，ResourceQuota 和 LimitRange 是两种用于管理命名空间资源使用的重要机制。它们帮助确保集群资源的有效分配，防止资源过度消耗。下面将介绍如何配置这两种机制，并解释它们的相互作用。
ResourceQuota:
适用于整个命名空间，限制命名空间中所有 Pod 的总资源使用量。
如果命名空间中的资源总使用量超出配额，则无法创建新的资源（例如，Pod、服务等）。
LimitRange:
适用于命名空间中的单个 Pod 和容器，确保它们的资源请求和限制在指定的范围内。
如果容器的资源请求或限制超出 LimitRange 定义的范围，Kubernetes 将拒绝 Pod 的创建。
0x01 使用 ... <a href="https://itho.cn/k8s/451.html">阅读全文</a>]]></description>
    <pubDate>Fri, 06 Sep 2024 16:32:34 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/451.html</guid>
</item>
<item>
    <title>K8S部署单节点Redis</title>
    <link>https://itho.cn/k8s/450.html</link>
    <description><![CDATA[0x01 部署单节点redis
注意：如果需要持久化就把容器的/data目录挂载出来。
apiVersion: v1
kind: ConfigMap
metadata: name: redis-config namespace: test  # 根据实际情况调整
data: redis.conf: | # 监听所有网络接口 bind 0.0.0.0 # 设置Redis密码 requirepass qwer1234 # 关闭保护模式，允许远程连接 protected-mode no # 配置内存使用最大量 maxmemory 2147483648 # 内存满时的淘汰策略为volatile-lru，即仅对设置了过期时间的键使用LRU... <a href="https://itho.cn/k8s/450.html">阅读全文</a>]]></description>
    <pubDate>Wed, 04 Sep 2024 10:11:53 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/450.html</guid>
</item>
<item>
    <title>Nginx性能优化笔记</title>
    <link>https://itho.cn/notes/449.html</link>
    <description><![CDATA[0x01 Nginx 工作进程数量
Nginx 的 worker_processes 参数设置了工作进程的数量。通常建议将其设置为 CPU 核心数的数量或核心数的两倍。可以使用以下命令查看 CPU 核心数：
grep ^processor /proc/cpuinfo | wc -l
配置示例：
worker_processes 4;
0x02 CPU 亲和力设置
worker_cpu_affinity 参数用于指定每个工作进程绑定的 CPU 核心。根据 CPU 核心数进行配置：
对于 4 核 CPU：
worker_cpu_affinity 0001 0010 0100 1000;
对于 8 核 CPU：
worker_cpu_affinity 000... <a href="https://itho.cn/notes/449.html">阅读全文</a>]]></description>
    <pubDate>Tue, 03 Sep 2024 14:32:05 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/449.html</guid>
</item>
<item>
    <title>K8S 关于Nacos应用 优雅下线 优雅停止</title>
    <link>https://itho.cn/k8s/447.html</link>
    <description><![CDATA[0x01 Nacos心跳时间
Nacos心跳检测时间 Nacos 目前支持临时实例使用心跳上报方式维持活性，发送心跳的周期默认是 5 秒，Nacos 服务端会在 15 秒没收到心跳后将实例设置为不健康，在 30 秒没收到心跳时将这个临时实例摘除（这里要注意30秒这个时间）。
0x02 Nacos下线应用接口
在Nacos OpenAPI：（https://nacos.io/zh-cn/docs/open-api.html）中有写明，可以通过/nacos/v1/ns/instance修改实例来完成应用下线，例如：
curl -X PUT http://172.30.233.87:8848/nacos/v1/ns/instance?serviceName=... <a href="https://itho.cn/k8s/447.html">阅读全文</a>]]></description>
    <pubDate>Fri, 09 Aug 2024 08:35:18 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/447.html</guid>
</item>
<item>
    <title>K8S 中的优雅终止：确保服务平稳关闭</title>
    <link>https://itho.cn/k8s/441.html</link>
    <description><![CDATA[0x01 什么是优雅停止？
优雅终止是 Kubernetes 中一个非常重要的概念，它关系到服务的稳定性和用户体验。通过合理配置和使用 Kubernetes 提供的工具，我们可以确保应用在终止时能够做到尽可能的平滑和优雅，这不仅提升了系统的可靠性，也增强了用户对服务的信任。
优雅终止指在终止应用或服务时，确保当前正在进行的操作能够正常完成，同时避免新请求的进入，使得服务能够平稳地关闭。在 Kubernetes 中，这通常涉及到 Pod 的终止流程。 0x02 Pod 终止流程
1、Pod 状态变为 Terminating
Pod 被删除，API 层面上 metadata.deletionTimestamp 字段会被标记上删除时间。
2、更新转发规则
k... <a href="https://itho.cn/k8s/441.html">阅读全文</a>]]></description>
    <pubDate>Fri, 02 Aug 2024 10:46:49 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/441.html</guid>
</item>
<item>
    <title>RouterOS v7 IPv6/IPv4双栈配置</title>
    <link>https://itho.cn/ros/437.html</link>
    <description><![CDATA[0x00 前置条件
光猫上配置IPv6/IPv4双栈设置，如果没有同样可以打电话让宽带运营商给远程修改光猫的IPv6\IPv4双栈桥接。目前很多运行商已经在光猫下发配置的之后已经默认开启了IPv6\IPv4双栈配置。
0x01 ROS开启IPv6
1、确认已经开启IPv6的Packages
ROS低版本默认IPv6默认是关闭的，需要手动开启。System-Packages找到ipv6点击Enable开启。开启后左侧菜单就可以看到IPv6选项了。
在ROS7版本中，IPv6功能已经被集成到单个RouterOS包中，因此不再需要单独启用IPv6包。这意味着IPv6功能默认是可用的。
2、开启ipv6转发
[admin@HomeROS]   /ipv6/se... <a href="https://itho.cn/ros/437.html">阅读全文</a>]]></description>
    <pubDate>Sat, 27 Jul 2024 23:22:21 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/ros/437.html</guid>
</item>
<item>
    <title>K8S ingress-nginx中集成雷池WAF最佳实践</title>
    <link>https://itho.cn/k8s/436.html</link>
    <description><![CDATA[0x00 概述
关于雷池WAF：雷池（SafeLine）是由长亭科技开发的一种专业的 Web 应用防火墙（WAF）。WAF是指Web Application Firewall，工作在应用层，专门用于保护基于HTTP/HTTPS协议的Web系统免受各种网络攻击。雷池WAF利用先进的智能语义分析算法作为其核心检测技术。这种算法不依赖于预先定义的规则集，能够精准地检测恶意攻击，同时减少误报，有效应对未知特征的0day攻击。
很荣幸雷池社区版-官方手册已引用了该文章 标题：《K8S ingress-nginx中集成雷池WAF最佳实践 - 来自 23 群的 myluzh》 地址：https://docs.waf-ce.chaitin.cn/更多技术文档/K8S-... <a href="https://itho.cn/k8s/436.html">阅读全文</a>]]></description>
    <pubDate>Wed, 24 Jul 2024 09:11:42 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/436.html</guid>
</item>
<item>
    <title>批量将Rancher镜像上传到私有仓库脚本</title>
    <link>https://itho.cn/k8s/435.html</link>
    <description><![CDATA[0x01 概述
国内拉镜像受限，公司集群是用rancher搭的，以防万一先把镜像都在私有仓存一下。
0x02 脚本
root@iZbp12bkuvg20e1j3y9gtxZ:~# vi upload_rancher_images.sh
#!/bin/bash # 获取前缀rancher开头的镜像
images_info=$(docker images | grep '^rancher' | awk '{print $1, $2, $3}')
registry='172.30.82.223:5443/'
# 登录harbor私有仓
docker login $registry
# 按行遍历镜像信息
echo $images_info | while re... <a href="https://itho.cn/k8s/435.html">阅读全文</a>]]></description>
    <pubDate>Mon, 22 Jul 2024 17:24:24 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/435.html</guid>
</item>
<item>
    <title>使用Ansible-Playbook批量扩容云主机系统盘</title>
    <link>https://itho.cn/linux/434.html</link>
    <description><![CDATA[0x00 前言
接到一个需求，有200台云主机系统盘扩容到了80g，/dev/sda已经变成了80g，需要对dev/sda1扩展分区大小。
0x01 编写主机清单
myluzh@myluzhMacBookPro % cat inventory 
[node]
36.134.92.10
36.212.225.133
36.212.225.129
36.212.225.222
.... # 给node这个组设置账号密码
[node:vars]
ansible_ssh_port=22
ansible_ssh_user=root
ansible_ssh_pass=k@s8#as0912e
# ansible_python_interpreter=/usr/bi... <a href="https://itho.cn/linux/434.html">阅读全文</a>]]></description>
    <pubDate>Thu, 18 Jul 2024 17:42:23 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/linux/434.html</guid>
</item>
<item>
    <title>安装HomeAssistant与HACS，实现把米家设备接入HomeKit</title>
    <link>https://itho.cn/notes/431.html</link>
    <description><![CDATA[0x01 安装HomeAssistant
1、docker运行homeassistant容器
network=host直接使用宿主机的网络栈，不需要-p映射端口。
# 创建homeassistant配置文件夹 用于挂载
mkdir -p /data/homeassistant/config
# 运行容器
docker run -d   \
--name homeassistant  \
--privileged   \
--restart=unless-stopped   \
-e TZ=Asia/Shanghai   \
-v /data/homeassistant/config:/config   \
--network=host \
homeas... <a href="https://itho.cn/notes/431.html">阅读全文</a>]]></description>
    <pubDate>Mon, 15 Jul 2024 08:36:42 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/431.html</guid>
</item>
<item>
    <title>通过Rclone实现阿里云OSS挂载和文件同步</title>
    <link>https://itho.cn/cloud/430.html</link>
    <description><![CDATA[0x01 安装rclone
# 安装rclone
yum install -y rclone
# rclone挂载FUSE文件系统所必需
yum install -y fuse
0x02 创建rclone配置文件
可以通过rclone config命令 交互式的配置一个
[root@iZbp151h65ix1x0tvaj1qxZ www]# rclone config
n) New remote
s) Set configuration password (optional)
q) Quit config
n/s/q  n
name  myoss (你可以给它起一个你喜欢的名字)
Storage  s3
provider  Alibaba
env_au... <a href="https://itho.cn/cloud/430.html">阅读全文</a>]]></description>
    <pubDate>Fri, 12 Jul 2024 09:02:51 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/cloud/430.html</guid>
</item>
<item>
    <title>K8S istio-ingressgateway 简单的路由实例演示</title>
    <link>https://itho.cn/k8s/429.html</link>
    <description><![CDATA[0x01 前置条件
默认已经安装好了istio，并且已经有了确保已经安装 Istio 并配置了 istio-ingressgateway。由于我已经之前安装了ingress-nginx 已占用 80 和 443 端口。所以我 istio-ingressgateway 从默认的 LoadBalancer 类型改为 NodePort 类型。istio-ingressgateway 使用端口 http 30058 和 https 30605
root@iZbp12bkuvg20e1j3y9gtxZ:~/# kubectl get svc -n istio-system | grep ingress
istio-ingressgateway   NodePor... <a href="https://itho.cn/k8s/429.html">阅读全文</a>]]></description>
    <pubDate>Mon, 08 Jul 2024 17:22:20 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/429.html</guid>
</item>
<item>
    <title>二进制方式安装Docker</title>
    <link>https://itho.cn/docker/528.html</link>
    <description><![CDATA[0x01 二进制安装 Docker
1、选择需要的版本 ARM 架构：https://mirrors.aliyun.com/docker-ce/linux/static/stable/aarch64/
x86 架构：https://mirrors.aliyun.com/docker-ce/linux/static/stable/x86_64/ 2、安装 Docker
wget https://mirrors.aliyun.com/docker-ce/linux/static/stable/aarch64/docker-25.0.5.tgz
tar xzvf docker-25.0.5.tgz
cp docker/* /usr/bin/
# nohup ... <a href="https://itho.cn/docker/528.html">阅读全文</a>]]></description>
    <pubDate>Wed, 19 Jun 2024 15:13:09 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/docker/528.html</guid>
</item>
<item>
    <title>使用 GlusterFS创建NFS集群</title>
    <link>https://itho.cn/notes/525.html</link>
    <description><![CDATA[0x01 安装 GlusterFS
1、在两台 Ubuntu 服务器上安装 GlusterFS：
sudo apt-get update
sudo apt-get install -y glusterfs-server
2、启动 GlusterFS 服务
sudo systemctl start glusterd
sudo systemctl enable glusterd
0x02 配置 GlusterFS
1、在第一台节点（node1）上将第二台节点（node2）添加到集群中：
sudo gluster peer probe  node2-ip 
2、检查集群状态
sudo gluster peer status
3、创建一个分布式或复制卷（假设存... <a href="https://itho.cn/notes/525.html">阅读全文</a>]]></description>
    <pubDate>Tue, 18 Jun 2024 10:12:25 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/525.html</guid>
</item>
<item>
    <title>Docker镜像管理：掌握save/load与export/import的精髓</title>
    <link>https://itho.cn/docker/427.html</link>
    <description><![CDATA[0x01 Docker Save & Load
docker save:
用于将Docker镜像保存为.tar文件。这个过程会保存镜像的所有层、元数据和历史记录，因此生成的文件较大。当你需要备份或者迁移某个镜像时非常有用，尤其是当你需要保留镜像的全部构建历史以便将来在其他地方恢复时。
docker save -o my_image.tar my_image:tag
docker load:
用来载入由docker save创建的镜像文件，将其恢复到本地镜像库中。这个过程不会允许你为导入的镜像指定新的名称，如果本地已有同名镜像，它会被覆盖。
docker load -i my_image.tar
0x02 Docker Export & Import
d... <a href="https://itho.cn/docker/427.html">阅读全文</a>]]></description>
    <pubDate>Fri, 07 Jun 2024 16:24:03 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/docker/427.html</guid>
</item>
<item>
    <title>CentOS7 部署本地YUM仓库</title>
    <link>https://itho.cn/linux/423.html</link>
    <description><![CDATA[0x01 概述
环境准备：
CentOS7_A：YUM-SERVER，用来部署本地yum仓库。
ip：172.16.10.78
CentOS7_A：用来测试搭建YUM仓库是否生效。
ip：172.16.10.79
0x02 YUM-SERVER部署web服务
在yum-server机子上搭建一个web服务，开启目录索引
# 写入nginx repo
cat   EOF   nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey... <a href="https://itho.cn/linux/423.html">阅读全文</a>]]></description>
    <pubDate>Fri, 31 May 2024 10:30:49 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/linux/423.html</guid>
</item>
<item>
    <title>OpenStack单节点All-In-One安装与入门</title>
    <link>https://itho.cn/openstack/422.html</link>
    <description><![CDATA[0x01 介绍
本次实验是在centos7虚拟机里面安装openstack_allinone。
注意1：centos7虚拟机是在vmware esxi上创建的，需要开启二层虚拟化。（虚拟机设置 CPU开启硬件虚拟化 向客户机操作系统公开硬件辅助的虚拟化）
注意2：vmware esxi的虚拟交换机需要开启（混杂模式 mac地址更改 伪传输）这三个功能，要不然openstack路由器到物理网络不通的。
注意3：centos7 虚拟机配置为 16c 32g 300g。如果太低可能跑不起来。
大概拓扑如下： 0x02 准备工作
# yum源加速
[root@openstack-allinone ~]# mv /etc/yum.repos.d/CentOS-B... <a href="https://itho.cn/openstack/422.html">阅读全文</a>]]></description>
    <pubDate>Wed, 29 May 2024 14:30:11 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/openstack/422.html</guid>
</item>
<item>
    <title>RouterOS v7 定时重拨PPPoE</title>
    <link>https://itho.cn/ros/421.html</link>
    <description><![CDATA[0x01 定时重拨PPPoE
ros设置定时任务，每天凌晨2点重拨pppoe
# 注意把接口名字改成自己的pppoe接口名字
/system scheduler add name=restart_pppoe interval=1d start-time=2:00:00 on-event=/interface disable pppoe-out-dx ; /interface enable pppoe-out-dx <a href="https://itho.cn/ros/421.html">阅读全文</a>]]></description>
    <pubDate>Sat, 25 May 2024 23:22:59 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/ros/421.html</guid>
</item>
<item>
    <title>关于物理网络跟docker默认网段172.17.0.0/16冲突问题</title>
    <link>https://itho.cn/docker/420.html</link>
    <description><![CDATA[0x01 描述
在使用 Docker 时发现其默认的网段与你的内网网段冲突，可以考虑修改 Docker 的默认网段以避免冲突。
0x02 解决
打开 daemon.json 文件，并添加或修改 bip（bridge IP）字段来设置 Docker 的网桥 IP 地址和子网掩码。你可以选择一个与你的内网网段不冲突的网段。例如：
# vim /etc/docker/daemon.json 
{ bip: 192.168.0.1/24
} # systemctl reload docker
# systemctl restart docker <a href="https://itho.cn/docker/420.html">阅读全文</a>]]></description>
    <pubDate>Fri, 24 May 2024 14:08:22 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/docker/420.html</guid>
</item>
<item>
    <title>RouterOS v7 IPsec内网互联配置</title>
    <link>https://itho.cn/ros/419.html</link>
    <description><![CDATA[0x01 概述
两台设备均为routeros v7.14.3，IPSEC互联需要两端都是公网IP。
在 RouterOS 中，IPsec VPN 的配置包括两个主要阶段：Phase 1 和 Phase 2。
可以把 Phase 1 理解为建立安全连接的第一阶段，而 Phase 2 则为数据传输的安全阶段。
Phase 1: 在 RouterOS 中，Phase 1 配置文件通常存储在 Profiles 下。
Phase 2: 在 RouterOS 中，Phase 2 配置文件通常存储在 Proposals 下。
也就是PHASE1的配置文件/ip/ipsec/profile是用在/ip/ipsec/peer里面，PHASE2的配置文件/ip/ipsec... <a href="https://itho.cn/ros/419.html">阅读全文</a>]]></description>
    <pubDate>Tue, 14 May 2024 11:19:00 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/ros/419.html</guid>
</item>
<item>
    <title>Linux云主机安装GPU驱动（NVIDIA）</title>
    <link>https://itho.cn/linux/418.html</link>
    <description><![CDATA[一、centos系统
0x01 查看显卡
[root@ecs-50372952-3-1 ~]#  lspci | grep -i nvidia
00:06.0 3D controller: NVIDIA Corporation Device 20f1 (rev a1)
00:07.0 3D controller: NVIDIA Corporation Device 20f1 (rev a1)
00:08.0 3D controller: NVIDIA Corporation Device 20f1 (rev a1)
00:09.0 3D controller: NVIDIA Corporation Device 20f1 (rev a1)
00:0a.... <a href="https://itho.cn/linux/418.html">阅读全文</a>]]></description>
    <pubDate>Wed, 08 May 2024 09:20:22 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/linux/418.html</guid>
</item>
<item>
    <title>K8S 批量删除被驱逐的Pod（Evicted Pods）</title>
    <link>https://itho.cn/k8s/416.html</link>
    <description><![CDATA[0x01 故障
集群中一个deployment中有很多Evicted的pod
root@iZbp12bkuvg20e1j3y9gtxZ:~# kubectl get pod -n base-ops
NAME                        READY   STATUS    RESTARTS   AGE
registry-6d7b7c9fb4-22f2x   0/1     Evicted   0          10d
registry-6d7b7c9fb4-24r7j   0/1     Evicted   0          10d
registry-6d7b7c9fb4-25clg   0/1     Evicted   0 ... <a href="https://itho.cn/k8s/416.html">阅读全文</a>]]></description>
    <pubDate>Sun, 07 Apr 2024 15:31:02 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/416.html</guid>
</item>
<item>
    <title>RouterOS v7 OVPN Client配置 &amp; 国内外地址分流（Mangle表标记路由）</title>
    <link>https://itho.cn/ros/415.html</link>
    <description><![CDATA[0x01 前言
使用的设备是 Mikrotik RB750gr3 + RouterOS Version 7.14.1 (stable)。
v7版本网上教程比较少，踩过很多坑有很多细节需要注意，所以打算记录下。
v7对于v6版本而言，OVPN Client新增了 Auth：sha256/sha512，Cipher：ase 256 gcm，并且可以支持UDP。
大概实现逻辑拓扑如下：
点击查看原图
0x02 ROS配置OVPN Client
1、首先展示下对端OVPN Server配置
[root@hk_server ~]# cat /etc/openvpn/server.conf
# 指定监听的地址和端口
local 0.0.0.0
port 1195 ... <a href="https://itho.cn/ros/415.html">阅读全文</a>]]></description>
    <pubDate>Sun, 17 Mar 2024 18:02:35 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/ros/415.html</guid>
</item>
<item>
    <title>RouterOS v6 获取CN地址列表 &amp; 国内外地址分流</title>
    <link>https://itho.cn/ros/414.html</link>
    <description><![CDATA[0x01 前言
使用的设备是Mikrotik RB750gr3 RouterOSv6.49.8
文章内容只对v6版本有效，v7有些地方有些不同，有空再写一篇v7的。
0x02 ROS获取CN地址列表
1、打开ros终端，获取CN地址列表
直接下载CN文件拖拽进去也可以。
/tool fetch url=http://www.iwik.org/ipcountry/mikrotik/CN
2、导入地址到firewall的address lists
/import file-name=CN
3、查看一下Fiewwall address lists
确认都导入成功。
注意还需要手动把私有地址段也加入到CN地址列表 10.0.0.0/8 172.16.0.0/1... <a href="https://itho.cn/ros/414.html">阅读全文</a>]]></description>
    <pubDate>Fri, 15 Mar 2024 16:42:00 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/ros/414.html</guid>
</item>
<item>
    <title>解决 Linux 空间未释放问题：处理被删除文件的占用</title>
    <link>https://itho.cn/linux/413.html</link>
    <description><![CDATA[使用lsof +L1命令可以显示被删除但仍然被进程使用的文件列表
lsof输出中，'deleted'表示文件已被删除但仍被打开；fd表示文件描述符；u、w、r代表文件状态：已删除、可写、可读。
root@iZbp12bkuvg20e1j3y9gtvZ:/# lsof +L1
COMMAND       PID       USER   FD   TYPE DEVICE SIZE/OFF NLINK      NODE NAME
systemd-j     259       root   40u   REG  252,1 33554432     0   1050630 /var/log/journal/202112271016089009227328... <a href="https://itho.cn/linux/413.html">阅读全文</a>]]></description>
    <pubDate>Fri, 08 Mar 2024 15:09:22 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/linux/413.html</guid>
</item>
<item>
    <title>Nginx日志格式化输出，日志切割</title>
    <link>https://itho.cn/nginx/412.html</link>
    <description><![CDATA[0x01 日志格式化输出
root@iZbp12bkuvg20e1j3y9gtvZ:/etc/logrotate.d# cat /etc/nginx/nginx.conf  http { # ... log_format main escape=none '$remote_addr - $remote_user [$time_iso8601] $request_method $scheme://$host$request_uri ' '$status $body_bytes_sent $http_referer ' '$http_user_agent $http_x_forwarded_for time... <a href="https://itho.cn/nginx/412.html">阅读全文</a>]]></description>
    <pubDate>Wed, 28 Feb 2024 16:03:57 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/nginx/412.html</guid>
</item>
<item>
    <title>关于GlobalSign GCC R6 AlphaSSL CA 2023不受信，证书链修复教程</title>
    <link>https://itho.cn/notes/411.html</link>
    <description><![CDATA[0x01 解决方案
将以下代码块附加在叶子证书（第一个 BEGIN CERTIFICATE 起到第一个 END CERTIFICATE 止）后作为证书链：
-----BEGIN CERTIFICATE-----
MIIFjDCCA3SgAwIBAgIQfx8skC6D0OO2+zvuR4tegDANBgkqhkiG9w0BAQsFADBM
MSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSNjETMBEGA1UEChMKR2xv
YmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjAeFw0yMzA3MTkwMzQzMjVaFw0y
NjA3MTkwMDAwMDBaMFUxCzAJBgNVB... <a href="https://itho.cn/notes/411.html">阅读全文</a>]]></description>
    <pubDate>Wed, 28 Feb 2024 15:20:46 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/411.html</guid>
</item>
<item>
    <title>阿里云负载均衡ALB获取客户端真实IP</title>
    <link>https://itho.cn/cloud/409.html</link>
    <description><![CDATA[0x01 获取方法介绍
当使用ALB监听转发流量时，您可通过HTTP头部的X-Forwarded-For字段获取客户端真实IP地址。
七层负载均衡（HTTP或HTTPS协议）支持在HTTP头部的X-Forwarded-For字段保留客户端真实IP信息，服务器进行相应配置后即可获取到客户端真实IP地址。
X-Forwarded-For字段格式如下：
X-Forwarded-For:  客户端真实IP, 代理服务器1-IP， 代理服务器2-IP，... 
当使用此方式获取客户端真实IP时，获取的第一个地址就是客户端真实IP。
0x02 操作步骤
步骤一：检查监听已开启通过X-Forwarded-For获取功能
1、登录应用型负载均衡ALB控制台。
2、在顶... <a href="https://itho.cn/cloud/409.html">阅读全文</a>]]></description>
    <pubDate>Wed, 28 Feb 2024 14:47:23 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/cloud/409.html</guid>
</item>
<item>
    <title>K8S Ingress-nginx修改上传大小限制</title>
    <link>https://itho.cn/k8s/410.html</link>
    <description><![CDATA[0x00 前言
最近遇到一个问题：客户端上传大一点的文件，http就直接响应Status Code: 413 Request Entity Too Large
由于k8s ingress的上游还有一个nginx，所以先判断是不是nginx限制了上传大小，
nginx配置文件client_max_body_size没有问题，那就是ingress-nginx限制了大小，所以就有了下面这篇文章...
root@iZbp12bkuvg20e1j3y9gtvZ:/etc/nginx/conf.d# grep client_max_body_size *.conf
prd-all.conf:      client_max_body_size 100m;
test... <a href="https://itho.cn/k8s/410.html">阅读全文</a>]]></description>
    <pubDate>Fri, 23 Feb 2024 15:00:34 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/410.html</guid>
</item>
<item>
    <title>Docker多阶段构建</title>
    <link>https://itho.cn/docker/408.html</link>
    <description><![CDATA[0x01 概述
Docker 分阶段构建是指在 Dockerfile 中使用多个 FROM 指令来分割构建过程，将整个构建过程分为多个阶段。每个阶段可以有自己的基础镜像，执行特定的构建步骤，并且可以从前一个阶段复制构建结果。最终只有最后一个阶段的构建结果会被保留在最终的镜像中，其它阶段的中间产物不会被包含在最终的镜像中。
分阶段构建的优点包括： 减小镜像大小：通过将构建过程分解为多个阶段，可以避免将构建工具和中间产物包含在最终的镜像中，从而减小镜像的大小。
加快构建速度：每个阶段可以并行执行，节省构建时间。
更好的可维护性：分阶段构建可以更清晰地组织构建过程，使得 Dockerfile 更易于阅读和维护。 0x02 示例
下面是一个使用 Docker ... <a href="https://itho.cn/docker/408.html">阅读全文</a>]]></description>
    <pubDate>Thu, 22 Feb 2024 14:34:22 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/docker/408.html</guid>
</item>
<item>
    <title>Rancher 2.5.x证书过期问题  [X509 certificate has expired or is not yet valid]</title>
    <link>https://itho.cn/k8s/407.html</link>
    <description><![CDATA[0x01 故障描述
ranhcer UI 无法进入，查看logs提示X509 certificate has expired or is not yet valid
# 查看 rancher agent 日志
root@iZbp1bddlmdujngbc11omnZ:~# docker logs -f --tail 10 b109
time=2024-02-17T03:26:04Z level=fatal msg=Server certificate is not valid, please check if the host has the correct time configured and if the server certificate h... <a href="https://itho.cn/k8s/407.html">阅读全文</a>]]></description>
    <pubDate>Sat, 17 Feb 2024 11:47:35 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/407.html</guid>
</item>
<item>
    <title>K8S 使用Istioctl安装Istio，配置Kiali Token登录</title>
    <link>https://itho.cn/k8s/406.html</link>
    <description><![CDATA[0x01 安装istio
[root@k8s-master01 istio]# wget https://github.com/istio/istio/releases/download/1.20.2/istio-1.20.2-linux-amd64.tar.gz
[root@k8s-master01 istio]# tar -zxvf istio-1.20.2-linux-amd64.tar.gz 
[root@k8s-master01 istio]# cd istio-1.20.2/bin/
# 对于本次安装，我们采用 demo 配置组合。https://istio.io/latest/zh/docs/setup/additional-setup/... <a href="https://itho.cn/k8s/406.html">阅读全文</a>]]></description>
    <pubDate>Wed, 31 Jan 2024 14:06:39 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/406.html</guid>
</item>
<item>
    <title>全面理解Sentinel（隔离、系统保护、熔断降级、服务授权）</title>
    <link>https://itho.cn/notes/405.html</link>
    <description><![CDATA[0x01 关于微服务血崩问题
什么是微服务血崩：
微服务调用链路中的某个服务器故障，引起整个链路中所有微服务不可用，这就是血崩。
解决微服务血崩问题常见方式有四种：
1、超时处理：设定超时时间，请求超过一定时间没有响应就返回错误信息，不会无休止等待。
2、舱壁模式：限定每个业务能使用的线程数，避免耗尽整个tomcat的资源，因此也线程隔离。
3、熔断降级：由断路器统计业务执行的异常比例，如果超出阈值则会熔断该业务，拦截该业务的一切请求。
4、流量控制：限制业务访问的QPS，避免服务因流量的突增而故障。 0x02 安装Sentinel
# web端口8090 账号 sentinel 密码xMbiP1d5e5R4R52C
java -Dserver.por... <a href="https://itho.cn/notes/405.html">阅读全文</a>]]></description>
    <pubDate>Tue, 30 Jan 2024 14:17:53 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/405.html</guid>
</item>
<item>
    <title>ESXi 精简置备磁盘空间回收</title>
    <link>https://itho.cn/vmware/403.html</link>
    <description><![CDATA[0x01 注意事项
回收磁盘磁盘类型必须为精简置备（thin）
回收前最好先备份
0x02 空间回收
1、打开ESXi，服务里面开启SSH
2、连接SSH，进入虚拟机所在磁盘
# 进去虚拟机所在磁盘，切换到需要回收的虚拟机目录
[root@ESXi:~] cd /vmfs/volumes/NAS-iSCSI/
[root@ESXi:/vmfs/volumes/65b3d3e4-bbc82bfd-c13e-e86a64d30a91/]cd CentOS # 查看当前占用大小
[root@ESXi:/vmfs/volumes/65b3d3e4-bbc82bfd-c13e-e86a64d30a91/CentOS] du -sh *.vmdk
4.0M Cen... <a href="https://itho.cn/vmware/403.html">阅读全文</a>]]></description>
    <pubDate>Sun, 28 Jan 2024 20:10:03 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/vmware/403.html</guid>
</item>
<item>
    <title>K8S 基于Rook搭建Ceph集群 云原生存储最佳实践</title>
    <link>https://itho.cn/k8s/401.html</link>
    <description><![CDATA[0x00 关于Rook
Rook 是一款云原生存储编排服务工具，Ceph 是一种广泛使用的开源分布式存储方案，通过 Rook 可以大大简化 Ceph 在 Kubernetes 集群中的部署和维护工作。
Rook 由云原生计算基金会（ CNCF ）孵化，且于2020 年 10 月正式进入毕业阶段。Rook 并不直接提供数据存储方案，而是集成了各种存储解决方案，并提供一种自管理、自扩容、自修复的云原生存储服务。社区官方资料显示， Rook 目前最新的稳定版本中，只有 Rook +Ceph 存储集成方案处于 stable 状态，版本升级较平滑。
Ceph 是一种广泛使用的开源分布式存储方案，通过 Rook 则可以大大简化 Ceph 在 Kubernetes ... <a href="https://itho.cn/k8s/401.html">阅读全文</a>]]></description>
    <pubDate>Tue, 23 Jan 2024 13:33:33 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/401.html</guid>
</item>
<item>
    <title>一张图了解 RAID2.0+ 块虚拟化技术</title>
    <link>https://itho.cn/notes/400.html</link>
    <description><![CDATA[0x01 RAID 2.0简介
RAID 2.0的基本概念是将磁盘空间分成小块，称为Chunk（CK），然后将不同的Chunk组成Chunk Group（CKG）。Chunk Group可以进一步分割成更小的容量单位，称为Extend。这些Extend可以根据需求组成存储池。RAID 2.0的设计旨在提供更高的数据冗余和更好的性能。
0x02 RAID 2.0原理图
下面画的一个raid2.0的总结，如有错误请指正。raid2.0.eddx <a href="https://itho.cn/notes/400.html">阅读全文</a>]]></description>
    <pubDate>Thu, 18 Jan 2024 16:10:59 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/400.html</guid>
</item>
<item>
    <title>K8S ingress 传递用户真实IP</title>
    <link>https://itho.cn/k8s/398.html</link>
    <description><![CDATA[0x01 前言
今天发现后端获取到的用户客户端ip都是内网地址 172.29.241.163。
访问逻辑为：用户访问- nginx- k8s-ingress- 后端pod。
但是后端pod获取客户端的ip一直是172.29.241.163，原来这个ip的ingress的上游nginx的ip。
# nginx节点
root@iZbp12bkuvg20e1j3y9gtvZ:/etc/nginx/conf.d# ifconfig | grep 172 inet 172.29.241.163  netmask 255.255.240.0  broadcast 172.29.255.255 # nginx反向代理到k8s-ingress的配置文件
root@iZ... <a href="https://itho.cn/k8s/398.html">阅读全文</a>]]></description>
    <pubDate>Tue, 16 Jan 2024 15:54:53 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/398.html</guid>
</item>
<item>
    <title>子网掩码 反掩码 备忘表</title>
    <link>https://itho.cn/network/397.html</link>
    <description><![CDATA[/30 255.255.255.252 0.0.0.3
/29 255.255.255.248 0.0.0.7
/28 255.255.255.240 0.0.0.15
/27 255.255.255.224 0.0.0.31
/26 255.255.255.192 0.0.0.63
/25 255.255.255.128 0.0.0.127
/24 255.255.255.0 0.0.0.255
/23 255.255.254.0 0.0.1.255
/22 255.255.252.0 0.0.3.255
/21 255.255.248.0 0.0.7.255
/20 255.255.240.0 0.0.15.255
/19 255.255.224.... <a href="https://itho.cn/network/397.html">阅读全文</a>]]></description>
    <pubDate>Mon, 15 Jan 2024 00:05:44 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/network/397.html</guid>
</item>
<item>
    <title>Linux路由配置</title>
    <link>https://itho.cn/linux/402.html</link>
    <description><![CDATA[0x01 Linux下路由配置命令
1.添加主机路由
route add -host 192.168.1.11 dev eth0
route add -host 192.168.1.12 gw 192.168.1.1
2.添加网络路由
route add -net 192.168.1.11 netmask 255.255.255.0 eth0
route add -net 192.168.1.11 netmask 255.255.255.0 gw 192.168.1.1
route add -net 192.168.1.0/24 eth0
route add -net 192.168.1.0/24 gw 192.168.1.1
3.添加默认网关
rou... <a href="https://itho.cn/linux/402.html">阅读全文</a>]]></description>
    <pubDate>Sun, 14 Jan 2024 09:15:17 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/linux/402.html</guid>
</item>
<item>
    <title>AD域控-ntds.dit备份与恢复、重置DSRM密码</title>
    <link>https://itho.cn/win/394.html</link>
    <description><![CDATA[0x01 导出ntds.dit
要导出ntds.dit文件，你可以按照以下步骤进行操作：
首先，确保你具有适当的管理员权限，并且已经登录到域控制器上。
打开命令提示符或PowerShell窗口，以管理员身份运行。
导航到ntdsutil工具所在的目录。默认情况下，ntdsutil位于C:\Windows\System32目录中，所以你可以直接输入 cd C:\Windows\System32。
运行ntdsutil命令，然后输入 activate instance ntds。
输入 files，然后按回车。
输入 ifm，然后按回车。
输入 create full  导出路径 ，其... <a href="https://itho.cn/win/394.html">阅读全文</a>]]></description>
    <pubDate>Wed, 10 Jan 2024 08:34:43 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/win/394.html</guid>
</item>
<item>
    <title>Linux关于磁盘io排障的一些命令（iotop，iostat，blktrace）</title>
    <link>https://itho.cn/linux/393.html</link>
    <description><![CDATA[0x01 iotop
iotop还支持一些其他参数，如-b表示批处理模式，-n NUM表示迭代次数，-d SEC表示刷新间隔等。这些参数可以根据需要进行设置，以满足不同的监视需求。
# -d 1 每秒刷新一次
iotop -d 1
0x02 iostat
# -x：显示扩展的统计信息 -z：仅显示活动的设备 -k：以KB/s为单位显示I/O统计信息 1：这是刷新间隔，表示 iostat 将每秒更新一次显示的信息。
iostat -xzk 1
0x03 blktrace
# 安装
sudo yum install -y blktrace
# 跟踪指定块设备（/dev/vda）的I/O操作，并将跟踪数据保存到文件中。
blktrace -d /dev/vd... <a href="https://itho.cn/linux/393.html">阅读全文</a>]]></description>
    <pubDate>Tue, 09 Jan 2024 15:40:19 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/linux/393.html</guid>
</item>
<item>
    <title>Nginx开启目录访问（autoindex）</title>
    <link>https://itho.cn/nginx/395.html</link>
    <description><![CDATA[参数的解释：
autoindex_exact_size off;: 不显示文件的确切大小，而是显示一个大概的大小（例如 49k 而不是 49152 字节）。
autoindex on;: 开启目录列表功能。
autoindex_localtime on;: 显示文件的本地时间，而不是 GMT 时间。
charset utf-8;: 设置目录列表的字符集为 UTF-8。
location /some/directory/ {   autoindex on;   autoindex_exact_size off;   autoindex_localtime on;   charset utf-8;  
} <a href="https://itho.cn/nginx/395.html">阅读全文</a>]]></description>
    <pubDate>Sat, 06 Jan 2024 16:04:03 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/nginx/395.html</guid>
</item>
<item>
    <title>一些关于macOS使用小技巧&amp;macOS软件推荐</title>
    <link>https://itho.cn/mac/392.html</link>
    <description><![CDATA[系统优化类
关闭系统完整性保护(SIP)
开机按住command+R键，进入恢复模式。点击实用工具 点击终端。
# 终端内输入命令：
csrutil disable
# 然后回车执行后
reboot
允许任何来源
运行命令后还需要进入设置 隐私与安全性 允许以下来源的应用程序 任何来源
sudo spctl --master-disable
关闭开盖自动开机
# 取消翻盖自动开机
sudo nvram AutoBoot=%0
# 恢复翻盖自动开机
sudo nvram AutoBoot=%03
显示访达路径
mac下让Finder的标题栏显示全路径，而非当前文件夹名，终端运行：
defaults write com.apple.finder _FXSh... <a href="https://itho.cn/mac/392.html">阅读全文</a>]]></description>
    <pubDate>Sat, 30 Dec 2023 21:40:17 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/mac/392.html</guid>
</item>
<item>
    <title>Linux磁盘扩容教程（growpart）</title>
    <link>https://itho.cn/linux/567.html</link>
    <description><![CDATA[0x00 操作前必读 数据安全：虽然是无损扩容，生产环境操作前务必建议建立快照。
中文环境修正：本教程中 growpart 命令已强制指定英文环境，防止因系统中文语言导致无法解析 sfdisk 版本而报错。 0x01 扩容
确认扩容目标
先查看磁盘物理空间是否已变大，并确认文件系统类型。
# 1、查看磁盘与分区，确保 sda(DISK) 的总大小已经大于 sda1(PART) 的当前大小。
[root@app-jump-server ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk 
└─sda1   8:1    0   40G ... <a href="https://itho.cn/linux/567.html">阅读全文</a>]]></description>
    <pubDate>Sat, 30 Dec 2023 10:08:51 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/linux/567.html</guid>
</item>
<item>
    <title>mysql通过log_bin恢复数据</title>
    <link>https://itho.cn/mysql/391.html</link>
    <description><![CDATA[0x01 使用binlog恢复数据
1、登录mysql
[root@blog ~]# mysql -u root -p
Enter password:
2、查看bin_log是否开启
log_bin=ON，那么恭喜你，还有恢复的可能。
mysql  show variables like 'log_%';
+----------------------------------------+----------------------------------+
| Variable_name                          | Value                            |
+-------------------... <a href="https://itho.cn/mysql/391.html">阅读全文</a>]]></description>
    <pubDate>Wed, 27 Dec 2023 20:00:50 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/mysql/391.html</guid>
</item>
<item>
    <title>Docker部署minio</title>
    <link>https://itho.cn/k8s/390.html</link>
    <description><![CDATA[1、docker minio 单机挂载单盘
run起来后直接访问http9001就是面板
docker run -it -d --name minio \
--restart=always \
-p 9000:9000 \
-p 9001:9001 \
-v /data/minio/data:/data \
-e MINIO_ROOT_USER=admin \
-e MINIO_ROOT_PASSWORD=admin123 \
minio/minio server /data --console-address :9001
2、docker minio 单机挂载多盘
4块盘分别为 data1、data2、data3、data4。
docker run ... <a href="https://itho.cn/k8s/390.html">阅读全文</a>]]></description>
    <pubDate>Wed, 27 Dec 2023 19:53:44 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/390.html</guid>
</item>
<item>
    <title>使用fdisk和parted硬盘分区笔记</title>
    <link>https://itho.cn/linux/388.html</link>
    <description><![CDATA[0x01 使用fdisk分区
# sdX是需要分区的磁盘设备名
sudo fdisk /dev/sdX - 进入fdisk交互模式后，按下以下命令进行分区： - `n`: 创建新分区 - `p`: 选择主分区 - `1`: 选择分区号（可以根据需要选择不同的分区号） - 输入起始扇区和结束扇区（可以直接按Enter使用默认值，或者输入具体的扇区数，比如+100MB表示增加100MB的空间） - `w`: 保存并退出 # 查看新分区：
sudo fdisk -l /dev/sdX
0x02 使用parted分区
# sdX是需要分区的磁盘设备名
sudo parted /dev/sdX - 进入parted交互模式后，按照以下命令进行分区： ... <a href="https://itho.cn/linux/388.html">阅读全文</a>]]></description>
    <pubDate>Wed, 20 Dec 2023 16:39:05 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/linux/388.html</guid>
</item>
<item>
    <title>K8S部署Fluentd日志采集并推送到Elastic</title>
    <link>https://itho.cn/k8s/387.html</link>
    <description><![CDATA[0x01 前言
使用 fluentd 可以从每个容器收集 stdout/stderr 日志，以及在每个主机上 /var/log/containers/ 路径下的日志文件，日志将被发送到被选择的目标服务。
这里主要记录下Fluentd的部署过程，如何通过Fluentd把K8S集群Pod日志推送到Elastic上，Elastic和Kibana的部署不在这里赘述。
0x02 部署 Fluentd
1、fluentd-config-map.yaml
配置Fluentd日志收集器的配置文件。
apiVersion: v1
data: fluent.conf: |-  source  @type tail #path /var/log/containe... <a href="https://itho.cn/k8s/387.html">阅读全文</a>]]></description>
    <pubDate>Tue, 19 Dec 2023 21:31:58 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/387.html</guid>
</item>
<item>
    <title>清理Docker容器日志bash</title>
    <link>https://itho.cn/docker/386.html</link>
    <description><![CDATA[#!/bin/sh # 清理Docker容器日志文件的脚本
logs=$(find /var/lib/docker/containers/ -name *-json.log) 
for log in $logs do echo -n clean logs :; du -sh $log cat /dev/null   $log done # 清理不再使用的Docker镜像
docker image prune -a -f
# 清理不再运行的Docker容器
docker container prune -f
# 清理所有未被使用的Docker卷
docker volume rm $(docker volume ls -qf dangling=true) <a href="https://itho.cn/docker/386.html">阅读全文</a>]]></description>
    <pubDate>Tue, 19 Dec 2023 21:18:44 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/docker/386.html</guid>
</item>
<item>
    <title>Zabbix通过&quot;Nginx by Zabbix agent&quot;模板，监控Nginx状态</title>
    <link>https://itho.cn/zabbix/385.html</link>
    <description><![CDATA[0x01 Zabbix启用模板
1、Zabbix面板- “配置”- “主机”- 创建/编辑主机- 添加模板 “Nginx by Zabbix agent”
2、并且修改主机宏 宏
值
描述 {$NGINX.PROCESS_NAME}
nginx {$NGINX.STUB_STATUS.HOST}
127.0.0.1 {$NGINX.STUB_STATUS.PATH}
basic_status {$NGINX.STUB_STATUS.PORT}
80 关于“Nginx by Zabbix agent”模板参数详细链接：https://git.zabbix.com/projects/ZBX/repos/zabbix/browse... <a href="https://itho.cn/zabbix/385.html">阅读全文</a>]]></description>
    <pubDate>Mon, 18 Dec 2023 10:44:21 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/zabbix/385.html</guid>
</item>
<item>
    <title>Nginx健康检查（被动检查、主动检查）</title>
    <link>https://itho.cn/nginx/384.html</link>
    <description><![CDATA[0x01 被动检查
通过自带健康检查模块ngx_http_upstream_module实现，当收到访问时才对后端发起探测，请求根据转发规则首次可能落到不可用节点，如多个节点故障则可能出现转发多台后才将请求转到正常的服务，在高并发的时候影响转发效率。
被动健康检查关键参数max_fails与fail_timeout，描述如下：
max_fails：在配置的fail_timeout期间，最大的连接错误数，默认配置为1，如配置为0则表示不启用探测，不管后端服务是否异常仍然会转发，单位次数
fail_timeout：服务被认为不可用的的时间，单位为s
如下配置：在120s内中如果有15次连接失败，则表示该节点不可用，将该节点下线120s后才会再次探测
roo... <a href="https://itho.cn/nginx/384.html">阅读全文</a>]]></description>
    <pubDate>Fri, 15 Dec 2023 10:55:44 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/nginx/384.html</guid>
</item>
<item>
    <title>在使用Rancher2.5管理的K8S集群中，解决Rancher不可用时通过kubectl进行集群管理的问题</title>
    <link>https://itho.cn/k8s/383.html</link>
    <description><![CDATA[0x00 前言
最近在管理Rancher2.5部署的K8S集群发现一个问题，一旦Rancher Server不可用，直接在K8S master通过kubectl管理集群也会提示连接不到api提示不可用。
分析Rancher UI生成的kubeconfig文件可以发现，当kubectl访问K8S API SERVER的时候，请求是先发送到Rancher，然后再通过cluster agent转发给 K8S API SERVER。
所以需要开启授权集群访问地址，这样就算Rancher不可用，也可以通过kubectl --context切换上下文，直接对集群直接进行管理。
0x01 启用Rancher授权集群访问地址
在rancher web面板中，找到集群，... <a href="https://itho.cn/k8s/383.html">阅读全文</a>]]></description>
    <pubDate>Fri, 15 Dec 2023 10:14:24 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/383.html</guid>
</item>
<item>
    <title>K8S使用NodePort时，无法在主机上看到监听的端口 - 探究原因</title>
    <link>https://itho.cn/k8s/382.html</link>
    <description><![CDATA[0x00 前言
在新版K8S中，即便 Service 使用 nodeport 暴露，在 node 中使用netstat -anp 或者ss -nlt命令上也看不到 kube-proxy 监听的端口了，但是 nodeport 访问是正常的。
Kubernetes服务不是作为侦听特定端口的进程来实现的。取而代之的是使用iptables (或IPVS)，服务基本上是iptables规则。这就是为什么它们不会出现在你的netstat中。
详细查看：https://kubernetes.io/docs/concepts/services-networking/service/#proxy-mode-iptables
0x01 你需要先了解kube-proxy的三... <a href="https://itho.cn/k8s/382.html">阅读全文</a>]]></description>
    <pubDate>Thu, 07 Dec 2023 09:45:04 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/382.html</guid>
</item>
<item>
    <title>Zabbix6配置邮件告警</title>
    <link>https://itho.cn/zabbix/381.html</link>
    <description><![CDATA[0x01 配置发送邮件服务器
面板路径：管理- 媒介- Email。点击Email后配置smtp服务器、端口、发信邮箱跟密码。完成后点击右侧测试测试下发信是否正常
0x02 配置用户来接受告警信息
面板路径：管理- 用户。选择默认admin用户，在报警媒介中点击添加，类型选择Email，添加收件人邮箱，勾选已启用。
0x03设置触发器报警后的动作
面板路径：配置- 动作- 触发器工作。
1、创建动作，名称为邮件告警，添加触发条件为触发器示警度- 大于等... <a href="https://itho.cn/zabbix/381.html">阅读全文</a>]]></description>
    <pubDate>Wed, 06 Dec 2023 16:08:05 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/zabbix/381.html</guid>
</item>
<item>
    <title>Docker部署Zabbix6 Server/Agent</title>
    <link>https://itho.cn/zabbix/380.html</link>
    <description><![CDATA[1、 部署mysql
# mysql
docker pull mysql:8.0
docker volume create -d local  mysql_data # 存放mysql数据
docker volume create -d local  mysql_logs # 存放mysql日志
docker volume create -d local  mysql_conf # 存放mysql配置文件 
docker run --name mysql-server \
-v mysql_data:/var/lib/mysql \
-v mysql_logs:/var/log/mysql \
-v mysql_conf:/etc/mysql \
-e... <a href="https://itho.cn/zabbix/380.html">阅读全文</a>]]></description>
    <pubDate>Mon, 04 Dec 2023 17:15:51 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/zabbix/380.html</guid>
</item>
<item>
    <title>K8S滚动更新Java项目的一些踩坑经验分享</title>
    <link>https://itho.cn/k8s/379.html</link>
    <description><![CDATA[1、滚动更新之健康检查重要性
spec: containers: - name: my-container readinessProbe: tcpSocket: port: 9999 initialDelaySeconds: 60 periodSeconds: 10 livenessProbe: tcpSocket: port: 9999 initialDelaySeconds: 60 periodSeconds: 10
2、滚动更新之流量丢失解决方法（pod优雅退出）
这个操作的目的可能是为了在容器终止之前进行一些清理或收尾工作，例如保存临... <a href="https://itho.cn/k8s/379.html">阅读全文</a>]]></description>
    <pubDate>Mon, 04 Dec 2023 14:15:48 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/379.html</guid>
</item>
<item>
    <title>Nvidia主机 开启/关闭 ECC校验</title>
    <link>https://itho.cn/notes/475.html</link>
    <description><![CDATA[查看当前ECC校验开启状态
nvidia-smi -q -d ECC | grep -a2 ECC Mode
关闭/开启 ECC校验
关闭 ECC
sudo nvidia-smi -e 0
开启 ECC
sudo nvidia-smi -e 0
重启
reboot
再次查询ECC校验状态
nvidia-smi -q -d ECC | grep -a2 ECC Mode <a href="https://itho.cn/notes/475.html">阅读全文</a>]]></description>
    <pubDate>Sat, 25 Nov 2023 10:20:30 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/475.html</guid>
</item>
<item>
    <title>K8S 基于Metrics Server CPU指标的pod弹性伸缩（HPA）</title>
    <link>https://itho.cn/k8s/375.html</link>
    <description><![CDATA[0x00 前置条件
1、开启K8S API聚合。关于API聚合：https://kubernetes.io/zh-cn/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/
2、集群中安装Metrics Server。
0x01 开启Kubernetes API Aggregation
在 Kubernetes 1.7 版本引入了聚合层，允许第三方应用程序通过将自己注册到kube-apiserver上，仍然通过 API Server 的 HTTP URL 对新的 API 进行访问和操作。为了实现这个机制，Kubernetes 在 kube-apiserver 服务中引入... <a href="https://itho.cn/k8s/375.html">阅读全文</a>]]></description>
    <pubDate>Thu, 23 Nov 2023 13:40:48 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/375.html</guid>
</item>
<item>
    <title>K8S HPA（Horizontal Pod Autoscaler）介绍</title>
    <link>https://itho.cn/k8s/374.html</link>
    <description><![CDATA[0x00 HPA基本介绍
Kubernetes 中的 Metrics Server 持续采集所有 Pod 副本的指标数据。HPA 控制器通过 Metrics Server 的 API（Heapster 的 API 或聚合 API）获取这些数据，基于用户定义的扩缩容规则进行计算，得到目标 Pod 副本数量。当目标 Pod 副本数量与当前副本数量不同时，HPA 控制器就向 Pod 的副本控制器（Deployment、RC 或 ReplicaSet）发起 scale 操作，调整 Pod 的副本数量，完成扩缩容操作。 在弹性伸缩中，冷却周期是不能逃避的一个话题， 由于评估的度量标准是动态特性，副本的数量可能会不断波动。有时被称为颠簸， 所以在每次做出扩容缩容后... <a href="https://itho.cn/k8s/374.html">阅读全文</a>]]></description>
    <pubDate>Thu, 23 Nov 2023 08:44:48 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/374.html</guid>
</item>
<item>
    <title>K8S Ingress-nginx实现金丝雀灰度发布</title>
    <link>https://itho.cn/k8s/373.html</link>
    <description><![CDATA[0x00 Ingress金丝雀发布介绍
Nginx Annotations 支持以下 4 种 Canary 规则：
（1）nginx.ingress.kubernetes.io/canary-by-header：
基于 Request Header 的流量切分，适用于灰度发布以及 A/B 测试。当 Request Header 设置为 always时，请求将会被一直发送到 Canary 版本；当 Request Header 设置为 never时，请求不会被发送到 Canary 入口；对于任何其他 Header 值，将忽略 Header，并通过优先级将请求与其他金丝雀规则进行优先级的比较。
（2）nginx.ingress.kubernetes.io/... <a href="https://itho.cn/k8s/373.html">阅读全文</a>]]></description>
    <pubDate>Mon, 20 Nov 2023 15:02:47 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/373.html</guid>
</item>
<item>
    <title>K8S Ingress-nginx高级用法总结</title>
    <link>https://itho.cn/k8s/372.html</link>
    <description><![CDATA[0x01 Ingress-nginx的域名重定向（Redirect）
# 关键配置
#annotations:
#  nginx.ingress.kubernetes.io/permanent-redirect: 'https://www.baidu.com/'
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata: annotations: nginx.ingress.kubernetes.io/permanent-redirect: 'https://www.baidu.com' name: ingress-xfsh namespace:xfsh
spec: rules: ... <a href="https://itho.cn/k8s/372.html">阅读全文</a>]]></description>
    <pubDate>Mon, 20 Nov 2023 14:13:21 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/372.html</guid>
</item>
<item>
    <title>Linux安装tcping</title>
    <link>https://itho.cn/linux/371.html</link>
    <description><![CDATA[0x01 安装tcping
curl -fk https://dl.itho.cn/bash/tcping -o /usr/bin/tcping && chmod +x /usr/bin/tcping
如果用不了需要安装下依赖
# CentOS
yum install -y tcptraceroute bc
# Debian/Ubuntu
apt-get install -y tcptraceroute bc
0x02 手动安装tcping
vim /usr/bin/tcping
chmod +x /usr/bin/tcping
#!/bin/sh
#
# tcpping: test response times using TCP SYN packe... <a href="https://itho.cn/linux/371.html">阅读全文</a>]]></description>
    <pubDate>Mon, 20 Nov 2023 10:10:27 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/linux/371.html</guid>
</item>
<item>
    <title>关于K8S nginx-ingress组件任意写入配置进行命令执行漏洞的复现与研究</title>
    <link>https://itho.cn/k8s/370.html</link>
    <description><![CDATA[0x01 开头
这里的ingress一定要是nginx，进行复现的环境k8s版本是1.25，ingress里面参数nginx.ingress.kubernetes.io/rewrite-target，可以任意插入，就尝试插入 lua 代码通过注解注入特殊字符尝试闭合nginx配置文件块从而实现插入任意配置实现命令执行。
0x02 复现
1、exp-ingress.yaml如下
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata: name: ingress-exploit annotations: kubernetes.io/ingress.class: nginx nginx.ingress... <a href="https://itho.cn/k8s/370.html">阅读全文</a>]]></description>
    <pubDate>Thu, 16 Nov 2023 16:30:16 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/370.html</guid>
</item>
<item>
    <title>K8S部署nfs-client-provisioner实现PV自动供给</title>
    <link>https://itho.cn/k8s/368.html</link>
    <description><![CDATA[0x00 介绍
1、NFS-Subdir-External-Provisioner
在Kubernetes中，一个PersistentVolume（PV）只能绑定到一个PersistentVolumeClaim（PVC）。PV和PVC之间是一对一的关系，每个PVC只能绑定到一个PV。
使用支持动态PV和PVC创建的存储插件，您可以为每个PVC动态创建一个独立的PV。这样，每个PVC都有自己的PV，但它们可以共享相同的存储资源。
部署 NFS-Subdir-External-Provisioner 提供动态分配卷，NFS-Subdir-External-Provisioner是一个自动配置卷程序，它使用现有的和已配置的 NFS 服务器来支持通过持久卷声明... <a href="https://itho.cn/k8s/368.html">阅读全文</a>]]></description>
    <pubDate>Thu, 09 Nov 2023 11:21:43 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/368.html</guid>
</item>
<item>
    <title>K8S部署定制RabbitMQ镜像 &amp; 多节点RabbitMQ集群</title>
    <link>https://itho.cn/k8s/367.html</link>
    <description><![CDATA[0x01 定制RabbitMQ镜像
本文章基于DockerHub镜像rabbitmq:3.12.8-management，由于官方镜像没有集成有些插件，需要在镜像中安装插件并重新打包。
rabbitmq_delayed_message_exchange延迟队列插件的安装，rabbitmq 插件下载（官网）：https://www.rabbitmq.com/community-plugins.html【根据rabbitmq版本选择对应的插件，web管理页面首页可以查看rabbitmq版本】，手动安装插件教程参考：https://blog.csdn.net/user2025/article/details/105620908
下载完成rabbitmq_de... <a href="https://itho.cn/k8s/367.html">阅读全文</a>]]></description>
    <pubDate>Thu, 09 Nov 2023 09:10:23 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/367.html</guid>
</item>
<item>
    <title>Docker部署GitLab-CE</title>
    <link>https://itho.cn/docker/366.html</link>
    <description><![CDATA[0x01 docker部署
docker run -d \ --name gitlab \ -p 9443:443 \ -p 9999:80 \ -p 9998:22 \ -v /etc/gitlab:/etc/gitlab \ -v /var/log/gitlab:/var/log/gitlab \ -v /var/opt/gitlab:/var/opt/gitlab \ -v /etc/localtime:/etc/localtime \ --privileged=true \ gitlab/gitlab-ce:latest
访问地址：http://IP:9999
首次登陆页面的账号是root，密码则是临时密码，保存在/etc/gitlab/ini... <a href="https://itho.cn/docker/366.html">阅读全文</a>]]></description>
    <pubDate>Wed, 08 Nov 2023 15:43:58 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/docker/366.html</guid>
</item>
<item>
    <title>VMware vSphere vCenter 8.0 许可证</title>
    <link>https://itho.cn/vmware/365.html</link>
    <description><![CDATA[0x01 vSphere 8的新增功能
VMware vSphere 8是一个企业工作负载平台，它为本地工作负载带来了云的好处。它通过基于DPU和GPU的加速增强了性能，通过VMware云控制台提高了运营效率，与附加混合云服务无缝集成，并通过与VM一起运行容器的企业级集成Kubernetes运行时加速了创新。
0x02 许可注册
vSphere Enterprise Plus:
HG00K-03H8K-48929-8K1NP-3LUJ4
4F40H-4ML1K-M89U0-0C2N4-1AKL4
vCenter Standard :
4F282-0MLD2-M8869-T89G0-CF240
0F41K-0MJ4H-M88U1-0C3N0-0A214
... <a href="https://itho.cn/vmware/365.html">阅读全文</a>]]></description>
    <pubDate>Wed, 08 Nov 2023 08:44:08 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/vmware/365.html</guid>
</item>
<item>
    <title>K8S部署Jenkins &amp; 配置国内镜像源</title>
    <link>https://itho.cn/cicd/520.html</link>
    <description><![CDATA[0x01 k8s部署jenkins
1、docker file
可以在原先镜像上安装nodejs跟npm
FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/jenkins/jenkins:lts-jdk17 USER root # 1. 替换 APT 源（可选）
COPY sources.list /etc/apt/sources.list # 2. 更新并安装基础工具（如 curl）
RUN apt update && apt install -y curl vim wget # 3. 安装 Node.js 16 LTS（推荐方式）
RUN curl -fsSL https://deb.n... <a href="https://itho.cn/cicd/520.html">阅读全文</a>]]></description>
    <pubDate>Wed, 08 Nov 2023 08:42:39 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/cicd/520.html</guid>
</item>
<item>
    <title>Docker部署Jenkins与创建流水线笔记</title>
    <link>https://itho.cn/cicd/364.html</link>
    <description><![CDATA[0x00 前言
使用docker部署jenkins后使用流水线docker build提示找不到docker命令，找了好久解决了，需要把docker挂载出来。
第二个问题是docker login 私有仓的时候 提示证书不对，需要在配置文件添加下insecure-registries
0x01 jenkins正确部署命令
docker run --name jenkins \ -u root \ --rm -d \ -p 8092:8080 \ -v /var/jenkins_home:/var/jenkins_home \ -v $(which docker):/usr/bin/docker \ -v /var/run/docker.sock:/va... <a href="https://itho.cn/cicd/364.html">阅读全文</a>]]></description>
    <pubDate>Tue, 07 Nov 2023 17:30:06 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/cicd/364.html</guid>
</item>
<item>
    <title>JDK1.8之前版本使用K8S对Java应用进行资源限制的注意事项</title>
    <link>https://itho.cn/k8s/363.html</link>
    <description><![CDATA[0x01 前言
flowchart TD %% 定义最外层的 Kubernetes 限制 K8s[🔴 Kubernetes 容器 Limit (例如: 2048Mi) （操作系统 Cgroups 物理内存硬限制） 触碰此线 -  容器暴毙: OOMKilled (Exit Code 137)] %% 第一层拆分：JVM 和 其他系统进程 JVM[🔵 JVM 进程 (Java Process)] SysOut[⚙️ 其他容器系统开销 (如 shell 进程, 监控 Agent, Page Cache 等)] %% 第二层拆分：堆与堆外 (75% vs 25%) Heap[🟢 Heap (堆内存) 由 M... <a href="https://itho.cn/k8s/363.html">阅读全文</a>]]></description>
    <pubDate>Tue, 07 Nov 2023 10:55:27 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/363.html</guid>
</item>
<item>
    <title>Docker私有镜像容器仓库-Harbor部署</title>
    <link>https://itho.cn/docker/362.html</link>
    <description><![CDATA[1、部署docker-compose
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
2、生成证书
# 生成CA证书私钥
openssl genrsa -out ca.key 4096
# 生成CA证书，harbor.itho.cn为域名地址
openssl req -x509 -new -nodes -... <a href="https://itho.cn/docker/362.html">阅读全文</a>]]></description>
    <pubDate>Mon, 06 Nov 2023 11:38:33 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/docker/362.html</guid>
</item>
<item>
    <title>K8S安装flannel报错解决（pods with system-node-critical priorityClass is not permitted in kube-flannel namespace）</title>
    <link>https://itho.cn/k8s/360.html</link>
    <description><![CDATA[0x01 关于部署flannel失败
在上一个过程中，部署高可用k8s集群后，在master节点安装flannel网络插件，部署后没有pod，后面经过分析报错如下：
# 在master节点apply kube-flannel.yml 提示所有东西都已经创建了。
[root@k8s-master01 ~]# kubectl apply  -f kube-flannel.yml
namespace/kube-flannel created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel cre... <a href="https://itho.cn/k8s/360.html">阅读全文</a>]]></description>
    <pubDate>Mon, 30 Oct 2023 14:51:06 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/360.html</guid>
</item>
<item>
    <title>K8S笔记-通过kubeadm方式搭建高可用集群（keepalived+haproxy）</title>
    <link>https://itho.cn/k8s/359.html</link>
    <description><![CDATA[0x00 介绍
虚拟ip             172.16.10.20      master.k8s.io           k8s-vip
master01         172.16.10.21      master01.k8s.io      master01
master02         172.16.10.22      master02.k8s.io      master02
node01           172.16.10.23      node01.k8s.io          node01
0x01 初始化（所有节点）
# 关闭防火墙
systemctl stop firewalld
systemctl di... <a href="https://itho.cn/k8s/359.html">阅读全文</a>]]></description>
    <pubDate>Mon, 30 Oct 2023 08:57:05 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/359.html</guid>
</item>
<item>
    <title>Python邮件发送例子</title>
    <link>https://itho.cn/py/358.html</link>
    <description><![CDATA[python邮件发送案例
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText class AutoEmail: def __init__(self): self.__sender_email = support@itho.cn self.__password = qwer1234 def send_email(self, recipient_emails, subject, message): msg = MIMEMultipart() msg['Subject'] = sub... <a href="https://itho.cn/py/358.html">阅读全文</a>]]></description>
    <pubDate>Wed, 25 Oct 2023 16:49:38 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/py/358.html</guid>
</item>
<item>
    <title>K8S笔记-持久化存储（PV和PVC）</title>
    <link>https://itho.cn/k8s/357.html</link>
    <description><![CDATA[0x01 PV PVC概述
PV（PersistentVolume）是对底层的共享存储的一种抽象，由管理员进行创建和配置。它和具体的底层的共享存储技术的实现方式有关，比如Ceph、GlusterFS、NFS等，都是通过插件机制完成与共享存储的对接。
PVC（PersistentVolumeClaim）是Kubernetes中的一个资源对象，用于抽象地申请和管理持久化存储资源。它向POD（容器运行的环境）提供了一个简单、抽象的接口，用于绑定和挂载一个POD所需要的存储卷。POD可以通过PVC来自动配置和使用存储卷。
实现流程：
点击查看原图
0x02 申请PVC例子
1、定义一个pv，名字为my-pv
[root@k8s-master01 k8s]# v... <a href="https://itho.cn/k8s/357.html">阅读全文</a>]]></description>
    <pubDate>Fri, 20 Oct 2023 16:36:09 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/357.html</guid>
</item>
<item>
    <title>K8S笔记-持久化存储（使用NFS网络存储）</title>
    <link>https://itho.cn/k8s/356.html</link>
    <description><![CDATA[0x01 安装nfs服务端
1、找一台服务器安装nfs服务端
# centos nfs服务端跟客户端 一样都是nfs-utils
[root@nfs-server /]# yum install -y nfs-utils
# 如果是Ubuntu
sudo apt-get install -y nfs-kernel-server # nfs服务端
2、设置挂载路径
# 创建挂载路径
[root@nfs-server /]# mkdir -p /data/nfs
# 设置nfs挂载路径
[root@nfs-server /]# vi /etc/exports
# 将/data/nfs文件夹共享给*(*为所有IP)，也可以限制单独ip 写法 /data/nf... <a href="https://itho.cn/k8s/356.html">阅读全文</a>]]></description>
    <pubDate>Fri, 20 Oct 2023 14:29:43 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/356.html</guid>
</item>
<item>
    <title>Redis主从配置与哨兵模式</title>
    <link>https://itho.cn/redis/354.html</link>
    <description><![CDATA[0x01 主从配置
主节点redis.conf配置
port 6379
从节点redis.conf配置
port 6380
pidfile /var/run/redis_6380.pid
dbfilename dump-6380.rdb
relicaof x.x.x.x 6379 #主节点ip 端口
查看当前角色
127.0.0.1:6379   info replication
0x02 哨兵模式
哨兵会以一个独立的进程运行在redis集群中，有下面三大作用： 监控监控：不断发送命令来检查redis节点是否正常
故障通知：如果发现某个节点故障，哨兵会通过发布订阅模式来通知其他节点
故障转移：会把一个从节点升级为新的主节点，然后再将其他从节点指向新的主... <a href="https://itho.cn/redis/354.html">阅读全文</a>]]></description>
    <pubDate>Fri, 20 Oct 2023 11:01:53 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/redis/354.html</guid>
</item>
<item>
    <title>Redis持久化配置（RDB&amp;AOF）</title>
    <link>https://itho.cn/redis/353.html</link>
    <description><![CDATA[0x01 RDB(Redis DataBase)
RDB是通过生成数据快照的方式来保存数据。 修改redis.conf配置
# 通过save参数来配置RDB。格式为 save [秒数] [次数]。
# 在1小时内，只要有一次修改，就会进行一次快照
save 3600 1
手动触发快照
使用save命令可以手动触发快照。但请注意，在执行save命令时，Redis将进入阻塞状态，无法处理任何请求。
127.0.0.1:6379   save
创建子进程进行保存（这个过程还是会有一定的性能损耗，因为fork一个子进程也是需要时间）
# 使用bgsave命令可以创建一个子进程来保存数据，以避免阻塞主进程。
127.0.0.1:6379   bgsave 0x0... <a href="https://itho.cn/redis/353.html">阅读全文</a>]]></description>
    <pubDate>Fri, 20 Oct 2023 10:56:02 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/redis/353.html</guid>
</item>
<item>
    <title>博科存储光交CLI常用命令</title>
    <link>https://itho.cn/notes/350.html</link>
    <description><![CDATA[0x01 登录
博科交换机的默认IP地址是10.77.77.77，用户名admin，密码：admin或者password
在网络连接中添加IP地址10.77.77.**（子网掩码255.0.0.0）。开始- 运行- CMD，输入telnet10.77.77.77并输入账号密码后，可进入交换机字符管理界面。telnet使用的默认23端口。
交换机的端口表示为（A,B）或者（A,B;C,D）。A,C表示交换机的ID号，默认是1，多个交换机级联时ID输入相应交换机的ID。B,D表示交换机的端口号，编号从1开始。
0x02 别名（alias）设置
1、新建alias
在在为交换机划分zone时，为了方便用户清楚地知道每个端口的用途或接线情况，可以给每个端口或者... <a href="https://itho.cn/notes/350.html">阅读全文</a>]]></description>
    <pubDate>Tue, 10 Oct 2023 09:02:53 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/350.html</guid>
</item>
<item>
    <title>RKE1部署K8S集群，安装Rancher面板</title>
    <link>https://itho.cn/k8s/348.html</link>
    <description><![CDATA[0x01 介绍
rke1官方手册：https://rke.docs.rancher.com/
有关每个版本测试的操作系统和 Docker 版本的详细信息，支持矩阵：https://www.suse.com/suse-rke1/support-matrix/all-supported-versions/
关于rke版本跟RKE Kubernetes版本对应可以参考：https://github.com/rancher/rke/releases/
rke版本：v1.4.8
k8s版本：v1.26.7
rancher版本v2.7.6
master 10.206.16.10 centos7.9 role: [controlplane, worker, etcd... <a href="https://itho.cn/k8s/348.html">阅读全文</a>]]></description>
    <pubDate>Mon, 25 Sep 2023 09:36:22 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/348.html</guid>
</item>
<item>
    <title>K8s笔记-Helm</title>
    <link>https://itho.cn/k8s/347.html</link>
    <description><![CDATA[0x01 Helm 引入
如果使用之前的方式通过yaml部署单一应用，少数服务的应用比较合适。但是如果部署微服务项目，可能有十几个服务，每个服务都有一套yaml文件，需要维护大量yaml文件，版本管理特别不方便。
使用heml可以吧这些yaml作为一个整体管理，实现yaml高效复用，使用heml应用级别的版本管理。
0x02 Helm 介绍
Helm 是一个 Kubernetes 的包管理工具，很方便的将之前打包好的 vaml 文件部署到 kubernetes 。
Helm 有 3 个重要概念:
（1）Helm：一个命令行客户端工具，主要用于 Kubernetes 应用 chart 的创建、打包、发布跟管理。
（2）Chart：应用描述，一系列用于描述... <a href="https://itho.cn/k8s/347.html">阅读全文</a>]]></description>
    <pubDate>Fri, 22 Sep 2023 15:40:24 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/347.html</guid>
</item>
<item>
    <title>K8S笔记-Ingress</title>
    <link>https://itho.cn/k8s/345.html</link>
    <description><![CDATA[0x01 Ingress概述
NodePort方式的缺点
之前通过Service里面的NodePort方式把端口号对外暴露，通过IP+端口进行访问，缺点是在每个节点上都会起端口，在访问任何节点+暴露端口号就行实现访问，意味着每个端口只能使用一次，一个端口对应一个服务。实际环境都是使用域名，通过不同的域名跳转到不同的服务端口中。所以这边引入了Ingress。Ingress有很多种，这边使用的是Ingress nginx。
Ingress跟pod关系
pod跟ingress通过service进行关联，ingress作为统一入口，由service关联一组pod。
Ingress工作流程 0x02 部署ingress controller
1、我选择把ingr... <a href="https://itho.cn/k8s/345.html">阅读全文</a>]]></description>
    <pubDate>Thu, 21 Sep 2023 09:47:50 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/345.html</guid>
</item>
<item>
    <title>关于ChatGPT_WEB开源项目测评</title>
    <link>https://itho.cn/notes/344.html</link>
    <description><![CDATA[0x01 chatgpt-web
https://github.com/Chanzhaoyu/chatgpt-web
docker pull chenzhaoyu94/chatgpt-web 
docker run --name chatgpt-web -d -p 3002:3002 --env OPENAI_API_KEY=sk-xxxx chenzhaoyu94/chatgpt-web
界面比较好看，更官方的差不多。只能使用3.5-turbo-0301模型，apikey后期更换麻烦，无法设置访问密码。 0x02 ChatGPT Next（推荐）
https://github.com/Yidadaa/ChatGPT-Next-Web
docker p... <a href="https://itho.cn/notes/344.html">阅读全文</a>]]></description>
    <pubDate>Wed, 20 Sep 2023 08:47:35 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/344.html</guid>
</item>
<item>
    <title>Linux安装Go1.20版本</title>
    <link>https://itho.cn/linux/343.html</link>
    <description><![CDATA[安装
#下载Golang
curl -L https://go.dev/dl/go1.20.7.linux-amd64.tar.gz -o ./go-linux-amd64.tar.gz #解压
sudo tar -zxvf go-linux-amd64.tar.gz -C /usr/local/lib/ #配置Go环境变量
#下面语句是给所有用户创建环境变量。
# 下面内容需要多行复制
sudo tee -a ~/.bashrc    EOF
export GOROOT=/usr/local/lib/go/
export GOPATH=/home/${USER}/sdk/go
export PATH=\$PATH:\$GOROOT/bin:\$GOP... <a href="https://itho.cn/linux/343.html">阅读全文</a>]]></description>
    <pubDate>Tue, 19 Sep 2023 15:04:16 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/linux/343.html</guid>
</item>
<item>
    <title>K8S笔记-集群安全机制（RBAC权限管理）</title>
    <link>https://itho.cn/k8s/340.html</link>
    <description><![CDATA[0x00 概述
一、访问k8s集群的时候，需要经过三个步骤完成具体操作：
第一步 认证
1.传输安全：
对外不暴露8080端口，只能内部访问，对外使用端口6443
2.认证：
客户端身份认证常用方式：
（1）htts证书认证，基于ca证书
... <a href="https://itho.cn/k8s/340.html">阅读全文</a>]]></description>
    <pubDate>Thu, 14 Sep 2023 14:49:10 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/340.html</guid>
</item>
<item>
    <title>K8S笔记-Controller-Job和Cronjob（单次任务与定时任务）</title>
    <link>https://itho.cn/k8s/339.html</link>
    <description><![CDATA[0x01 Job（### 一次性任务）
它的任务是在一个Pod中运行一个容器，容器会输出一句话Hello, Kubernetes!。在容器运行完毕后，Job会自动停止Pod并退出。如果容器在运行过程中失败，Job会重新尝试4次（backoffLimit设置为4）。
apiVersion: batch/v1
kind: Job
metadata: name: myjob
spec: template: spec: containers: - name: mycontainer image: myimage:latest command: [echo, Hello, Kubernetes!] rest... <a href="https://itho.cn/k8s/339.html">阅读全文</a>]]></description>
    <pubDate>Thu, 14 Sep 2023 14:35:42 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/339.html</guid>
</item>
<item>
    <title>K8S笔记-Controller-DaemonSet（守护进程）</title>
    <link>https://itho.cn/k8s/338.html</link>
    <description><![CDATA[0x01 介绍
DaemonSet是Kubernetes中的一种Controller，用于确保在集群中的每个节点上都运行一份Pod副本。它通常被用于运行某些系统级别的后台任务，例如日志收集器、监控代理等。DaemonSet保证了每个节点都有一个Pod副本在运行，如果有新的节点加入到集群中，它会自动在新节点上创建一个新的Pod副本。如果某个节点从集群中删除，它会自动将该节点上的Pod副本删除。这使得DaemonSet非常适合运行跨多个节点的后台任务。
0x02 示例
下面是一个DaemonSet的简单YAML示例：
apiVersion: apps/v1
kind: DaemonSet
metadata: name: my-daemonset
spec:... <a href="https://itho.cn/k8s/338.html">阅读全文</a>]]></description>
    <pubDate>Thu, 14 Sep 2023 14:25:15 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/338.html</guid>
</item>
<item>
    <title>K8S笔记-Controller-StatefulSet（有状态）</title>
    <link>https://itho.cn/k8s/337.html</link>
    <description><![CDATA[0x01 无状态和有状态区别
1.无状态
认为Pod都是一样的
没有顺序要求
不用考虑在哪个node运行
可以随意进行伸缩扩展
2.有状态
上面无状态的因素都需要考虑到
让每个pod独立的，保持pod启动顺序和唯一性
唯一的网络标识符，持久存储
有序的（比如mysql主从）
StatefulSet是用于管理有状态应用的控制器，它为每个Pod分配唯一的标识符，并按照一定规则生成唯一的FQDN（Fully Qualified Domain Name）。这使得有状态应用能够更好地适应动态的集群环境。
而Deployment则是用于管理无状态应用的控制器，它不保证每个Pod的标识符和FQDN的唯一性，也不保证Pod的启动顺序。
0x02 部署有状态应用
Sta... <a href="https://itho.cn/k8s/337.html">阅读全文</a>]]></description>
    <pubDate>Wed, 13 Sep 2023 15:53:23 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/337.html</guid>
</item>
<item>
    <title>K8S笔记-Controller-Deployment（无状态）</title>
    <link>https://itho.cn/k8s/334.html</link>
    <description><![CDATA[0x01 概述和应用场景
1.什么是Controller？
*在集群上管理和运行容器的对象
2.Pod跟Controller的关系？
Pod是通过Controller来实现应用的运维（比如伸缩，滚动升级等）
Pod和Controller之间通过label标签建立关系（selector） 3.Deployment应用场景
部署无状态应用（应用场景：web服务 微服务）
管理Pod和ReplicaSet
*部署滚等升级等功能
0x02 发布应用
# 1.导出yaml文件
[root@master deployment]# kubectl create deployment web --image=nginx --dry-run=client -o yaml... <a href="https://itho.cn/k8s/334.html">阅读全文</a>]]></description>
    <pubDate>Wed, 13 Sep 2023 15:06:30 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/334.html</guid>
</item>
<item>
    <title>K8S笔记-Service（服务类型）</title>
    <link>https://itho.cn/k8s/336.html</link>
    <description><![CDATA[0x01 Service概述
1.Service存在的意义
防止Pod失联（服务发现） 定义一组Pod访问策略（负载均衡） 2.Pod跟Service关系
通过Service来实现负载均衡
根据label和selector标签建立关联的 0x02 Service三种类型
ClusterIP：集群内部使用
apiVersion: v1
kind: Service
metadata: name: my-service
spec: type: ClusterIP selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080
NodePort：会在集群中的所有主机上打开一个指定的.... <a href="https://itho.cn/k8s/336.html">阅读全文</a>]]></description>
    <pubDate>Sun, 10 Sep 2023 15:16:17 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/336.html</guid>
</item>
<item>
    <title>K8S笔记-Pod（实现机制、镜像拉取、健康检查、调度策略）</title>
    <link>https://itho.cn/k8s/332.html</link>
    <description><![CDATA[0x01 Pod概述
Pod 是k8s 系统中可以创建和管理的最小单元，是资源对象模型中由用户创建或部署的最小资源对象模型，也是在 k8s 上运行容器化应用的资源对象，其他的资源对象都是用来支撑或者扩展 Pod 对象功能的，比如控制器对象是用来管控 Pod 对象的，Service 或者Ingress 资源对象是用来暴露 Pod 引用对象的，PersistentVolume 资源对象是用来为 Pod提供存储等等，k8s 不会直接处理容器，而是Pod，Pod 是由一个或多个 container 组成。
Pod是Kubernetes的最重要概念，每一个Pod都有一个特殊的被称为”根容器“的Pause容器。Pause 容器对应的镜像属于Kubernetes平台... <a href="https://itho.cn/k8s/332.html">阅读全文</a>]]></description>
    <pubDate>Wed, 23 Aug 2023 11:27:36 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/332.html</guid>
</item>
<item>
    <title>各服务器厂商默认密码</title>
    <link>https://itho.cn/notes/448.html</link>
    <description><![CDATA[服务器管理口信息:
IBM服务器 IBM P小型机ASMI hmc1:192.168.2.147
hmc2:192.168.3.147 admin admin
IBM X系列IMM端口 192.168.70.125/24 USERID PASSW0RD
IBM BCH刀箱管理模块 192.168.70.125-126/24 USERID PASSW0RD
IBM BCH刀箱网络模块 192.168.70.127-128/24 admin admin
IBM BCH刀箱光纤模块 192.168.70.129-130/24 admin pasword
IBM pureFlexCMM模块 192.168.70.100 USERID PASSW0RD 华为服务... <a href="https://itho.cn/notes/448.html">阅读全文</a>]]></description>
    <pubDate>Sat, 12 Aug 2023 09:58:10 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/notes/448.html</guid>
</item>
<item>
    <title>K8S笔记-YAML（文件生成与导出）</title>
    <link>https://itho.cn/k8s/335.html</link>
    <description><![CDATA[0x01 生成yaml文件
#通过kubectl create 生成yaml文件
kubectl create deployment web --image=nginx -o yaml --dry-run  ng.yaml
0x02 导出yaml文件
#通过kubectl get 导出yaml文件
kubectl get deploy nginx -o yaml --export   ng.yaml <a href="https://itho.cn/k8s/335.html">阅读全文</a>]]></description>
    <pubDate>Sun, 06 Aug 2023 14:11:17 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/335.html</guid>
</item>
<item>
    <title>K8S笔记-搭建集群（通过二进制方式）</title>
    <link>https://itho.cn/k8s/317.html</link>
    <description><![CDATA[0x00 安装要求
在开始之前，部署 Kubernetes 集群机器需要满足以下几个条件：
(1)一台或多台机器，操作系统 CentOS7.x-86_x6
(2)硬件配置: 2GB 或更多 RAM，2个 CPU 或更多 CPU，硬盘 30GB 或更多
(3)集群中所有机器之间网络互通
(4)可以访问外网，需要拉取镜像，如果服务器不能上网，需要提前下载镜像并导入节点
(5)禁止 swap 分区
组件版本：k8s组件版本v1.19.16 etcd版本3.3.10 服务器
主机名
IP地址
主要组件 master+etcd01
master
172.16.10.20
kube-apiserver kube-controller-manager kube-sc... <a href="https://itho.cn/k8s/317.html">阅读全文</a>]]></description>
    <pubDate>Tue, 01 Aug 2023 16:40:10 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/317.html</guid>
</item>
<item>
    <title>Python pandas 数据结构-DataFrame</title>
    <link>https://itho.cn/py/331.html</link>
    <description><![CDATA[0x00 关于DataFrame
DataFrame是一个类似于二维数组或表格(如excel)的对象，既有行索引，又有列索引 行索引，表明不同行，横向索引，叫index，0轴，axis=0
列索引，表名不同列，纵向索引，叫columns，1轴，axis=1 0x01 创建一个dataframe
import pandas as pd
import numpy as np # 创建一个ndarray，10行5列学生成绩
score = np.random.randint(40, 100, (10, 5)) # 变成dataframe格式
subjects = ['语文', '数学', '英语', '科学', '政治']
stu = ['学生' + str... <a href="https://itho.cn/py/331.html">阅读全文</a>]]></description>
    <pubDate>Fri, 21 Jul 2023 10:47:23 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/py/331.html</guid>
</item>
<item>
    <title>Python pandas 数据结构-Series</title>
    <link>https://itho.cn/py/330.html</link>
    <description><![CDATA[0x00 介绍
Series是一个类似于一维数组的数据结构，它能够保存任何类型的数据，比如整数、字符串、浮点数等，主要由一组数据和与之相关的索引两部分构成。
0x01 Series
import pandas as pd
import numpy as np # 直接通过数组创建
a = pd.Series(np.arange(9))
# 通过数组+指定索引创建
b = pd.Series([1.2, 2.9, 3.8, 4.7], index=[1, 2, 3, 4])
# 通过字典创建
c = pd.Series({ red: 10, blue: 20
}) # 通过索引获取数据
print(a[3])  # 3
print(b[2])  # 2.... <a href="https://itho.cn/py/330.html">阅读全文</a>]]></description>
    <pubDate>Fri, 21 Jul 2023 09:54:49 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/py/330.html</guid>
</item>
<item>
    <title>Python numpy 矩阵与向量</title>
    <link>https://itho.cn/py/329.html</link>
    <description><![CDATA[0x01 矩阵与向量
（1）矩阵
矩阵（matrix）和array的区别矩阵必须是2维的，但是array可以是多维的。
如下图，这个是 3x2 矩阵，即3行2列。如m为行，n 为列，那么 mxn 即 3x2。 矩阵的维数即行数x列数，矩阵元素(矩阵项): Aij 指第 i 行，第j列的元素.
（2）向量
向量是一种特殊的矩阵，讲义中的向量一般都是列向量，下图展示的就是三维列向量(3x1)。 0x02 加法和标量乘法
（1）矩阵的加法:
行列数相等的可以加。例: （2）矩阵的乘法:
每个元素都要乘。例: 组合算法也类似
0x03 矩阵向量乘法
矩阵和向量的乘法如图: mxn 的矩阵乘以 nx1 的向量，得到的是 mx1 的向量。
例如： 1*1+3*5 ... <a href="https://itho.cn/py/329.html">阅读全文</a>]]></description>
    <pubDate>Thu, 20 Jul 2023 16:38:47 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/py/329.html</guid>
</item>
<item>
    <title>Python numpy 数组间运算与广播机制</title>
    <link>https://itho.cn/py/328.html</link>
    <description><![CDATA[0x01 数组与数运算
import numpy as np arr = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])

arr + 1
array([[2, 3, 4, 3, 2, 5], [6, 7, 2, 3, 4, 2]]) arr / 2
array([[0.5, 1. , 1.5, 1. , 0.5, 2. ], [2.5, 3. , 0.5, 1. , 1.5, 0.5]])

# 可以对比python列表的运算，看出区别
a = [1, 2, 3, 4, 5]

a*3
Out[3]: [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]

0... <a href="https://itho.cn/py/328.html">阅读全文</a>]]></description>
    <pubDate>Thu, 20 Jul 2023 15:51:35 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/py/328.html</guid>
</item>
<item>
    <title>Python  numpy ndarray运算</title>
    <link>https://itho.cn/py/327.html</link>
    <description><![CDATA[0x01 逻辑运算
import numpy as np # 生成40-100的10行5列数据
arr1 = np.random.randint(40, 100, (10, 5))

#查看下arr1
arr1 Out[3]: 
array([[95, 65, 74, 76, 64], [95, 62, 74, 81, 59], [48, 93, 87, 40, 63], [99, 68, 57, 95, 51], [75, 78, 43, 50, 49], [75, 74, 86, 50, 98], [62, 61, 53, 40, 73], [58, 63, 99, 76, 85], [5... <a href="https://itho.cn/py/327.html">阅读全文</a>]]></description>
    <pubDate>Thu, 20 Jul 2023 15:10:35 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/py/327.html</guid>
</item>
<item>
    <title>Python numpy 数组基本操作（索引与切片用法、改变形状、修改类型、去重）</title>
    <link>https://itho.cn/py/326.html</link>
    <description><![CDATA[0x01 数组索引与切片用法
import numpy as np # (2)二维数组
# 首先生成一个二维数组
arr2 = np.random.uniform(-1, 2, size=(5, 5))

# 查看下arr2
arr2 Out[3]: 
array([[ 1.05865188,  1.18597622, -0.81279676,  1.79444952,  0.71910054], [-0.62385763, -0.61713265,  0.94918552, -0.24394799,  1.81343914], [-0.71354709, -0.93964984,  0.96237785,  1.23973639,  0.116286... <a href="https://itho.cn/py/326.html">阅读全文</a>]]></description>
    <pubDate>Fri, 14 Jul 2023 17:01:12 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/py/326.html</guid>
</item>
<item>
    <title>Python numpy 生成随机数组（正态分布与均匀分布）</title>
    <link>https://itho.cn/py/325.html</link>
    <description><![CDATA[0x01 什么是正态分布
正态分布是一种概率分布。正态分布是具有两个参数u和o的连续型随机变量的分布，第一参数u是服从正态分布的随机变量的均值，第二个参数o是此随机变量的方差，所以正态分布记作N（μ，σ）。 0x02 生成正态分布的随机数组 import numpy as np
import matplotlib.pyplot as plt # 生成均值为1.75，标准差为1的正态分布数据，100000000个
x1 = np.random.normal(1.75, 1, 10000000)
# 绘图
plt.figure(figsize=(18, 8), dpi=100)  # 创建画布
plt.hist(x1, 1000)  # 绘制直方图
plt... <a href="https://itho.cn/py/325.html">阅读全文</a>]]></description>
    <pubDate>Fri, 14 Jul 2023 16:20:07 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/py/325.html</guid>
</item>
<item>
    <title>Python numpy 生成01数组、固定数组</title>
    <link>https://itho.cn/py/324.html</link>
    <description><![CDATA[0x01 生成01数组
import numpy as np # 生成4行6列0数组
ones = np.ones([4, 6])

查看下zeros Out[3]:
array([[0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0.]])
 # 生成3行7列1数组
zeros = np.zeros([3, 7])

查看下ones Out[4]:
array([[1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1.],... <a href="https://itho.cn/py/324.html">阅读全文</a>]]></description>
    <pubDate>Fri, 14 Jul 2023 15:48:19 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/py/324.html</guid>
</item>
<item>
    <title>Python numpy ndarray介绍</title>
    <link>https://itho.cn/py/323.html</link>
    <description><![CDATA[0x01 ndarray属性 属性名字
属性解释 ndarray.shape
数组维度的元组 ndarray.ndim
数组维数 ndarray.size
数组中的元素数量 ndarray.itemsize
个数组元素的长度 (字节) ndarray.dtype
数组元素的类型 0x02 ndarray形状
import numpy as np a = np.array([[1,2,3],[4,5,6]])
b = np.array([1,2,3,4])
c = np.array([[[1,2,3], [4,5,6]],[[1,2,3], [4,5,6]]]) a.shape
Out[3]: (2, 3)#二维数组
b.shape
Out[4]: (4... <a href="https://itho.cn/py/323.html">阅读全文</a>]]></description>
    <pubDate>Thu, 13 Jul 2023 21:08:41 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/py/323.html</guid>
</item>
<item>
    <title>Python numpy中ndarray与原生list对比</title>
    <link>https://itho.cn/py/322.html</link>
    <description><![CDATA[0x01 ndarray与list运行时长对比
import random
import numpy as np
import timeit a = []
for i in range(100000000): a.append(random.random()) def sum_list(): return sum(a)
def sum_numpy(): b = np.array(a) return np.sum(b) time_list = timeit.timeit(sum_list, number=1)
time_numpy = timeit.timeit(sum_numpy, number=1) print(List sum time:, tim... <a href="https://itho.cn/py/322.html">阅读全文</a>]]></description>
    <pubDate>Thu, 13 Jul 2023 20:51:10 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/py/322.html</guid>
</item>
<item>
    <title>Python matplotlib 绘制散点图/柱状图</title>
    <link>https://itho.cn/py/321.html</link>
    <description><![CDATA[0x01 散点图 import matplotlib.pyplot as plt
import random # 生成数据
num_points = 1000
x = [random.uniform(0, 10) for i in range(1000)]
y = [random.uniform(0, 10) for i in range(1000)] # 绘制散点图
plt.scatter(x, y, s=5, alpha=0.5) # 添加标题和标签
plt.title('Scatter Plot Example')
plt.xlabel('X')
plt.ylabel('Y')
# 显示图形
plt.show()
0x02 柱状图 import ... <a href="https://itho.cn/py/321.html">阅读全文</a>]]></description>
    <pubDate>Thu, 13 Jul 2023 16:41:45 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/py/321.html</guid>
</item>
<item>
    <title>Python matplotlib 绘制折线图（多坐标系）</title>
    <link>https://itho.cn/py/320.html</link>
    <description><![CDATA[0x01 图像 0x02 代码
import matplotlib.pyplot as plt
import random
# 支持中文
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['Arial Unicode MS']
mpl.rcParams['axes.unicode_minus'] = False  # 用来解决不能使用汉字问题，需要导入matplotlib
# 准备x y 数据
x = range(1, 31)
y_hangzhou = [random.uniform(35, 42) for i in x]
y_beijing = [random.uniform(34, 3... <a href="https://itho.cn/py/320.html">阅读全文</a>]]></description>
    <pubDate>Thu, 13 Jul 2023 16:07:27 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/py/320.html</guid>
</item>
<item>
    <title>Python matplotlib 绘制折线图（单坐标系）</title>
    <link>https://itho.cn/py/319.html</link>
    <description><![CDATA[0x01 图像 0x02 代码
import matplotlib.pyplot as plt
import random
# 支持中文
from pylab import mpl mpl.rcParams['font.sans-serif'] = ['Arial Unicode MS']
mpl.rcParams['axes.unicode_minus'] = False  # 用来解决不能使用汉字问题，需要导入matplotlib
# 准备x y 数据
x = range(1, 31)
y_hangzhou = [random.uniform(35, 42) for i in x]
y_beijing = [random.uniform(34, 3... <a href="https://itho.cn/py/319.html">阅读全文</a>]]></description>
    <pubDate>Thu, 13 Jul 2023 16:06:42 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/py/319.html</guid>
</item>
<item>
    <title>K8S笔记-集群架构组件详解</title>
    <link>https://itho.cn/k8s/316.html</link>
    <description><![CDATA[0x00 架构图 0x01 MasterNode api server：集群对外的统一入口，以restful方式，交给etcd进行存储。
scheduler：节点调度，选择node节点应用部署。
controller-manager：处理集群常规后台任务，一个资源对应一个控制器。
etcd：存储系统，用于保存集群相关数据。 0x02 WorkerNode kubelet：master在worker创建的agent，管理本机容器生命周期的各种操作。
kube-proxy：提供网络代理，负载均衡等操作。 <a href="https://itho.cn/k8s/316.html">阅读全文</a>]]></description>
    <pubDate>Wed, 12 Jul 2023 09:43:58 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/316.html</guid>
</item>
<item>
    <title>OpenVPN一键搭建脚本</title>
    <link>https://itho.cn/ovpn/313.html</link>
    <description><![CDATA[0x01 install.sh #!/bin/bash
#
# https://github.com/hwdsl2/openvpn-install
#
# Based on the work of Nyr and contributors at:
# https://github.com/Nyr/openvpn-install
#
# Copyright (c) 2022-2023 Lin Song  linsongui@gmail.com 
# Copyright (c) 2013-2023 Nyr
#
# Released under the MIT License, see the accompanying file LICENSE.txt
# ... <a href="https://itho.cn/ovpn/313.html">阅读全文</a>]]></description>
    <pubDate>Sun, 09 Jul 2023 17:34:42 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/ovpn/313.html</guid>
</item>
<item>
    <title>Kubernetes(k8s)-Namespace命名空间</title>
    <link>https://itho.cn/k8s/311.html</link>
    <description><![CDATA[0x01 前言
如果一个集群中部署了多个应用，所有应用都在一起，就不太好管理，也可以导致名字冲突等。
我们可以使用 namespace 把应用划分到不同的命名空间，跟代码里的 namespace 是一个概念，只是为了划分空间。
0x02 命令
# 创建命名空间
kubectl create namespace testapp
# 部署应用到指定的命名空间
kubectl apply -f app.yml --namespace testapp
# 查询
kubectl get pod --namespace kube-system
0x03 增强工具 kubens
可以用 kubens 快速切换 namespace，kubens地址：https://g... <a href="https://itho.cn/k8s/311.html">阅读全文</a>]]></description>
    <pubDate>Tue, 04 Jul 2023 16:29:37 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/311.html</guid>
</item>
<item>
    <title>mysql8主从配置</title>
    <link>https://itho.cn/mysql/310.html</link>
    <description><![CDATA[0x01 创建mysql环境
使用docker创建两台mysql，名字为mysql_master与mysql_slave，加入mysql-network网络，设置root密码为Qwer1234.
这里需要挂载容器内的三个目录分别为数据文件夹、日志文件夹、配置文件夹。
docker run -d \ --name mysql_master \ --network mysql-network \ -v /Users/myluzh/Documents/docker/mysql_master/data:/var/lib/mysql \ -v /Users/myluzh/Documents/docker/mysql_master/log:/var/log/mys... <a href="https://itho.cn/mysql/310.html">阅读全文</a>]]></description>
    <pubDate>Tue, 04 Jul 2023 09:37:30 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/mysql/310.html</guid>
</item>
<item>
    <title>Kubernetes(k8s)-Helm</title>
    <link>https://itho.cn/k8s/309.html</link>
    <description><![CDATA[0x01 安装Helm
1.github安装helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
2.国内加速源安装helm
wget https://mirrors.huaweicloud.com/helm/v3.9.4/helm-v3.9.4-linux-amd64.tar.gz
tar -zxvf helm-v3.9.4-linux-amd64.tar.gz
sudo cp linux-amd64/helm /usr/local/bin/
helm version
0x02 添加Chart仓库
# 配置helm源地址
helm re... <a href="https://itho.cn/k8s/309.html">阅读全文</a>]]></description>
    <pubDate>Fri, 30 Jun 2023 15:33:46 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/309.html</guid>
</item>
<item>
    <title>Kubernetes(k8s)-ConfigMap&amp;Secret</title>
    <link>https://itho.cn/k8s/308.html</link>
    <description><![CDATA[0x01 ConfigMap
数据库连接地址，这种可能根据部署环境变化的，我们不应该写死在代码里。
Kubernetes 为我们提供了 ConfigMap，可以方便的配置一些变量。
apiVersion: v1
kind: Pod
metadata: name: my-app-pod
spec: containers: - name: my-app image: my-app-image env: # 使用 ConfigMap 中的 DB_HOST 和 DB_PORT 配置 - name: DB_HOST valueFrom: configMapKeyRef: name... <a href="https://itho.cn/k8s/308.html">阅读全文</a>]]></description>
    <pubDate>Wed, 28 Jun 2023 14:56:53 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/308.html</guid>
</item>
<item>
    <title>Docker常用命令总结</title>
    <link>https://itho.cn/docker/307.html</link>
    <description><![CDATA[0x00 前言
系统性地看完了《深入浅出Docker》这本干货，通俗易懂写得挺不错的。我现在对Docker的整个工作原理都有了一定的了解，并总结出了一些常用的命令，做下笔记备用。
0x01 容器
运行容器
docker run -d --restart=always --name nextcloud -p 80:80 -v /home/docker/nextcloud/:/var/www/html/ --link mysql nextcloud:latest
参数解释：
-d 后台运行容器返回容器id
--restart=always 自动启动相关容器
--name 运行容器的名称
-p 指定端口映射，格式为：主机(宿主)端口:容器端口
-v -v 挂... <a href="https://itho.cn/docker/307.html">阅读全文</a>]]></description>
    <pubDate>Tue, 27 Jun 2023 21:58:19 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/docker/307.html</guid>
</item>
<item>
    <title>解决Nginx反向代理ESXi后，ESXi控制台显示“无法连接”（开启Nginx对于WebSocket的支持）</title>
    <link>https://itho.cn/nginx/306.html</link>
    <description><![CDATA[0x01 故障描述
Nginx反向代理ESXi后，通过Web访问虚拟机控制台，显示无法连接。F12查看提示WebSocket connection to 'wss://xxxxxxx' failed。
0x02 解决方案
在反向配置中Nginx Location下添加如下代码： proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade;
这个的功能是开启nginx对于websocket的支持，esxi后台虚拟机控制台的图形化窗口就是通过websocket通信的，如果nginx不支持websocket，会导致无法使... <a href="https://itho.cn/nginx/306.html">阅读全文</a>]]></description>
    <pubDate>Sun, 25 Jun 2023 14:42:14 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/nginx/306.html</guid>
</item>
<item>
    <title>Kubernetes(k8s)-StatefulSet</title>
    <link>https://itho.cn/k8s/304.html</link>
    <description><![CDATA[0x01 什么是 StatefulSet
StatefulSet 是用来管理有状态的应用，例如数据库。
前面我们部署的应用，都是不需要存储数据，不需要记住状态的，可以随意扩充副本，每个副本都是一样的，可替代的。
而像数据库、Redis 这类有状态的，则不能随意扩充副本。
StatefulSet 会固定每个 Pod 的名字
0x02 部署 StatefulSet 类型的 Mongodb
1.创建mongo.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata: name: mongodb
spec: serviceName: mongodb replicas: 3 selector: matchLabel... <a href="https://itho.cn/k8s/304.html">阅读全文</a>]]></description>
    <pubDate>Tue, 20 Jun 2023 15:39:57 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/304.html</guid>
</item>
<item>
    <title>Kubernetes(k8s)-安装dashboard</title>
    <link>https://itho.cn/k8s/303.html</link>
    <description><![CDATA[0x01 下载yaml文件
下载合适自己版本的ymal文件，我这边k8s版本是1.23，所以合适的bashboard版本是v2.5.1
[root@master]# mkdir k8s-dashboard && cd k8s-dashboard
[root@master k8s-dashboard]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml
在Service中增加type: NodePort与nodePort: 32000
[root@master k8s-dashboard]# vi recommend... <a href="https://itho.cn/k8s/303.html">阅读全文</a>]]></description>
    <pubDate>Tue, 20 Jun 2023 13:59:12 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/303.html</guid>
</item>
<item>
    <title>RouterOS与云上VPC通过IPsec实现内网互通</title>
    <link>https://itho.cn/ros/302.html</link>
    <description><![CDATA[0x01 架构图
本地侧使用的设备是Mikrotik RB750gr3 RouterOSv6.49.8，云侧使用的是腾讯云。需要打通的是本地侧的172.16.0.0/16与云端10.206.0.0/16。
看了一整晚的教程，踩了很多坑，所以决定自己梳理下。 0x02 云侧网关&通道配置
1.新建VPN网关
名字随便起，所属网络选择你要打通内网的VPC。等待创建完成后你就会拿到一个公网IP，这个IP就是云侧VPN网关IP。 2.建立VPN通道
通信模式可选目的路由和SPD策略类型，我这边选择是SPD策略（本地网段填写10.206.0.0/16 对端网段填写172.16.0.0/16） 配置IKE和IPSec时请确保云侧配置和本地配置一致、相匹配，以防因两... <a href="https://itho.cn/ros/302.html">阅读全文</a>]]></description>
    <pubDate>Sun, 18 Jun 2023 04:36:35 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/ros/302.html</guid>
</item>
<item>
    <title>Kubernetes(k8s)-Service</title>
    <link>https://itho.cn/k8s/301.html</link>
    <description><![CDATA[0x01 特性
Service 通过 label 关联对应的 Pod
Servcie 生命周期不跟 Pod 绑定，不会因为 Pod 重创改变 IP
提供了负载均衡功能，自动转发流量到不同 Pod
可对集群外部提供访问端口
集群内部可通过服务名字访问 0x02 创建Service（默认为ClusterIP类型）
创建一个 Service，通过标签hellohttp跟对应的Pod关联上
service.yaml
apiVersion: v1
kind: Service
metadata: name: hellohttp
spec: selector: app: hellohttp   #这里一定要跟pod的标签对应上要不然关联不起来 type: Clust... <a href="https://itho.cn/k8s/301.html">阅读全文</a>]]></description>
    <pubDate>Fri, 16 Jun 2023 22:16:49 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/301.html</guid>
</item>
<item>
    <title>Kubernetes(k8s)-回退版本</title>
    <link>https://itho.cn/k8s/299.html</link>
    <description><![CDATA[0x01 发布新版本
1.更新版本
方式一：原先镜像为hellohttp:v1，使用kubectl apply -f app.yaml发布，创建一个新的镜像为hellohttp:v2-error，修改app.yaml中镜像地址为image: registry.cn-hangzhou.aliyuncs.com/myluzh/hellohttp:v2-error，然后重新使用kubectl apply -f app.yaml发布。
方式二：也可以直接通过命令修改镜像，--record 表示把这个命令记录到操作历史中
[root@master ~]# kubectl set image deployment hellohttp hellohttp=regis... <a href="https://itho.cn/k8s/299.html">阅读全文</a>]]></description>
    <pubDate>Fri, 16 Jun 2023 17:14:36 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/299.html</guid>
</item>
<item>
    <title>Kubernetes(k8s)-应用部署常用命令</title>
    <link>https://itho.cn/k8s/300.html</link>
    <description><![CDATA[kubectl apply -f app.yaml
kubectl get deployment
kubectl get pod -o wide
kubectl describe pod pod-name
kubectl logs pod-name
kubectl exec -it pod-name -- bash
kubectl scale deployment test-k8s --replicas=5
kubectl port-forward pod-name 8090:8080
kubectl rollout history deployment test-k8s
kubectl rollout undo deployment test-k8s... <a href="https://itho.cn/k8s/300.html">阅读全文</a>]]></description>
    <pubDate>Thu, 15 Jun 2023 16:40:00 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/300.html</guid>
</item>
<item>
    <title>Kubernetes(k8s)-Depolyment方式部署应用</title>
    <link>https://itho.cn/k8s/297.html</link>
    <description><![CDATA[0x01 命令行部署
[root@master ~]# kubectl run testapp --image=ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1
[root@master ~]# kubectl get pod
NAME      READY   STATUS              RESTARTS   AGE
testapp   0/1     ContainerCreating   0          16s
0x02 pod部署
1.编写pod.yaml
apiVersion: v1
kind: Pod
metadata: name: test-pod
spec: # 定义容器，... <a href="https://itho.cn/k8s/297.html">阅读全文</a>]]></description>
    <pubDate>Thu, 15 Jun 2023 15:48:35 +0800</pubDate>
    <dc:creator>myluzh</dc:creator>
    <guid>https://itho.cn/k8s/297.html</guid>
</item>
</channel>
</rss>