K8s Nacos集群部署脚本YAML:从翻车到稳跑,避坑指南

简介:这份资源面向需要在 Kubernetes 上部署 Nacos 集群的运维与开发人员,尤其适合刚接触 K8s 编排、希望跳过繁琐配置细节的初学者。它把 Nacos 集群部署拆解为按执行顺序排列的极简 YAML 脚本,覆盖数据库配置、Headless Service、StatefulSet、Service 以及 Ingress 等关键环节,让使用者按编号依次应用即可完成搭建,省去大量手工调试。压缩包共 6 个文件,以 5 个 yaml 清单为主,分别承担数据库连接、无头服务、有状态副本集、服务暴露与外部访问入口等职责,另附 1 个 txt 说明文件,整体仅约 3KB,轻量易读。目前已有 765 人学习下载,说明该方案在同类场景中具备一定参考价值。借助这套脚本,读者可以快速获得一套可复用的 Nacos on K8s 部署模板,理解各资源对象的先后依赖与配置要点,并在此基础上按自身环境调整存储、镜像与域名参数,减少从零编写清单的试错成本。

1. 从一份 k8s nacos 集群部署脚本说起:为什么手工搭总翻车

如果你正在把 Nacos 往 Kubernetes 上搬,大概率经历过这个场景:照着官方文档一条条kubectl apply,单机模式跑起来了,改成集群模式就各种诡异问题——节点互相发现不了、数据目录权限报错、MySQL 连不上、Pod 一直 CrashLoopBackOff。折腾一下午,最后发现是某个环境变量拼错了,或者 StatefulSet 的 headless service 名字对不上。这份 k8s nacos 集群部署脚本 yaml 就是冲着这个痛点来的:它把 Nacos 集群在 K8s 上跑起来需要的那一堆 Deployment、Service、ConfigMap、PVC 全部打包成可直接套用的 YAML 清单,你改几个参数就能落地。适合两类人:一是刚接触 K8s 但有 Nacos 使用经验的后端或运维,二是想把测试环境 Nacos 从单机迁到集群、又不想从头写编排文件的团队。下面我按实际拆包顺序,把这份资源怎么用、参数怎么调、坑在哪讲透。

2. 拆开这份 YAML 包:Nacos 集群在 K8s 上的编排逻辑

2.1 为什么 Nacos 集群在 K8s 上要用 StatefulSet 而不是 Deployment

Nacos 集群模式的核心是每个节点要有稳定的网络标识和独立的存储。Deployment 起的 Pod 名字是随机后缀,重启后 IP 和主机名都变,Nacos 节点之间靠nacos.member.list或者集群配置文件互相感知,名字一变就掉线。StatefulSet 给每个 Pod 固定序号(nacos-0、nacos-1、nacos-2),配合 headless service 提供稳定的 DNS 记录,节点发现才能稳。

这份脚本里 Nacos 用的是 StatefulSet,副本数默认 3。为什么是 3 不是 2?Nacos 集群的 Raft 协议需要奇数节点才能选举,2 个节点在脑裂时无法形成多数派。3 节点是生产最低配,能容忍 1 个节点挂掉。如果你只是测试,1 个节点也能跑,但那就不是集群了,退化成单机模式。

存储方面,每个 Nacos Pod 挂一个 PVC,用来存 derby 数据(如果没用外部 MySQL)和日志。脚本里 PVC 的 storageClassName 留了空,你需要根据自己集群的 StorageClass 填。常见做法是用 local-path 或者 nfs-client,云上就用云盘对应的 StorageClass。

2.2 集群配置文件与数据库选型:内嵌 derby 还是外接 MySQL

Nacos 集群模式有两种数据存储方案:内嵌 derby 和外接 MySQL。这份脚本默认走的是外接 MySQL,因为 derby 在集群模式下每个节点各存各的,数据不一致,只适合单机。集群必须用统一的外部数据库。

脚本里通过 ConfigMap 挂了一个application.properties,关键几行是:

spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://mysql-host:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai db.user.0=nacos db.password.0=nacos

这里db.url.0的mysql-host要换成你实际 MySQL 的 service 名或地址。serverTimezone必须设,否则 MySQL 8 会报时区错误。useSSL=false在集群内部通信可以关,省掉证书配置的麻烦。

