[{"data":1,"prerenderedAt":167},["ShallowReactive",2],{"cloudnative-intro":3},{"id":4,"title":5,"body":6,"description":159,"extension":160,"meta":161,"navigation":162,"path":163,"seo":164,"stem":165,"__hash__":166},"cloudnativeIntro/cloudnative-intro.md","云原生",{"type":7,"value":8,"toc":149},"minimark",[9,13,16,19,23,49,52,76,79,103,106,137,140,143,146],[10,11,12],"p",{},"一个应用在自己电脑上跑通以后，后面还有不少事：换台机器为什么失败，实例退出后谁来补，升级时怎样少影响用户，数据放在哪里，慢请求又该从哪查。",[10,14,15],{},"这个合集就沿着这些问题往下走。我们用一个读书笔记服务做例子，先看进程和容器，再加入多副本、数据库、图片存储及异步任务。每增加一个组件，都说清它解决什么问题、通过什么机制工作，以及哪些事情仍然要由应用自己处理。",[10,17,18],{},"适合已经写过简单HTTP服务、接触过Linux命令，但还没有把云原生知识连起来的读者。刚开始不用准备生产集群，第1篇会介绍可重建的实验环境。看不懂某段配置时，先跟着请求和状态变化走，字段名称可以回头再查。",[20,21,22],"h2",{"id":22},"先看应用怎样运行",[24,25,26,35,42],"ol",{},[27,28,29,34],"li",{},[30,31,33],"a",{"href":32},"/column/cloudnative/1-setup","从一次上线事故理解云原生","  从环境差异和进程故障出发，分清容器、平台与应用的责任，并准备安全的实验环境",[27,36,37,41],{},[30,38,40],{"href":39},"/column/cloudnative/2-container-base","容器如何隔离进程","  看Namespace、cgroup与文件系统怎样配合，解释localhost、挂载和重启时的变化",[27,43,44,48],{},[30,45,47],{"href":46},"/column/cloudnative/3-docker","从代码到可重复镜像","  把Go应用的构建与运行拆开，理解镜像层、缓存、digest与构建凭据",[20,50,51],{"id":51},"再把多个实例组织起来",[24,53,55,62,69],{"start":54},4,[27,56,57,61],{},[30,58,60],{"href":59},"/column/cloudnative/4-k8s/k8s-apiresources","Kubernetes 如何让应用持续运行","  沿着一次提交看控制器、调度器和kubelet，理解Pod替换与工作负载选择",[27,63,64,68],{},[30,65,67],{"href":66},"/column/cloudnative/4-k8s/k8s-network","从域名到 Pod 的一次请求","  串起DNS、Service、EndpointSlice与入口，逐跳判断流量为什么没有到达应用",[27,70,71,75],{},[30,72,74],{"href":73},"/column/cloudnative/4-k8s/k8s-configuration","配置与数据为什么需要独立生命周期","  区分配置传播、程序重载、持久化和备份，理解PVC与StatefulSet的边界",[20,77,78],{"id":78},"让变化能够安全发生",[24,80,82,89,96],{"start":81},7,[27,83,84,88],{},[30,85,87],{"href":86},"/column/cloudnative/5-helm","多套环境怎样共用一份配置","  用Helm与Kustomize管理共性和差异，审查真正要提交的资源，而不只看模板",[27,90,91,95],{},[30,92,94],{"href":93},"/column/cloudnative/health-and-capacity","健康检查与弹性为什么会适得其反","  通过慢启动和下游过载理解探针、requests、limits、HPA及容量约束",[27,97,98,102],{},[30,99,101],{"href":100},"/column/cloudnative/6-cicd","一次发布怎样才算完成","  从制品身份走到滚动更新、退出、业务验证与数据库兼容，设计可执行的回退路径",[20,104,105],{"id":105},"最后回到真实问题",[24,107,109,116,123,130],{"start":108},10,[27,110,111,115],{},[30,112,114],{"href":113},"/column/cloudnative/7-monitor","用证据排查一次慢请求","  结合指标、日志与追踪缩小假设，读懂分位数、采样和SLO",[27,117,118,122],{},[30,119,121],{"href":120},"/column/cloudnative/4-k8s/k8s-namespace","从最小权限建立安全边界","  沿镜像、进程、身份、网络和凭据逐层判断一次失守会影响什么",[27,124,125,129],{},[30,126,128],{"href":127},"/column/cloudnative/architecture-tradeoffs","微服务 网格与Serverless该在什么时候出现","  从异步摘要任务看服务拆分、重试与幂等，再评估新平台是否值得",[27,131,132,136],{},[30,133,135],{"href":134},"/column/cloudnative/debugging-capstone","把一条故障链查到底","  用四个教学现场，把前面的机制连成症状、假设、证据和验证的完整过程",[20,138,139],{"id":139},"怎么读更有效",[10,141,142],{},"第一次可以顺序读，每章末尾先看题目，卡住再看提示，最后对照答案。题目的重点是解释原因，不是背命令参数。",[10,144,145],{},"如果正在排查问题，可以按入口跳读：请求到不了应用看第5篇；配置明明改了却没生效看第6篇；扩容后仍然慢看第8和第10篇；回滚失败看第9篇。返回前面的机制，再看第13篇的完整推理，会比反复重启更有收获。",[10,147,148],{},"命令与配置用于解释机制，实际操作前要核对所用版本、运行环境和资源范围。实验只放测试数据，不把工作集群当练习场。正文中的故障例子是教学推演，不代表用户网站的真实架构或事故。",{"title":150,"searchDepth":151,"depth":151,"links":152},"",3,[153,155,156,157,158],{"id":22,"depth":154,"text":22},2,{"id":51,"depth":154,"text":51},{"id":78,"depth":154,"text":78},{"id":105,"depth":154,"text":105},{"id":139,"depth":154,"text":139},"从一个应用怎样运行开始，逐步理解容器、Kubernetes、网络、存储、交付与观测，把零散工具连成一套可以解释和排查的系统。","md",{},true,"/cloudnative-intro",{"title":5,"description":159},"cloudnative-intro","q58VHSXIMdu9SVS272J0PF7qyYaXuiRnUMkOZYR68Tc",1791935828635]