Kubernetes 集群中 CoreDNS 的部署与配置:从 kube-dns 平滑迁移的完整指南
教程云原生容器编排【免费下载链接】kubernetes-handbookKubernetes 架构与生态从云原生到 AI 原生基础设施的构建指南项目地址https://gitcode.com/gh_mirrors/ku/kubernetes-handbook点击查看免费下载CoreDNS 是 CNCF 托管的开源 DNS 服务器可作为 Kubernetes 集群的标准 DNS 插件运行实现 Kubernetes DNS-Based Service Discovery 规范所定义的域名解析能力。本文基于当前仓库中 practice/coredns.md 的部署方案结合仓库内 manifests/coredns 目录下的官方部署脚本与 manifest 模板源码完整讲解如何在使用 kube-dns 的既有集群中生成并部署 CoreDNS、如何安全地移除 kube-dns以及部署后如何验证与排查 DNS 解析问题帮助你掌握一条可复制、可回退的平滑迁移路径。CoreDNS 与 kube-dns为什么需要迁移在 Kubernetes 集群中DNS 组件承担着服务注册与发现的核心职责通过将 Service 注册到 DNS集群内的 Pod 可以直接使用服务名如my-svc.my-namespace.svc.cluster.local访问其他服务无需关心后端的 ClusterIP 与端点变化。仓库文档 practice/dns-installation.md 明确指出DNS 是服务注册和发现的一个必要组件通常是在集群安装完成后部署的第一个容器化应用。传统上集群默认使用kube-dns插件其 Pod 内含三个容器kubedns监听 Kubernetes master 中 Service 和 Endpoint 的变化维护内存查找结构来服务 DNS 请求dnsmasq提供 DNS 缓存以提升解析性能sidecar提供单一健康检查端点监听 10054 端口对dnsmasq和kubedns执行双重健康检查。而 CoreDNS 作为 CNCF 托管项目用单一二进制进程即可同时承担区域数据读取、缓存、上游代理与指标暴露等全部职责架构更简单。在 Kubernetes 1.9 版本中使用 kubeadm 方式安装的集群可以通过kubeadm init --feature-gatesCoreDNStrue直接启用 CoreDNS详见 practice/configuring-dns.md对于已经运行 kube-dns 的存量集群则可以采用本文介绍的方式平滑替换。CoreDNS 作为 Kubernetes 插件运行时会从 Kubernetes 集群中读取区zone数据完整实现 Kubernetes DNS-Based Service Discovery 规范定义的 A 记录、SRV 记录、PTR 反向解析等能力包括 Service 域名my-svc.my-namespace.svc.cluster.local、命名端口 SRV 记录_my-port-name._my-port-protocol.my-svc.my-namespace.svc.cluster.local、Pod 域名pod-ip.my-namespace.pod.cluster.local等解析规则。部署前的准备两份关键文件部署 CoreDNS 需要两份官方文件它们已随仓库放入manifests/coredns目录文件作用manifests/coredns/deploy.sh用于在已运行 kube-dns 的集群中生成 CoreDNS 部署清单manifest的工具脚本manifests/coredns/coredns.yaml.sed部署清单模板内含CLUSTER_DNS_IP、CLUSTER_DOMAIN、REVERSE_CIDRS三个占位符由脚本替换后输出最终 YAML这两份文件协同工作的完整流程为deploy.sh以coredns.yaml.sed为模板通过sed命令将占位符替换为实际集群参数生成一个 ConfigMap存放 Corefile 配置和 CoreDNS 的 Deployment更新集群中已有的kube-dnsService 的 selector使其指向 CoreDNS 的 Deployment由于复用了既有的kube-dnsService包括其 ClusterIPPod 中原有的 DNS 配置无需任何改动即可继续工作服务请求不会发生冲突。需要特别注意的是deploy.sh不会删除 kube-dns 的 Deployment 或 ReplicationController。删除 kube-dns 是部署 CoreDNS 之后的独立手工步骤。deploy.sh 脚本解析参数与替换逻辑从 manifests/coredns/deploy.sh 的源码可以看到脚本支持以下命令行参数usage: deploy.sh [ -r REVERSE-CIDR ] [ -i DNS-IP ] [ -d CLUSTER-DOMAIN ] [ -t YAML-TEMPLATE ]参数含义默认值-r REVERSE-CIDR为给定 CIDR 定义反向解析区域reverse zone可多次指定以添加多个反向区域若未指定任何反向 CIDR则默认处理全部反向区域in-addr.arpa ip6.arpa-i DNS-IP指定集群 DNS 的 Service IP若未指定则自动读取现有kube-dnsService 的 ClusterIP自动探测-d CLUSTER-DOMAIN指定集群域名cluster.local-t YAML-TEMPLATE指定 YAML 模板文件路径当前目录下的coredns.yaml.sed脚本的关键逻辑对应 manifests/coredns/deploy.sh当未通过-i指定 DNS IP 时脚本执行kubectl get service --namespace kube-system kube-dns -o jsonpath{.spec.clusterIP}自动获取既有 kube-dns 服务的 ClusterIP若获取失败则报错提示必须通过-i显式指定最终通过sed完成三处占位符替换s/CLUSTER_DNS_IP/$CLUSTER_DNS_IP/g、s/CLUSTER_DOMAIN/$CLUSTER_DOMAIN/g、s?REVERSE_CIDRS?$REVERSE_CIDRS?g并将结果输出到标准输出。由于脚本输出的是经过替换的完整 YAML可以直接通过管道交给kubectl apply -f -应用到集群这正是一条命令部署的实现基础。coredns.yaml.sed 模板详解六大资源对象manifests/coredns/coredns.yaml.sed 模板由 6 个资源对象以---分隔组成逐一解读如下。1. ServiceAccountapiVersion: v1 kind: ServiceAccount metadata: name: coredns namespace: kube-system为 CoreDNS 创建独立的 ServiceAccount用于后续 RBAC 授权。2. ClusterRoleapiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRole metadata: labels: kubernetes.io/bootstrapping: rbac-defaults name: system:coredns rules: - apiGroups: - resources: - endpoints - services - pods - namespaces verbs: - list - watchCoreDNS 需要从 Kubernetes API 读取区zone数据因此授予其对endpoints、services、pods、namespaces四类资源的list和watch权限——这正是它实现从集群读取 zone 数据这一核心能力所需的全部权限。3. ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: annotations: rbac.authorization.kubernetes.io/autoupdate: true labels: kubernetes.io/bootstrapping: rbac-defaults name: system:coredns roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:coredns subjects: - kind: ServiceAccount name: coredns namespace: kube-system将corednsServiceAccount 绑定到system:corednsClusterRole。这与 kube-dns 使用预定义system:kube-dnsRoleBinding 的做法详见 practice/kubedns-addon-installation.md思路一致通过 ServiceAccount RoleBinding 授予访问 kube-apiserver 相关 API 的权限。4. ConfigMapCorefile 配置apiVersion: v1 kind: ConfigMap metadata: name: coredns namespace: kube-system data: Corefile: | .:53 { errors health kubernetes CLUSTER_DOMAIN REVERSE_CIDRS { pods insecure upstream fallthrough in-addr.arpa ip6.arpa } prometheus :9153 proxy . /etc/resolv.conf cache 30 }Corefile 是 CoreDNS 的核心配置文件这里的每个指令都对应一项具体能力指令作用.:53监听 53 端口处理所有域名的请求zone 为根域errors记录错误日志health启用健康检查端点Deployment 中 livenessProbe 即探测该端点kubernetes CLUSTER_DOMAIN REVERSE_CIDRS加载 Kubernetes 插件将CLUSTER_DOMAIN默认cluster.local下的 Service/Pod 域名解析交给集群数据REVERSE_CIDRS默认in-addr.arpa ip6.arpa定义反向解析区域pods insecure为 Pod 提供 A 记录解析insecure 模式不校验 Pod 是否真实存在upstream将非集群域名的解析请求转发到上游 DNSfallthrough in-addr.arpa ip6.arpa对in-addr.arpa与ip6.arpa反解区域的请求若本插件无法处理则继续传递给后续插件prometheus :9153在 9153 端口暴露 Prometheus 指标供监控系统采集proxy . /etc/resolv.conf将未匹配集群域名的查询代理到节点的/etc/resolv.conf配置的上游 nameservercache 30开启 DNS 缓存TTL 上限 30 秒提升解析性能5. DeploymentapiVersion: extensions/v1beta1 kind: Deployment metadata: name: coredns namespace: kube-system labels: k8s-app: kube-dns kubernetes.io/name: CoreDNS spec: replicas: 2 strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 1 selector: matchLabels: k8s-app: kube-dns template: metadata: labels: k8s-app: kube-dns spec: serviceAccountName: coredns tolerations: - key: CriticalAddonsOnly operator: Exists containers: - name: coredns image: coredns/coredns:1.1.1 imagePullPolicy: IfNotPresent args: [ -conf, /etc/coredns/Corefile ] volumeMounts: - name: config-volume mountPath: /etc/coredns ports: - containerPort: 53 name: dns protocol: UDP - containerPort: 53 name: dns-tcp protocol: TCP - containerPort: 9153 name: metrics protocol: TCP livenessProbe: httpGet: path: /health port: 8080 scheme: HTTP initialDelaySeconds: 60 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 5 dnsPolicy: Default volumes: - name: config-volume configMap: name: coredns items: - key: Corefile path: CorefileDeployment 的关键设计点复用 kube-dns 的标签Pod 与 Deployment 的标签均为k8s-app: kube-dns与既有kube-dnsService 的 selector 完全一致因此无需新建 Service副本数为 2采用RollingUpdate滚动更新策略maxUnavailable: 1保证升级过程中至少有一个副本可用容忍CriticalAddonsOnly污点确保 CoreDNS 作为关键插件可调度到被标记为仅承载关键组件的节点镜像coredns/coredns:1.1.1imagePullPolicy: IfNotPresent通过-conf /etc/coredns/Corefile参数加载挂载的 ConfigMap 配置同时暴露 53/UDP 与 53/TCP分别对应标准 DNS 查询与 TCP 场景9153 端口供 Prometheus 采集指标存活探针每 60 秒后开始探测http://:8080/health超时 5 秒、连续 5 次失败判定不健康交由 kubelet 重启dnsPolicy: Default容器使用节点的 DNS 配置/etc/resolv.conf与 Corefile 中proxy . /etc/resolv.conf的上游转发逻辑匹配。6. Service复用 kube-dnsapiVersion: v1 kind: Service metadata: name: kube-dns namespace: kube-system annotations: prometheus.io/scrape: true labels: k8s-app: kube-dns kubernetes.io/cluster-service: true kubernetes.io/name: CoreDNS spec: selector: k8s-app: kube-dns clusterIP: CLUSTER_DNS_IP ports: - name: dns port: 53 protocol: UDP - name: dns-tcp port: 53 protocol: TCP模板中的 Service 仍以kube-dns命名clusterIP由deploy.sh替换为既有 kube-dns 服务的 ClusterIPCLUSTER_DNS_IP占位符。由于 Service 的 IP 与端口保持不变、selector 不变k8s-app: kube-dns集群内所有 Pod 的/etc/resolv.conf由 kubelet 通过--cluster-dns注入的 nameserver 地址无需任何调整即可无缝指向新的 CoreDNS 后端。此外Service 上带有prometheus.io/scrape: true注解可与 Prometheus 自动发现集成。一键部署替换 kube-dns 的标准流程在最佳场景下使用 CoreDNS 替换 kube-dns 只需要执行两条命令命令需在包含deploy.sh与coredns.yaml.sed的manifests/coredns目录下运行且本机已配置好访问集群的 kubeconfig$ ./deploy.sh | kubectl apply -f - $ kubectl delete --namespacekube-system deployment kube-dns执行过程说明第一条命令中deploy.sh自动探测既有kube-dnsService 的 ClusterIP完成模板占位符替换后输出完整 YAML经管道交给kubectl apply -f -创建 ServiceAccount、ClusterRole、ClusterRoleBinding、ConfigMap 与 CoreDNS Deployment并更新kube-dnsService 的 selector第二条命令删除旧的 kube-dns Deployment完成切换。注意建议在部署 CoreDNS 后立即删除 kube-dns。如果两者同时运行由于 Service selector 会同时选中新旧两套 Pod服务查询可能会随机的在 CoreDNS 和 kube-dns 之间产生导致解析行为不确定。因此迁移应一次性完成避免双 DNS 并存的窗口期。非 RBAC 集群的适配对于未启用 RBACRole-Based Access Control的集群需要对生成的 YAML 结果做如下手工编辑从 YAML 文件的Deployment部分删除serviceAccountName: coredns这一行删除ServiceAccount、ClusterRole和ClusterRoleBinding三个资源段。在非 RBAC 集群中任何 Pod 都默认拥有访问 API 的权限因此这些 RBAC 相关资源既无必要也不受支持rbac.authorization.k8s.ioAPI 组可能不可用删除后即可正常部署。部署后的验证与问题排查部署完成后可参照 practice/configuring-dns.md 中针对 DNS 组件的系统化验证方法进行确认。检查 DNS Pod 运行状态$ kubectl get pods --namespacekube-system -l k8s-appkube-dns NAME READY STATUS RESTARTS AGE coredns-7d4d9b6c6b-xxxxx 1/1 Running 0 2m coredns-7d4d9b6c6b-yyyyy 1/1 Running 0 2m与 kube-dns 的3/3kubedns、dnsmasq、sidecar 三个容器不同CoreDNS 每个 Pod 只需1/1单容器这正是其架构简化的直观体现。若 Pod 未运行或处于 Failed/Completed 状态说明插件未正确部署。检查 Service 与 Endpoints$ kubectl get svc --namespacekube-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kube-dns ClusterIP 10.0.0.10 none 53/UDP,53/TCP 1h $ kubectl get ep kube-dns --namespacekube-system NAME ENDPOINTS AGE kube-dns 10.180.3.17:53,10.180.3.17:53 1hService 的 ClusterIP 应与 kubelet 的--cluster-dns参数一致Endpoints 应指向 CoreDNS Pod 的 IP。用测试 Pod 验证解析创建 busybox 测试 Pod然后执行nslookup$ kubectl exec -ti busybox -- nslookup kubernetes.default Server: 10.0.0.10 Address 1: 10.0.0.10 Name: kubernetes.default Address 1: 10.0.0.1若看到上述输出说明集群内服务域名解析正常。同时可检查容器内的 DNS 配置$ kubectl exec busybox cat /etc/resolv.conf search default.svc.cluster.local svc.cluster.local cluster.local nameserver 10.0.0.10 options ndots:5其中nameserver指向的正是kube-dnsService 的 ClusterIP——这也是迁移方案复用该 Service IP 的意义所在所有 Pod 无需重启即可继续使用原 DNS 地址。若nslookup报cant resolve kubernetes.default则需要依次排查CoreDNS Pod 是否运行、Pod 日志kubectl logs --namespacekube-system -l k8s-appkube-dns中是否有以W/E/F开头的警告、错误与失败日志、Service 是否暴露、Endpoints 是否正常。迁移注意事项与前提仔细测试 manifestdeploy.sh生成的 manifest 是否正常工作取决于集群的构建方式与运行版本。对 manifest 做必要的修改如镜像仓库、副本数、Corefile 插件参数是合理的建议先在测试集群验证后再应用于生产。保持 kubelet 参数一致--cluster-dns指向的地址必须与kube-dnsService 的 ClusterIP 一致--cluster-domain应与-d参数默认cluster.local一致否则 Pod 内域名解析会失败。上游解析能力Corefile 中的proxy . /etc/resolv.conf依赖节点自身的 DNS 配置。与 kube-dns 的upstreamNameservers最多指定三个上游 nameserver未指定时默认继承节点/etc/resolv.conf行为类似Pod 的dnsPolicy为ClusterFirst时未匹配集群域名的请求会按此转发dnsPolicy为Default或None的 Pod 则不受集群 DNS 配置影响。双 DNS 并存风险务必在部署 CoreDNS 后删除 kube-dns避免解析请求随机分发到两套 DNS 后端。参考practice/coredns.md本文核心依据CoreDNS 安装配置原始文档manifests/coredns/deploy.sh部署脚本源码manifests/coredns/coredns.yaml.sedmanifest 模板源码practice/configuring-dns.mdkube-dns 配置、存根域与 DNS 调试指南practice/kubedns-addon-installation.mdkube-dns 插件安装与 RBAC 配置细节practice/dns-installation.mdDNS 组件在集群服务发现中的定位说明practice/install-kubernetes-with-kubeadm.mdkubeadm 集群安装方式及 CoreDNS 集成背景赞分享教程云原生容器编排【免费下载链接】kubernetes-handbookKubernetes 架构与生态从云原生到 AI 原生基础设施的构建指南项目地址https://gitcode.com/gh_mirrors/ku/kubernetes-handbook点击查看免费下载相关推荐Kubernetes 集群 DNS 解析配置与故障排查完全指南基于 kubernetes-handbook 的 kube-dns 实战Kubernetes 集群 DNS 解析配置与故障排查完全指南基于 kubernetes handbook 的 kube dns 实战 Kubernetes教程云原生容器编排kube-state-metrics Helm Chart 部署与配置完全指南Kubernetes 集群指标采集实战kube state metrics Helm Chart 部署与配置完全指南Kubernetes 集群指标采集实战 本指南以 Friend 仓库内嵌的 ku人工智能AI 应用语音移动开发后端桌面应用智能硬件MCP 服务Kubernetes The Hard Way DNS插件部署CoreDNS配置与调优终极指南在Kubernetes集群中DNS服务发现是核心组件之一而CoreDNS作为官方推荐的DNS插件为集群内部的服务发现提供了强大的支持。本文将通过Kuber文档/教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Wandb Core 中的 gax-go v2:从 2.4 到 2.25 的能力演进与源码级解析