数据库本身需要提前建好nacos_config库,并导入 Nacos 自带的mysql-schema.sql。这个 SQL 文件在 Nacos 发行包的conf目录下,脚本包里一般也会附一份。建表语句大概十几张表,主要是config_info、config_info_beta、his_config_info这些。

注意:MySQL 的字符集必须是 utf8mb4,排序规则用 utf8mb4_general_ci。用 utf8 会在存 emoji 或特殊字符时截断,Nacos 配置里如果有这类内容就会丢数据。

2.3 环境变量与 JVM 参数:内存怎么分、集群地址怎么写

Nacos 容器启动时通过环境变量控制 JVM 和集群行为。脚本里 StatefulSet 的 env 段大概长这样:

env: - name: MODE value: "cluster" - name: NACOS_SERVERS value: "nacos-0.nacos-headless.default.svc.cluster.local:8848 nacos-1.nacos-headless.default.svc.cluster.local:8848 nacos-2.nacos-headless.default.svc.cluster.local:8848" - name: JVM_XMS value: "512m" - name: JVM_XMX value: "512m" - name: JVM_XMN value: "256m" - name: MYSQL_SERVICE_HOST value: "mysql-host" - name: MYSQL_SERVICE_PORT value: "3306" - name: MYSQL_SERVICE_DB_NAME value: "nacos_config" - name: MYSQL_SERVICE_USER value: "nacos" - name: MYSQL_SERVICE_PASSWORD value: "nacos"

MODE=cluster是必须的,不设就按单机跑。NACOS_SERVERS里每个节点用 headless service 的完整域名,格式是<pod-name>.<service-name>.<namespace>.svc.cluster.local:<port>。namespace 要换成你实际部署的命名空间,脚本里默认是 default。

JVM 参数按节点规格调。512m 堆内存适合测试,生产建议 2g 起步。JVM_XMN是新生代大小,一般是 XMX 的 1/2 到 1/4。设太小会导致频繁 Young GC,设太大老年代不够用。我一般按 XMX 的 1/2 设,比如 XMX=2g 就设 XMN=1g。

2.4 Service 与 Ingress:客户端怎么访问、控制台怎么暴露

脚本里有两个 Service:一个是 headless service(clusterIP: None),给 StatefulSet 内部通信用;另一个是普通 ClusterIP service,给集群内其他服务访问 Nacos 用。如果你要从集群外访问 Nacos 控制台,需要额外配 Ingress 或者 NodePort。

headless service 的定义:

apiVersion: v1 kind: Service metadata: name: nacos-headless spec: clusterIP: None selector: app: nacos ports: - name: server port: 8848 targetPort: 8848 - name: grpc port: 9848 targetPort: 9848

注意 9848 端口。Nacos 2.x 新增了 gRPC 通信端口,是主端口 +1000。如果只开 8848 不开 9848,客户端 2.x 版本连不上,会报Client not connected或者一直重连。这是从 1.x 升 2.x 最容易踩的坑。

普通 service 就是把 headless 的 selector 复用,去掉clusterIP: None,给个 ClusterIP。Ingress 部分脚本里可能没带,需要你自己加,指向这个普通 service 的 8848 端口。

3. 从零到跑起来:部署步骤与参数调优

3.1 前置准备:命名空间、MySQL、StorageClass 三件事

在 apply 任何 YAML 之前,先把三样东西准备好。

第一,命名空间。脚本里资源都写在 default 下,生产建议单独建一个:

kubectl create namespace nacos

然后所有 YAML 里的 namespace 字段改成 nacos,或者 apply 时加-n nacos。

第二,MySQL。可以用 K8s 里的 MySQL,也可以用外部 RDS。如果用 K8s 里的,先起一个 MySQL StatefulSet 或者用 Helm 装一个。建库和导表:

CREATE DATABASE nacos_config DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

然后导入 Nacos 的mysql-schema.sql。导入完检查一下表数量,正常是 12 张左右。

第三,StorageClass。查一下集群里有哪些:

kubectl get storageclass

记下可用的名字,填到 YAML 里 PVC 的storageClassName字段。如果没有 StorageClass,PVC 会一直 Pending,Pod 起不来。

3.2 逐条 apply:StatefulSet、Service、ConfigMap 的部署顺序

顺序有讲究。先 ConfigMap,再 Service,最后 StatefulSet。因为 StatefulSet 里的 Pod 启动时要挂 ConfigMap,要连 Service 的 DNS,顺序反了会多等几轮重试。

# 1. 创建配置 kubectl apply -f nacos-configmap.yaml # 2. 创建 service kubectl apply -f nacos-service.yaml # 3. 创建 statefulset kubectl apply -f nacos-statefulset.yaml

apply 完看 Pod 状态:

kubectl get pods -l app=nacos -w

正常会看到 nacos-0、nacos-1、nacos-2 依次变成 Running。StatefulSet 默认是串行启动,nacos-0 没 Ready 之前不会起 nacos-1。这是为了避免集群初始化时多个节点同时抢主。

如果 Pod 一直 Pending,看 Events:

kubectl describe pod nacos-0

常见原因是 PVC 没绑定,或者资源不够调度。

3.3 验证集群状态:日志里看什么、控制台怎么确认

Pod 都 Running 之后,先看日志确认集群组建成功:

kubectl logs nacos-0 | grep -i "cluster"

正常会看到类似Nacos started successfully in cluster mode和Server is STARTED的输出。如果看到java.net.ConnectException或者No route to host,说明节点之间网络不通,检查 headless service 和 NACOS_SERVERS 配置。

然后进控制台验证。端口转发一下:

kubectl port-forward svc/nacos 8848:8848

浏览器打开http://localhost:8848/nacos,默认账号密码都是 nacos。进「集群管理」→「节点列表」,应该看到三个节点,状态都是 UP。如果只看到一个或者有节点是 DOWN,去那个节点的日志里找原因。

再验证配置管理功能。新建一个配置,然后在另一个节点上查,能查到说明数据库共享正常。如果查不到,说明数据库配置有问题,或者各节点连的不是同一个库。

3.4 资源限制与副本数调整:生产环境怎么配

测试环境 512m 堆内存够用,生产要往上调。参考配置:

节点规格JVM_XMSJVM_XMXJVM_XMN副本数
2C4G1g1g512m3
4C8G2g2g1g3
8C16G4g4g2g3 或 5

副本数不是越多越好。3 个节点能容忍 1 个挂,5 个能容忍 2 个挂,但节点越多 Raft 选举越慢,配置同步延迟越大。一般 3 个够用,除非有跨机房容灾需求。

资源限制在 StatefulSet 的resources段设:

resources: requests: memory: "2Gi" cpu: "500m" limits: memory: "4Gi" cpu: "2"

requests 是调度依据,limits 是硬上限。JVM 堆内存要小于 limits 的 memory,留出堆外内存和系统开销。比如 limits 设 4Gi,JVM_XMX 最多设 3g,剩下 1g 给 Metaspace、线程栈、Direct Buffer 这些。

4. 避坑指南:Nacos on K8s 最常见的五个翻车现场

4.1 Pod 一直 CrashLoopBackOff,日志报数据库连接失败

现象:Pod 起来几秒就退出,kubectl logs看到Communications link failure或者Access denied for user。

原因:MySQL 地址、端口、账号密码配错了,或者 MySQL 还没就绪 Nacos 就启动了。

解决:先确认 MySQL 本身能连。在集群里起一个临时 Pod:

kubectl run mysql-test --rm -it --image=mysql:8 -- mysql -h mysql-host -u nacos -p

能连上再检查 Nacos 的 ConfigMap 里db.url.0的地址是不是写成了localhost。在 K8s 里 localhost 指的是 Pod 自己,不是宿主机,必须写 MySQL 的 service 名或者完整域名。

4.2 集群节点列表只显示一个节点

现象:控制台集群管理里只有一个节点,其他两个没注册上。

原因:NACOS_SERVERS环境变量里的域名解析不了,或者 headless service 没建对。

解决:进 Pod 里测 DNS:

kubectl exec -it nacos-0 -- nslookup nacos-1.nacos-headless.default.svc.cluster.local

如果解析失败,检查 headless service 的 selector 是否匹配 Pod 标签,以及 service 的 namespace 和 Pod 是否一致。另外确认NACOS_SERVERS里的端口是 8848 不是 9848。

4.3 客户端 2.x 版本连不上,报 Client not connected

现象:应用用 Nacos 2.x 客户端,启动时报Client not connected, current status: STARTING,一直重试。

原因:Nacos 2.x 需要 gRPC 端口 9848,Service 或者防火墙没开这个端口。

解决:检查 headless service 和普通 service 的 ports 段,确保有 9848 的映射。如果是 NodePort 方式暴露,客户端配置的端口要对应 NodePort,不是 8848。另外 9848 是主端口 +1000,如果你改了主端口,gRPC 端口也要跟着改。

4.4 PVC 一直 Pending,Pod 调度不上去

现象:kubectl get pvc看到 PVC 状态是 Pending,Pod 也 Pending。

原因:没有可用的 StorageClass,或者 StorageClass 的 provisioner 有问题。

解决:kubectl get storageclass看有没有默认的。如果没有,装一个 local-path-provisioner 或者 nfs-client-provisioner。如果有但 PVC 还是 Pending,看 provisioner 的 Pod 日志,通常是权限或者网络问题。临时测试可以用hostPath代替 PVC,但不建议生产用。

4.5 配置修改后不同节点生效时间不一致

现象:在节点 A 改了配置,节点 B 上查还是旧值,等几秒才同步。

原因:Nacos 集群间配置同步有延迟,正常现象。但如果延迟超过 10 秒,说明节点间通信有问题。

解决:先确认是延迟还是不同步。等 30 秒再查,如果还是旧值,就是真不同步了。检查各节点连的数据库是不是同一个,以及 Raft 状态是否正常。在日志里搜raft关键字,看有没有选举异常。如果某个节点一直选不上主,检查它的系统时间是否和其他节点一致,时间偏差过大会导致 Raft 心跳超时。

5. 进阶:用 Helm 管理 Nacos 集群与版本升级的稳妥路径

YAML 脚本适合首次部署和理解结构,但长期维护建议上 Helm。Nacos 官方有 Helm chart,社区也有维护版本。用 Helm 的好处是版本升级、参数覆盖、回滚都方便。

安装命令大概是这样:

helm repo add nacos https://nacos.io/helm helm install nacos nacos/nacos \ --namespace nacos \ --set mode=cluster \ --set replicaCount=3 \ --set database.type=mysql \ --set database.host=mysql-host \ --set database.port=3306 \ --set database.name=nacos_config \ --set database.user=nacos \ --set database.password=nacos

升级的时候改 values 再helm upgrade,比手动改 YAML 再 apply 安全。回滚用helm rollback,一条命令回到上个版本。

但 Helm 不是银弹。chart 里的模板有时候会覆盖你的自定义配置,尤其是 ConfigMap 部分。我一般会先把 chart 渲染成 YAML 看一眼:

helm template nacos nacos/nacos --namespace nacos > rendered.yaml

确认渲染结果符合预期再 install。升级前也先helm diff看变更内容,避免意外覆盖。

版本升级的稳妥路径:先在小集群验证,确认新版本和你的客户端兼容。Nacos 1.x 升 2.x 要注意 gRPC 端口和客户端版本,2.x 客户端连 1.x 服务端会报错。升级时逐个节点滚动,不要一次性全停。StatefulSet 的podManagementPolicy设成OrderedReady可以保证顺序,但升级会慢一些。设成Parallel快但风险高,生产不建议。

从那以后我每次部署 Nacos 集群,都先把 headless service 和 9848 端口检查一遍,再确认 MySQL 字符集是 utf8mb4,最后才 apply StatefulSet。这三步走完,基本不会再遇到 CrashLoop 或者节点注册不上的问题。希望帮到你。

本文还有配套的精品资源,点击获取

相关新闻

WPF多行表头实战:Telerik RadGridView三层嵌套实现与动态交互

WPF多行表头实战:Telerik RadGridView三层嵌套实现与动态交互

简介&#xff1a;本资源是一个面向WPF开发者的技术实践项目&#xff0c;聚焦于使用Telerik UI for WPF控件库实现DataGrid多行&#xff08;多级&#xff09;表头的完整可运行示例&#xff0c;适用于中初级WPF开发人员学习高级表格布局与数据展示技巧&#xff0c;尤其适合需在报…

2026/10/20 12:13:07 阅读更多 →
网络安全运维十大核心操作:从救火到预防的实战指南

网络安全运维十大核心操作:从救火到预防的实战指南

网络安全运维一直是被误解最深的岗位&#xff0c;很多新人以为这份工作就是装个防火墙、装个杀毒软件&#xff0c;剩下的时间喝喝茶。真上手之后才发现&#xff0c;白天被各种合规检查追着跑&#xff0c;半夜被告警电话叫起来重启服务&#xff0c;第二天还要顶着黑眼圈写复盘报…

2026/10/20 12:13:07 阅读更多 →
Emmet实战指南:用一行缩写生成HTML/CSS,前端效率翻倍

Emmet实战指南:用一行缩写生成HTML/CSS,前端效率翻倍

1. 为什么要掌握Emmet&#xff1a;我亲历的一次惨痛对比先讲一个我真实的开发片段。前几年在公司写一个后台管理系统的列表页&#xff0c;数据表格要渲染七八列&#xff0c;每列还有筛选条件、排序按钮、操作按钮&#xff0c;外加表头工具栏和批量操作区。我当时的习惯是一个标…

2026/10/20 12:13:07 阅读更多 →

最新新闻

Spring Boot社区在线问诊系统实战:从需求到部署的完整技术拆解

Spring Boot社区在线问诊系统实战:从需求到部署的完整技术拆解

最近后台经常有人问社区家庭医生在线问诊系统怎么做&#xff0c;正好我前阵子完整跟过一个类似项目&#xff0c;从需求梳理到部署上线走了不少弯路。我干脆把这套系统的技术拆解和踩坑记录整理成一篇长文&#xff0c;一方面给自己做个复盘&#xff0c;另一方面给正在做毕业设计…

2026/10/20 13:09:01 阅读更多 →
Git克隆Demo代码仓库实战:从地址到跑通全流程

Git克隆Demo代码仓库实战:从地址到跑通全流程

1. 拿到仓库地址后&#xff0c;先别急着敲命令很多同学第一次接触代码仓库时&#xff0c;最容易犯的毛病就是&#xff1a;复制了地址&#xff0c;打开终端&#xff0c;直接输入git clone&#xff0c;回车&#xff0c;然后开始疯狂刷新浏览器看着进度条发呆。如果仓库小&#xf…

2026/10/20 13:09:01 阅读更多 →
OpenHarmony设备上Flutter淡出过渡动画移植实战与性能优化

OpenHarmony设备上Flutter淡出过渡动画移植实战与性能优化

上个月我把一个原本跑在标准Flutter环境里的页面过渡动画方案移植到OpenHarmony设备上&#xff0c;遇到的第一个问题倒不是动画本身&#xff0c;而是animations 这个官方维护的三方动画库直接编译不过。项目里本来打算用它实现页面切换时的淡出过渡效果&#xff0c;想着省一笔自…

2026/10/20 13:09:01 阅读更多 →
轻量级技能管理方案:从零搭建可量化可组合的技能表

轻量级技能管理方案:从零搭建可量化可组合的技能表

1. 从“skills”这个词说起&#xff1a;它到底指什么“skills”这个词看起来简单&#xff0c;但放在不同语境里&#xff0c;指向完全不同。做招聘的人看到它&#xff0c;想到的是岗位能力模型&#xff1b;做在线教育的人看到它&#xff0c;想到的是课程标签体系&#xff1b;做开…

2026/10/20 13:09:01 阅读更多 →
企业级RAG问答系统实战:知识库、检索链路与大模型应用的完整落地指南

企业级RAG问答系统实战:知识库、检索链路与大模型应用的完整落地指南

做了将近半年的基于大模型的智能问答系统&#xff0c;上线之后我最大的感受是&#xff1a;**决定这套系统好不好用的&#xff0c;往往不是大模型本身&#xff0c;而是知识库和检索链路。**模型答得再聪明&#xff0c;检索不到对的资料&#xff0c;它也只能一本正经地编。我们做…

2026/10/20 13:09:01 阅读更多 →
GraphRAG工程实践:知识图谱如何补足向量检索的推理短板

GraphRAG工程实践:知识图谱如何补足向量检索的推理短板

向量检索失效的那一刻&#xff0c;我才决定认真搞GraphRAG年初做过一个企业内部制度问答系统&#xff0c;刚开始用的是经典的向量库RAG方案&#xff1a;文档切块、embedding、top-k召回、拼prompt喂给大模型。原型阶段跑得很顺&#xff0c;演示的时候领导问了一个问题——"…

2026/10/20 13:08:00 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →