<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>编程技术 on 老约翰的生活</title><link>https://doc.jihw.top/coding/</link><description>Recent content in 编程技术 on 老约翰的生活</description><generator>Hugo</generator><language>zh</language><lastBuildDate>Wed, 17 Jun 2026 11:00:00 +0800</lastBuildDate><atom:link href="https://doc.jihw.top/coding/index.xml" rel="self" type="application/rss+xml"/><item><title>QNAP NAS 使用 Docker 部署 Jellyfin</title><link>https://doc.jihw.top/coding/docker-jellyfin-qnap/</link><pubDate>Wed, 17 Jun 2026 11:00:00 +0800</pubDate><guid>https://doc.jihw.top/coding/docker-jellyfin-qnap/</guid><description>记录在 QNAP NAS 上使用 Docker Compose 部署固定版本 Jellyfin 的完整流程，包括目录规划、Container Station、硬件转码、反向代理、升级、备份和卸载。</description></item><item><title>使用 Docker 部署 Harbor 镜像仓库</title><link>https://doc.jihw.top/coding/docker-harbor/</link><pubDate>Wed, 17 Jun 2026 10:00:00 +0800</pubDate><guid>https://doc.jihw.top/coding/docker-harbor/</guid><description>记录在 Linux 主机上使用 Docker 部署 Harbor 的方式，说明 docker run 的边界，并给出官方推荐的 Docker Compose 安装、验证、维护和卸载流程。</description></item><item><title>离线安装 Kubernetes 三主节点高可用集群</title><link>https://doc.jihw.top/coding/k8s-offline-ha-install/</link><pubDate>Tue, 16 Jun 2026 10:00:00 +0800</pubDate><guid>https://doc.jihw.top/coding/k8s-offline-ha-install/</guid><description>记录在内网离线环境中使用 kubeadm 安装 Kubernetes 三主节点高可用集群的完整步骤，包括离线包准备、镜像导入、HAProxy、Keepalived、初始化、验证、备份和卸载。</description></item><item><title>搭建 Kuboard v3 Kubernetes 控制面板</title><link>https://doc.jihw.top/coding/kuboard-v3-control-panel/</link><pubDate>Sun, 07 Jun 2026 10:00:00 +0800</pubDate><guid>https://doc.jihw.top/coding/kuboard-v3-control-panel/</guid><description>记录 Kuboard v3 控制面板的部署步骤，并说明集群外部署、集群内部署以及 Kuboard 与 Kubernetes 集群高可用之间的关系。</description></item><item><title>Ubuntu 虚拟机使用 Docker 安装固定版本 PostgreSQL</title><link>https://doc.jihw.top/coding/docker-postgresql-ubuntu/</link><pubDate>Sat, 06 Jun 2026 00:00:00 +0800</pubDate><guid>https://doc.jihw.top/coding/docker-postgresql-ubuntu/</guid><description>记录在 Ubuntu 虚拟机中使用 Docker Compose 部署固定版本 PostgreSQL 的完整流程，避免 latest 或浮动大版本标签带来的不可控升级。</description></item><item><title>GitLab 接入 SonarQube 做前端代码质量检测</title><link>https://doc.jihw.top/coding/gitlab-sonarqube-ci/</link><pubDate>Fri, 05 Jun 2026 16:50:00 +0800</pubDate><guid>https://doc.jihw.top/coding/gitlab-sonarqube-ci/</guid><description>记录 GitLab 和 SonarQube 安装完成后，如何把前端项目接入 GitLab CI，并在流水线中执行 SonarQube 代码质量扫描。</description></item><item><title>Kubernetes 添加 Worker 节点并切换 VMXNET3</title><link>https://doc.jihw.top/coding/k8s-add-workers-vmxnet3/</link><pubDate>Thu, 04 Jun 2026 15:30:00 +0800</pubDate><guid>https://doc.jihw.top/coding/k8s-add-workers-vmxnet3/</guid><description>记录把 192.168.3.218、192.168.3.219、192.168.3.220 三台 VMware 虚拟机切换到 VMXNET3，并加入现有 Kubernetes 集群作为 worker 节点的步骤。</description></item><item><title>Kubernetes 部署 GitLab 代码托管平台</title><link>https://doc.jihw.top/coding/k8s-gitlab/</link><pubDate>Wed, 03 Jun 2026 18:52:00 +0800</pubDate><guid>https://doc.jihw.top/coding/k8s-gitlab/</guid><description>在 Kubernetes 集群中部署 GitLab，并说明它如何与 SonarQube 配合做代码托管、CI 流水线和代码质量检测。</description></item><item><title>Kubernetes 部署 SonarQube 代码检测平台</title><link>https://doc.jihw.top/coding/k8s-sonarqube/</link><pubDate>Wed, 03 Jun 2026 17:30:00 +0800</pubDate><guid>https://doc.jihw.top/coding/k8s-sonarqube/</guid><description>在 Kubernetes 集群中部署 SonarQube Community Build，用于代码质量检测、漏洞扫描、重复代码检查和质量门禁。</description></item><item><title>Headlamp 基本使用：查看资源和扩缩容</title><link>https://doc.jihw.top/coding/headlamp-basic-usage/</link><pubDate>Wed, 03 Jun 2026 11:15:00 +0800</pubDate><guid>https://doc.jihw.top/coding/headlamp-basic-usage/</guid><description>Headlamp 可视化面板的基本使用笔记，重点记录如何查看 Kubernetes 资源、排查 Pod 状态，以及通过 Deployment 或 StatefulSet 做扩缩容。</description></item><item><title>Kubernetes 从 Flannel 切换到 Calico</title><link>https://doc.jihw.top/coding/k8s-flannel-to-calico/</link><pubDate>Wed, 03 Jun 2026 09:13:47 +0800</pubDate><guid>https://doc.jihw.top/coding/k8s-flannel-to-calico/</guid><description>记录一次 Kubernetes 网络插件从 Flannel 切换到 Calico 的真实过程，包括备份、安装、Longhorn 恢复、业务恢复、监控恢复和最终验证。</description></item><item><title>Kubernetes 集群架构总览</title><link>https://doc.jihw.top/coding/k8s-architecture-guide/</link><pubDate>Tue, 02 Jun 2026 20:35:00 +0800</pubDate><guid>https://doc.jihw.top/coding/k8s-architecture-guide/</guid><description>面向初学者解释当前 Kubernetes 集群整体架构，包括三主节点、入口高可用、Ingress、存储、new-api、PostgreSQL、Redis、监控和平台组件。</description></item><item><title>Kubernetes 高可用实践记录</title><link>https://doc.jihw.top/coding/k8s-high-availability/</link><pubDate>Mon, 01 Jun 2026 22:05:59 +0800</pubDate><guid>https://doc.jihw.top/coding/k8s-high-availability/</guid><description>记录 Kubernetes 高可用建设过程，包括三主控制面、VMware 网卡故障、Keepalived、HAProxy、服务高可用、数据库高可用和存储高可用。</description></item><item><title>k8s-new-api QPS 压测</title><link>https://doc.jihw.top/coding/k8s-new-api-benchmark/</link><pubDate>Mon, 01 Jun 2026 16:45:00 +0800</pubDate><guid>https://doc.jihw.top/coding/k8s-new-api-benchmark/</guid><description>记录在 Kubernetes 集群中对 new-api 做 QPS 压测的完整过程，包括外部域名压测、集群内 Service 压测、Grafana 观察指标和结果记录。</description></item><item><title>k8s-Prometheus 和 Grafana 监控</title><link>https://doc.jihw.top/coding/k8s-prometheus-grafana/</link><pubDate>Mon, 01 Jun 2026 14:10:00 +0800</pubDate><guid>https://doc.jihw.top/coding/k8s-prometheus-grafana/</guid><description>在 Kubernetes 集群中使用 kube-prometheus-stack 安装 Prometheus、Grafana、Alertmanager，并通过 ingress-nginx、MetalLB、cert-manager 暴露 Grafana。</description></item><item><title>k8s-Headlamp 可视化面板</title><link>https://doc.jihw.top/coding/headlamp/</link><pubDate>Mon, 01 Jun 2026 13:12:06 +0800</pubDate><guid>https://doc.jihw.top/coding/headlamp/</guid><description>在 Kubernetes 集群中安装 Headlamp 可视化面板，并通过 ingress-nginx、MetalLB、cert-manager 暴露 HTTPS 访问。</description></item><item><title>K8s Longhorn</title><link>https://doc.jihw.top/coding/k8s-longhorn/</link><pubDate>Fri, 29 May 2026 15:18:54 +0800</pubDate><guid>https://doc.jihw.top/coding/k8s-longhorn/</guid><description>&lt;p&gt;Longhorn 是一个 &lt;strong&gt;Kubernetes 原生分布式块存储系统&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;你可以把它理解成：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;把每个节点上的本地磁盘组合成一个分布式存储池
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;PVC 创建出来后，Longhorn 会给这个卷做多个副本
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;某个节点挂了，只要还有副本，卷还能在其他节点重新挂载
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;它比 NFS 更适合你现在的目标，因为你想要高可用。&lt;/p&gt;
&lt;p&gt;不过先说明：Longhorn 做的是 &lt;strong&gt;存储层高可用&lt;/strong&gt;，不是数据库自动主从。&lt;br&gt;
比如 PostgreSQL 用一个 Longhorn PVC，Longhorn 可以保证磁盘卷有多个副本；但同一时刻这个卷还是通常只挂到一个 PostgreSQL Pod。PostgreSQL 自身高可用以后可以再用 CloudNativePG。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="longhorn-前提要求"&gt;Longhorn 前提要求&lt;/h2&gt;
&lt;p&gt;Longhorn 官方要求每个节点满足：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Kubernetes &amp;gt;= 1.25
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;containerd 可用
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;每个节点安装 open-iscsi，并运行 iscsid
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;RWX 支持需要 NFSv4 client
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;节点文件系统支持 ext4 或 XFS
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Longhorn 组件需要 privileged/root 权限
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;你的环境是 Ubuntu 22.04 + kubeadm，适合安装。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一三台节点都安装依赖"&gt;一、三台节点都安装依赖&lt;/h2&gt;
&lt;p&gt;在三台节点都执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install -y open-iscsi nfs-common jq curl util-linux
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;启用 iSCSI：&lt;/p&gt;</description></item><item><title>K8s New Api</title><link>https://doc.jihw.top/coding/k8s-new-api/</link><pubDate>Fri, 29 May 2026 14:34:52 +0800</pubDate><guid>https://doc.jihw.top/coding/k8s-new-api/</guid><description>&lt;p&gt;漂亮，&lt;code&gt;nginx Ingress&lt;/code&gt; 已经通了。下一步我们做 &lt;strong&gt;new-api 部署前准备&lt;/strong&gt;，目标是先把 K8s 的运维基础补齐，再验证它能访问你已有的 PostgreSQL 和 Redis。&lt;/p&gt;
&lt;p&gt;接下来分 4 步：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;1. 安装 metrics-server
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;2. 创建 new-api namespace
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;3. 准备 Secret / ConfigMap
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;4. 用临时 Pod 测试 PostgreSQL 和 Redis 连通性
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;1. 安装 metrics-server&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;作用：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;metrics-server 用来采集节点和 Pod 的 CPU、内存指标。
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;安装后才能用 kubectl top nodes / kubectl top pods。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.8.1/components.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;家庭自建 kubeadm 集群里，metrics-server 经常因为 kubelet 证书问题启动失败。先检查：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get pods -n kube-system | grep metrics
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果 Running，直接测试：&lt;/p&gt;</description></item><item><title>Ubuntu Getting Started</title><link>https://doc.jihw.top/coding/ubuntu-getting-started/</link><pubDate>Thu, 28 May 2026 20:25:43 +0800</pubDate><guid>https://doc.jihw.top/coding/ubuntu-getting-started/</guid><description>&lt;h2 id="ssh配置"&gt;ssh配置&lt;/h2&gt;
&lt;h3 id="安装openssh-server"&gt;安装openssh-server&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 安装后会自动开启服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install -y openssh-server
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 查看状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl status ssh
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl start ssh
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl enable ssh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="ssh免密登录"&gt;ssh免密登录&lt;/h3&gt;
&lt;p&gt;在控制服务器操作的电脑上，执行以下命令&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-PowerShell" data-lang="PowerShell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd C:\Users\Rx\.ssh
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ssh-keygen -t rsa -b &lt;span style="color:#ae81ff"&gt;4096&lt;/span&gt; -C &lt;span style="color:#e6db74"&gt;&amp;#34;你的注释，比如：win11-to-ubuntu-vm&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 查看公钥&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat C:\Users\Rx/.ssh/id_ed25519.pub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-t rsa&lt;/code&gt;：指定密钥类型为 RSA&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-b 4096&lt;/code&gt;：指定密钥长度为 4096 位（更安全）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-C&lt;/code&gt;：添加注释，帮助识别这个密钥的用途&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在ubuntu上操作&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 创建 .ssh 目录（如果不存在）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir -p ~/.ssh
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 设置正确的权限&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;chmod &lt;span style="color:#ae81ff"&gt;700&lt;/span&gt; ~/.ssh
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 将公钥添加到授权文件，必须是完整的字符串&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;秘钥&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; ~/.ssh/authorized_keys
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 设置授权文件权限&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;chmod &lt;span style="color:#ae81ff"&gt;600&lt;/span&gt; ~/.ssh/authorized_keys
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在win11上操作&lt;/p&gt;</description></item><item><title>K8s入门教程</title><link>https://doc.jihw.top/coding/k8s-getting-started/</link><pubDate>Thu, 28 May 2026 17:52:06 +0800</pubDate><guid>https://doc.jihw.top/coding/k8s-getting-started/</guid><description>&lt;h2 id="三主节点高可用"&gt;三主节点高可用&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;3 台机器全部做 control-plane
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;3 个 etcd 组成 stacked etcd
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;HAProxy + Keepalived 提供 API Server 虚拟 IP
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;containerd 作为容器运行时
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;规划：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;192.168.3.214 k8s-master1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;192.168.3.215 k8s-master2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;192.168.3.216 k8s-master3
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;192.168.3.217 k8s-vip
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;API 入口用：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;192.168.3.217:8443
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;不用 &lt;code&gt;6443&lt;/code&gt; 是因为 HAProxy 和 kube-apiserver 都在同一批机器上，避免端口冲突。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="快捷部署脚本版"&gt;快捷部署（脚本版）&lt;/h2&gt;
&lt;p&gt;如果你想先快速把三主节点 HA 集群跑起来，可以直接用我整理好的脚本。脚本放在仓库的 &lt;code&gt;static/k8s&lt;/code&gt; 目录，站点发布后访问路径是 &lt;code&gt;/k8s/脚本名&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;脚本默认使用这组地址：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;192.168.3.214 k8s-master1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;192.168.3.215 k8s-master2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;192.168.3.216 k8s-master3
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;192.168.3.217 k8s-vip
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Kubernetes: v1.36
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;API 入口: 192.168.3.217:8443
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果 IP、VIP、Kubernetes 版本不一样，先改 &lt;code&gt;k8s_env.sh&lt;/code&gt;，或者执行脚本时通过环境变量覆盖：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;MASTER1_IP&lt;span style="color:#f92672"&gt;=&lt;/span&gt;192.168.3.214 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;MASTER2_IP&lt;span style="color:#f92672"&gt;=&lt;/span&gt;192.168.3.215 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;MASTER3_IP&lt;span style="color:#f92672"&gt;=&lt;/span&gt;192.168.3.216 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;VIP_IP&lt;span style="color:#f92672"&gt;=&lt;/span&gt;192.168.3.217 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;K8S_VERSION&lt;span style="color:#f92672"&gt;=&lt;/span&gt;v1.36 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bash k8s_prepare.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="1-下载脚本"&gt;1. 下载脚本&lt;/h3&gt;
&lt;p&gt;如果你在这份文档仓库里，可以直接进入脚本目录：&lt;/p&gt;</description></item><item><title>Cloudflare 临时邮箱搭建记录</title><link>https://doc.jihw.top/coding/temp-mail/</link><pubDate>Mon, 25 May 2026 15:15:03 +0800</pubDate><guid>https://doc.jihw.top/coding/temp-mail/</guid><description>记录使用 Cloudflare Workers、D1、KV、Email Routing 和 Pages 搭建临时邮箱服务的完整流程。</description></item><item><title>Docker 入门：Ubuntu 安装与基础配置</title><link>https://doc.jihw.top/coding/docker-getting-started/</link><pubDate>Fri, 22 May 2026 15:43:46 +0800</pubDate><guid>https://doc.jihw.top/coding/docker-getting-started/</guid><description>记录 Ubuntu 环境下 Docker 的安装准备、官方 apt 仓库配置、安装命令和基础验证步骤。</description></item><item><title>SSH 免密登录：Windows 连接 Ubuntu 配置指南</title><link>https://doc.jihw.top/coding/ssh-key-login/</link><pubDate>Wed, 20 May 2026 17:22:41 +0800</pubDate><guid>https://doc.jihw.top/coding/ssh-key-login/</guid><description>记录在 Windows 11 上生成 SSH 密钥、配置 Ubuntu 服务器并实现免密登录的步骤。</description></item><item><title>Hugo 入门：Windows 环境安装与本地运行</title><link>https://doc.jihw.top/coding/hugo-setup/</link><pubDate>Wed, 20 May 2026 15:40:17 +0800</pubDate><guid>https://doc.jihw.top/coding/hugo-setup/</guid><description>介绍 Hugo 在 Windows 环境下的安装、站点创建、本地启动和基础使用流程。</description></item></channel></rss>