Wandb Core 中的 gax-go v2:从 2.4 到 2.25 的能力演进与源码级解析

机器学习深度学习数据可视化可观测性 【免费下载链接】wandb The AI developer platform. Use Weights & Biases to train and fine-tune models, and manage models from experimentation to production. 项目地址: https://gitcode.com/gh_mirrors/wa/wandb 点…

2026/9/24 5:05:37 阅读更多 →
【SSM课程设计/毕业设计】基于 SSM+Vue 的电脑配件商品检索系统的设计与实现 基于 SSM+Vue 的电脑配件购物车管理系统【附源码、数据库、万字文档】

【SSM课程设计/毕业设计】基于 SSM+Vue 的电脑配件商品检索系统的设计与实现 基于 SSM+Vue 的电脑配件购物车管理系统【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/24 5:05:37 阅读更多 →
CodeBurn GNOME Shell 扩展:在 Linux 桌面面板上实时追踪 AI 编程 Token 消耗与成本

CodeBurn GNOME Shell 扩展:在 Linux 桌面面板上实时追踪 AI 编程 Token 消耗与成本

【免费下载链接】codeburn Free, local tool to track AI coding token usage and cost across 37 tools and agents (Claude Code, Cursor, Codex, Gemini and more), by model, project, and task. npx codeburn 项目地址: https://gitcode.com/gh_mirrors/co/cod…

2026/9/24 5:05:37 阅读更多 →

最新新闻

迪文DMG80480C070工业串口屏调试全指南:变量驱动、字库分离与RS485抗干扰

迪文DMG80480C070工业串口屏调试全指南:变量驱动、字库分离与RS485抗干扰

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

2026/9/24 5:44:01 阅读更多 →
ROS2 Jazzy 包管理极简实战:创建、编译、运行一条龙

ROS2 Jazzy 包管理极简实战:创建、编译、运行一条龙

ROS2 Jazzy 包管理极简实战:创建、编译、运行一条龙本文基于 ROS2 Jazzy Ubuntu 24.04,演示如何用命令行快速创建 C/Python 功能包、编译、查询信息并运行节点。适合刚装好 Jazzy、想快速跑通包管理流程的同学。一、环境准备 先确认已安装 ROS2 Jazzy 和…

2026/9/24 5:44:01 阅读更多 →
电商平台软件架构设计:从业务边界到微服务落地实践

电商平台软件架构设计:从业务边界到微服务落地实践

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

2026/9/24 5:44:01 阅读更多 →
AI 创新合伙人公会:用体系化机制破解 AI 创业的六大落地难题

AI 创新合伙人公会:用体系化机制破解 AI 创业的六大落地难题

摘要AI 项目从想法到落地,卡点往往不在技术本身,而在选题、组队、获客、融资、工程化与资源整合六个环节。本文以"智栈 AI 创新合伙人公会"为例,拆解其面向独立开发者、创业团队与成长型企业提供的六项赋能机制,逐条落到…

2026/9/24 5:44:01 阅读更多 →
华硕X99上Tesla M40无法点亮?一文搞懂Above 4G Decoding设置

华硕X99上Tesla M40无法点亮?一文搞懂Above 4G Decoding设置

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

2026/9/24 5:44:01 阅读更多 →
YOLOv11安防实战:实时人体行为识别与异常预警落地指南

YOLOv11安防实战:实时人体行为识别与异常预警落地指南

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

2026/9/24 5:43:00 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →