<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>cka on 我的空间</title><link>https://chenjinxin.cn/tags/cka/</link><description>Recent content in cka on 我的空间</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Thu, 27 Aug 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://chenjinxin.cn/tags/cka/index.xml" rel="self" type="application/rss+xml"/><item><title>🚀 CRI 详解：ctr、nerdctl、crictl 与 Docker 命令对照</title><link>https://chenjinxin.cn/p/cri-%E8%AF%A6%E8%A7%A3ctrnerdctlcrictl-%E4%B8%8E-docker-%E5%91%BD%E4%BB%A4%E5%AF%B9%E7%85%A7/</link><pubDate>Thu, 27 Aug 2026 10:00:00 +0800</pubDate><guid>https://chenjinxin.cn/p/cri-%E8%AF%A6%E8%A7%A3ctrnerdctlcrictl-%E4%B8%8E-docker-%E5%91%BD%E4%BB%A4%E5%AF%B9%E7%85%A7/</guid><description>&lt;p>CRI（Container Runtime Interface，容器运行时接口）是 kubelet 与容器运行时之间的标准接口，也是 CKA 考试的重要知识点。它对应官方课程 Cluster Architecture（集群架构，权重 25%）中的 &amp;ldquo;Understand extension interfaces (CNI, CSI, CRI)&amp;rdquo; 主题，属于扩展接口里必考的一项。考试不只考概念，更常以节点排障的形式考察 &lt;code>ctr&lt;/code>、&lt;code>nerdctl&lt;/code>、&lt;code>crictl&lt;/code> 三个命令行工具的实际用法。&lt;/p>
&lt;p>本篇把 CRI 的原理、容器运行时的演进以及三个工具与 &lt;code>docker&lt;/code> 的语法对照整理成一份可直接背诵的备考笔记。先搞懂 CRI 是什么，再记住每个工具的命令对照，最后用高频检查命令清单收尾，考场上遇到运行时相关的题目就不会慌。&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>适用对象&lt;/strong>：CKA 考生&lt;br>
&lt;strong>考察范围&lt;/strong>：CRI 原理、容器运行时演进、&lt;code>ctr&lt;/code> / &lt;code>nerdctl&lt;/code> / &lt;code>crictl&lt;/code> 命令行工具&lt;br>
&lt;strong>核心对照&lt;/strong>：三个工具与 &lt;code>docker&lt;/code> 命令语法对照&lt;/p>
&lt;/blockquote>
&lt;h2 id="1-cri概念与演进">1. CRI：概念与演进&lt;/h2>
&lt;p>&lt;strong>CRI 定义&lt;/strong>：CRI 是 kubelet 与容器运行时之间约定的 gRPC 接口，kubelet 不关心运行时具体实现，只要满足 CRI 规范就能接入。它由两个 gRPC 服务组成：&lt;code>RuntimeService&lt;/code> 负责 Pod 沙箱（&lt;code>PodSandbox&lt;/code>）与容器的创建、启停、删除；&lt;code>ImageService&lt;/code> 负责镜像的拉取、列表与删除。&lt;/p>
&lt;p>&lt;strong>OCI 规范&lt;/strong>：CRI 之上还有 OCI（Open Container Initiative）约束运行时行为。&lt;code>runtime-spec&lt;/code> 定义了容器运行时的标准，&lt;code>runc&lt;/code> 是最常见的实现；&lt;code>image-spec&lt;/code> 定义了镜像格式标准。完整的调用链是 &lt;code>kubelet&lt;/code> → CRI → &lt;code>containerd&lt;/code> / &lt;code>CRI-O&lt;/code> → OCI → &lt;code>runc&lt;/code>，每一层只关心自己的职责。&lt;/p>
&lt;p>&lt;strong>dockershim 历史&lt;/strong>：Docker 出现早于 Kubernetes，早期 kubelet 通过内置的 &lt;code>dockershim&lt;/code> 组件把 CRI 调用翻译成 Docker API。由于维护成本高，k8s 在 1.24（2022 年 4 月）正式移除 &lt;code>dockershim&lt;/code>，&lt;code>containerd&lt;/code> 成为 kubeadm 默认的 CRI 运行时。有意思的是，Docker 引擎底层本来就在用 &lt;code>containerd&lt;/code>，移除后只是少了一层 Docker 自己的 API。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">演进阶段&lt;/th>
&lt;th style="text-align:left">说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Docker 引擎&lt;/td>
&lt;td style="text-align:left">Docker CLI / API 之上运行 &lt;code>containerd&lt;/code> + &lt;code>runc&lt;/code>，kubelet 无法直接使用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>dockershim&lt;/code>&lt;/td>
&lt;td style="text-align:left">kubelet 内置的适配层，把 CRI 调用翻译成 Docker API，维护成本高&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">CRI 标准化&lt;/td>
&lt;td style="text-align:left">引入 &lt;code>containerd&lt;/code> / &lt;code>CRI-O&lt;/code> 直接实现 CRI，去掉中间翻译层&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">移除 &lt;code>dockershim&lt;/code>&lt;/td>
&lt;td style="text-align:left">k8s 1.24 移除，&lt;code>containerd&lt;/code> 成为默认 CRI 运行时&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="2-ctrcontainerd-原生底层命令">2. ctr：containerd 原生底层命令&lt;/h2>
&lt;p>&lt;code>ctr&lt;/code> 是 containerd 自带的命令行客户端，定位低层，命令风格与 Docker 不兼容，主要用于调试和运维 containerd 本身。它默认使用 &lt;code>default&lt;/code> namespace，而 Kubernetes 的资源放在 &lt;code>k8s.io&lt;/code> namespace 下，因此查看 k8s 相关容器与镜像必须加 &lt;code>-n k8s.io&lt;/code>。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">ctr images pull docker.io/library/nginx:latest
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ctr images ls
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ctr run -d docker.io/library/nginx:latest nginx1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ctr containers create docker.io/library/nginx:latest nginx2
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ctr containers start nginx2
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ctr tasks ls
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ctr namespaces ls
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ctr namespaces create myns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ctr namespaces rm myns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;code>-n&lt;/code> / &lt;code>--namespace&lt;/code> 标志用于指定命名空间，也可以用环境变量 &lt;code>CONTAINERD_NAMESPACE&lt;/code> 设置默认值，设置后后续命令可以省略 &lt;code>-n&lt;/code>。注意 &lt;code>ctr tasks exec&lt;/code> 对应 &lt;code>docker exec&lt;/code>；&lt;code>ctr run&lt;/code> 隐含了创建与启动两步，而 &lt;code>ctr containers create&lt;/code> + &lt;code>ctr containers start&lt;/code> 是拆开的两步操作。&lt;/p>
&lt;p>containerd 2.x 的主要变化：&lt;/p>
&lt;ul>
&lt;li>移除 CRI &lt;code>v1alpha2&lt;/code>，只保留 &lt;code>v1&lt;/code>&lt;/li>
&lt;li>移除 &lt;code>aufs&lt;/code> snapshotter，只剩 &lt;code>overlayfs&lt;/code> 等主流实现&lt;/li>
&lt;li>schema1 旧格式镜像默认无法拉取，需要设置 &lt;code>CONTAINERD_ENABLE_DEPRECATED_PULL_SCHEMA_1_IMAGE=1&lt;/code> 并配合 &lt;code>--local&lt;/code> 参数&lt;/li>
&lt;li>新增 &lt;code>ctr deprecations list&lt;/code> 查看弃用项清单&lt;/li>
&lt;li>新增 &lt;code>ctr sandboxes&lt;/code> 命令管理沙箱&lt;/li>
&lt;li>当前版本为 v2.3.4，属于 2.3 LTS 线&lt;/li>
&lt;/ul>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">docker&lt;/th>
&lt;th style="text-align:left">ctr（k8s 场景加 &lt;code>-n k8s.io&lt;/code>）&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;code>docker images&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>ctr images ls&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>docker pull&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>ctr images pull&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>docker ps&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>ctr containers ls&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>docker run -d&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>ctr run -d&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>docker exec&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>ctr tasks exec&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="3-nerdctldocker-兼容的-containerd-cli">3. nerdctl：Docker 兼容的 containerd CLI&lt;/h2>
&lt;p>&lt;code>nerdctl&lt;/code> 是 containerd 生态中的类 Docker CLI，命令名与 &lt;code>docker&lt;/code> 几乎一一对应，目标是让 containerd 用起来和 Docker 一样顺手。它依赖 containerd daemon 提供容器能力、CNI 插件提供网络、BuildKit 提供镜像构建；&lt;code>nerdctl-full&lt;/code> 捆绑包一次装齐全部依赖，是免去逐个安装的省心选择。&lt;/p>
&lt;p>常用全局 flag：&lt;/p>
&lt;ul>
&lt;li>&lt;code>--namespace&lt;/code>：指定命名空间，默认 &lt;code>default&lt;/code>，k8s 资源用 &lt;code>k8s.io&lt;/code>&lt;/li>
&lt;li>&lt;code>-H&lt;/code> / &lt;code>--host&lt;/code>：指定 containerd 服务地址&lt;/li>
&lt;li>&lt;code>--snapshotter&lt;/code>：指定快照器，如 &lt;code>overlayfs&lt;/code>&lt;/li>
&lt;li>&lt;code>--cgroup-manager&lt;/code>：cgroup 管理器，如 &lt;code>systemd&lt;/code>&lt;/li>
&lt;li>&lt;code>--insecure-registry&lt;/code>：允许非 HTTPS 镜像仓库&lt;/li>
&lt;li>&lt;code>--data-root&lt;/code>：数据目录&lt;/li>
&lt;li>&lt;code>--cni-path&lt;/code>：CNI 插件路径&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">nerdctl run -d -p 8080:80 nginx:latest
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">nerdctl build -t myapp:latest .
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">nerdctl pull nginx:latest
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">nerdctl &lt;span class="nb">exec&lt;/span> -it nginx1 sh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">nerdctl logs -f nginx1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">nerdctl ps -a
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">nerdctl images
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">nerdctl rmi nginx:latest
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">nerdctl namespace ls
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">nerdctl namespace create myns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">nerdctl namespace rm myns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">nerdctl compose up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">docker&lt;/th>
&lt;th style="text-align:left">nerdctl&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;code>docker run&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>nerdctl run&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>docker build&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>nerdctl build&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>docker compose&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>nerdctl compose&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>docker network&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>nerdctl network&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>docker ps&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>nerdctl ps&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="4-crictlcri-调试客户端cka-核心">4. crictl：CRI 调试客户端（CKA 核心）&lt;/h2>
&lt;p>&lt;code>crictl&lt;/code> 是 cri-tools 项目提供的 CRI 调试客户端，直接与 CRI 运行时通信，不经过 kubelet。它是 Kubernetes 节点排障的专用工具，killer.sh 和 KodeKloud 模拟环境都经常考，是三个工具里 CKA 备考价值最高的一个。&lt;/p>
&lt;p>配置文件默认位于 &lt;code>/etc/crictl.yaml&lt;/code>，也可以放到用户级路径 &lt;code>$XDG_CONFIG_HOME/crictl/crictl.yaml&lt;/code>。执行 &lt;code>crictl config&lt;/code> 可以交互式生成配置，&lt;code>crictl config --set runtime-endpoint=unix:///var/run/containerd/containerd.sock&lt;/code> 可以单独修改某项。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">runtime-endpoint&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">unix:///var/run/containerd/containerd.sock&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">image-endpoint&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">unix:///var/run/containerd/containerd.sock&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">timeout&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">10&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">debug&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>常用命令与 flag（已对照 cri-tools 源码验证）：&lt;/p>
&lt;ul>
&lt;li>&lt;code>crictl ps&lt;/code>：列出容器；&lt;code>-a&lt;/code> / &lt;code>--all&lt;/code> 包含已退出容器，&lt;code>-p&lt;/code> / &lt;code>--pod&lt;/code> 按 Pod 过滤，&lt;code>--image&lt;/code> 按镜像过滤，&lt;code>-s&lt;/code> / &lt;code>--state&lt;/code> 按状态过滤，&lt;code>--name&lt;/code> 按容器名正则过滤，&lt;code>--namespace&lt;/code> 按 Pod 命名空间正则过滤，&lt;code>--label&lt;/code> 按标签过滤，&lt;code>-o json|yaml|table&lt;/code> 控制输出格式，&lt;code>-l&lt;/code> / &lt;code>--latest&lt;/code> 只显示最近一个，&lt;code>-n&lt;/code> / &lt;code>--last&lt;/code> 显示最近 N 个，&lt;code>--no-trunc&lt;/code> 不截断输出&lt;/li>
&lt;li>&lt;code>crictl pods&lt;/code>：列出 Pod 沙箱，&lt;code>--namespace&lt;/code> 按命名空间正则过滤&lt;/li>
&lt;li>&lt;code>crictl images&lt;/code> / &lt;code>crictl pull&lt;/code> / &lt;code>crictl rmi&lt;/code>：镜像管理&lt;/li>
&lt;li>&lt;code>crictl inspect&lt;/code> / &lt;code>crictl inspectp&lt;/code> / &lt;code>crictl inspecti&lt;/code>：分别查看容器、Pod 沙箱、镜像详情&lt;/li>
&lt;li>&lt;code>crictl logs&lt;/code>：查看容器日志；&lt;code>-f&lt;/code> / &lt;code>--follow&lt;/code> 持续输出，&lt;code>-p&lt;/code> / &lt;code>--previous&lt;/code> 查看上一次实例，&lt;code>--tail&lt;/code> 指定行数，&lt;code>-t&lt;/code> / &lt;code>--timestamps&lt;/code> 显示时间戳&lt;/li>
&lt;li>&lt;code>crictl exec&lt;/code>：进入容器，&lt;code>-i&lt;/code> / &lt;code>-t&lt;/code> 语义与 &lt;code>docker exec&lt;/code> 一致，&lt;code>--pod&lt;/code> 指定所属 Pod，&lt;code>--name&lt;/code> 按名称选中容器&lt;/li>
&lt;li>&lt;code>crictl stats&lt;/code>：查看容器资源占用&lt;/li>
&lt;li>&lt;code>crictl runp&lt;/code> / &lt;code>create&lt;/code> / &lt;code>start&lt;/code> / &lt;code>stop&lt;/code> / &lt;code>rm&lt;/code> / &lt;code>stopp&lt;/code> / &lt;code>rmp&lt;/code>：手动管理 Pod 沙箱与容器&lt;/li>
&lt;li>&lt;code>crictl info&lt;/code>：查看运行时信息&lt;/li>
&lt;li>&lt;code>crictl version&lt;/code>：查看客户端与运行时版本&lt;/li>
&lt;/ul>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">docker&lt;/th>
&lt;th style="text-align:left">crictl&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;code>docker ps&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>crictl ps -a&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>docker images&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>crictl images&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>docker pull&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>crictl pull&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>docker exec -it&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>crictl exec -it&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>docker logs&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>crictl logs&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>&lt;strong>考题场景&lt;/strong>：Pod 状态异常是 CKA 节点排障的常考题型，典型的排查链如下。&lt;/p>
&lt;ol>
&lt;li>&lt;code>k get pods&lt;/code> 显示 &lt;code>ContainerCreating&lt;/code>、&lt;code>CrashLoopBackOff&lt;/code> 或 &lt;code>ImagePullBackOff&lt;/code>，先 &lt;code>k describe pod&lt;/code> 看事件。&lt;/li>
&lt;li>SSH 到 Pod 所在节点，用 &lt;code>crictl ps -a&lt;/code> 查看容器实际状态（含已退出容器）。&lt;/li>
&lt;li>用 &lt;code>crictl logs &amp;lt;container-id&amp;gt;&lt;/code> 看应用日志，判断是启动崩溃还是配置错误。&lt;/li>
&lt;li>用 &lt;code>crictl inspect &amp;lt;container-id&amp;gt;&lt;/code> 看容器配置、挂载与退出码。&lt;/li>
&lt;li>镜像拉取失败时，先 &lt;code>crictl images&lt;/code> 确认本地是否有镜像，再手动 &lt;code>crictl pull &amp;lt;image&amp;gt;&lt;/code> 验证仓库连通性。&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">crictl ps -a
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">crictl logs &amp;lt;container-id&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">crictl inspect &amp;lt;container-id&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">crictl pull &amp;lt;image&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="5-docker-与三工具总对照">5. Docker 与三工具总对照&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">操作&lt;/th>
&lt;th style="text-align:left">docker&lt;/th>
&lt;th style="text-align:left">nerdctl&lt;/th>
&lt;th style="text-align:left">ctr&lt;/th>
&lt;th style="text-align:left">crictl&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">查看容器&lt;/td>
&lt;td style="text-align:left">&lt;code>docker ps&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>nerdctl ps&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>ctr containers ls&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>crictl ps -a&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">查看镜像&lt;/td>
&lt;td style="text-align:left">&lt;code>docker images&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>nerdctl images&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>ctr images ls&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>crictl images&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">拉取镜像&lt;/td>
&lt;td style="text-align:left">&lt;code>docker pull&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>nerdctl pull&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>ctr images pull&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>crictl pull&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">运行容器&lt;/td>
&lt;td style="text-align:left">&lt;code>docker run -d&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>nerdctl run -d&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>ctr run -d&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>crictl runp&lt;/code> + &lt;code>create&lt;/code> + &lt;code>start&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">进入容器&lt;/td>
&lt;td style="text-align:left">&lt;code>docker exec -it&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>nerdctl exec -it&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>ctr tasks exec&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>crictl exec -it&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">查看日志&lt;/td>
&lt;td style="text-align:left">&lt;code>docker logs&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>nerdctl logs&lt;/code>&lt;/td>
&lt;td style="text-align:left">不支持（直接读文件）&lt;/td>
&lt;td style="text-align:left">&lt;code>crictl logs&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">构建镜像&lt;/td>
&lt;td style="text-align:left">&lt;code>docker build&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>nerdctl build&lt;/code>&lt;/td>
&lt;td style="text-align:left">不支持&lt;/td>
&lt;td style="text-align:left">不支持&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">编排&lt;/td>
&lt;td style="text-align:left">&lt;code>docker compose&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>nerdctl compose&lt;/code>&lt;/td>
&lt;td style="text-align:left">不支持&lt;/td>
&lt;td style="text-align:left">不支持&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">网络&lt;/td>
&lt;td style="text-align:left">&lt;code>docker network&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>nerdctl network&lt;/code>&lt;/td>
&lt;td style="text-align:left">不支持&lt;/td>
&lt;td style="text-align:left">不支持&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>关键差异：&lt;/p>
&lt;ul>
&lt;li>&lt;code>ctr&lt;/code> 不能构建镜像，也没有 compose 与网络管理能力，它的职责就是调试 containerd 本身&lt;/li>
&lt;li>&lt;code>crictl&lt;/code> 与 &lt;code>ctr&lt;/code> 都不管理 CNI 网络&lt;/li>
&lt;li>&lt;code>docker build&lt;/code> 对应 &lt;code>nerdctl build&lt;/code>，依赖 BuildKit&lt;/li>
&lt;li>&lt;code>docker compose&lt;/code> 对应 &lt;code>nerdctl compose&lt;/code>&lt;/li>
&lt;li>&lt;code>crictl&lt;/code> 的 &lt;code>runp&lt;/code> + &lt;code>create&lt;/code> + &lt;code>start&lt;/code> 面向 Pod 沙箱与容器，而不是单容器&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>&lt;strong>一句话定位&lt;/strong>：&lt;code>ctr&lt;/code> 是底层调试工具，&lt;code>nerdctl&lt;/code> 是类 Docker 的日常操作工具，&lt;code>crictl&lt;/code> 是 CKA 节点排障的首选。&lt;/p>
&lt;/blockquote>
&lt;h2 id="6-crictl-配置与常见易错点">6. crictl 配置与常见易错点&lt;/h2>
&lt;p>&lt;code>/etc/crictl.yaml&lt;/code> 完整示例：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">runtime-endpoint&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">unix:///var/run/containerd/containerd.sock&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">image-endpoint&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">unix:///var/run/containerd/containerd.sock&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">timeout&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">10&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">debug&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>如果节点运行的是 CRI-O，把两个 endpoint 改成 &lt;code>unix:///var/run/crio/crio.sock&lt;/code> 即可。&lt;/p>
&lt;p>版本对应关系：&lt;/p>
&lt;ul>
&lt;li>&lt;code>crictl&lt;/code> / cri-tools v1.36.0，跟随 Kubernetes 小版本发布，k8s 当前稳定版为 1.37&lt;/li>
&lt;li>&lt;code>containerd&lt;/code> v2.3.4，位于 2.3 LTS 线&lt;/li>
&lt;li>&lt;code>nerdctl&lt;/code> v2.3.5&lt;/li>
&lt;/ul>
&lt;p>常见易错点：&lt;/p>
&lt;ul>
&lt;li>&lt;code>ctr&lt;/code> 默认 namespace 是 &lt;code>default&lt;/code>，不是 &lt;code>k8s.io&lt;/code>，不加 &lt;code>-n k8s.io&lt;/code> 就看不到 k8s 资源&lt;/li>
&lt;li>&lt;code>crictl ps&lt;/code> 不带 &lt;code>-a&lt;/code> 看不到已退出的容器，排查崩溃重启必须加 &lt;code>-a&lt;/code>&lt;/li>
&lt;li>&lt;code>crictl&lt;/code> 通过 CRI 直接与运行时通信，绕过 kubelet，所以它看到的容器名是 sandbox 名称，而不是 &lt;code>kubectl&lt;/code> 里的 Pod 名&lt;/li>
&lt;li>&lt;code>runtime-endpoint&lt;/code> 配错会导致 &lt;code>crictl&lt;/code> 连不上运行时，报连接失败错误，先检查 &lt;code>/etc/crictl.yaml&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="高频检查命令">高频检查命令&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">crictl ps -a
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">crictl pods
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">crictl images
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">crictl logs &amp;lt;container-id&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">crictl inspect &amp;lt;container-id&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ctr -n k8s.io images ls
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ctr -n k8s.io containers ls
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">nerdctl -n k8s.io ps -a
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">crictl info &lt;span class="p">|&lt;/span> grep runtime
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="考场压缩记忆">考场压缩记忆&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>dockershim&lt;/strong>：k8s 1.24 已移除，containerd 成为默认 CRI 运行时。&lt;/li>
&lt;li>&lt;strong>CRI&lt;/strong>：kubelet 与运行时之间的 gRPC 接口，含 &lt;code>RuntimeService&lt;/code> 与 &lt;code>ImageService&lt;/code> 两个服务。&lt;/li>
&lt;li>&lt;strong>ctr 命名空间&lt;/strong>：默认 &lt;code>default&lt;/code>，k8s 资源在 &lt;code>k8s.io&lt;/code>，查看必须加 &lt;code>-n k8s.io&lt;/code>。&lt;/li>
&lt;li>&lt;strong>crictl 配置&lt;/strong>：默认读取 &lt;code>/etc/crictl.yaml&lt;/code>，也可用用户级 &lt;code>$XDG_CONFIG_HOME/crictl/crictl.yaml&lt;/code>。&lt;/li>
&lt;li>&lt;strong>三工具定位&lt;/strong>：&lt;code>ctr&lt;/code> 底层调试，&lt;code>nerdctl&lt;/code> 类 Docker 日常操作，&lt;code>crictl&lt;/code> 节点排障首选。&lt;/li>
&lt;li>&lt;strong>crictl ps -a&lt;/strong>：排查崩溃重启必加 &lt;code>-a&lt;/code>，否则看不到已退出容器。&lt;/li>
&lt;li>&lt;strong>crictl 视角&lt;/strong>：看到的容器名是 sandbox 名称，不是 &lt;code>kubectl&lt;/code> 里的 Pod 名。&lt;/li>
&lt;/ul></description></item><item><title>🚀 CKA 认证 30 天冲刺备考清单</title><link>https://chenjinxin.cn/p/cka-%E8%AE%A4%E8%AF%81-30-%E5%A4%A9%E5%86%B2%E5%88%BA%E5%A4%87%E8%80%83%E6%B8%85%E5%8D%95/</link><pubDate>Tue, 11 Aug 2026 21:25:00 +0800</pubDate><guid>https://chenjinxin.cn/p/cka-%E8%AE%A4%E8%AF%81-30-%E5%A4%A9%E5%86%B2%E5%88%BA%E5%A4%87%E8%80%83%E6%B8%85%E5%8D%95/</guid><description>&lt;blockquote>
&lt;p>&lt;strong>适用对象&lt;/strong>：已通过 CKAD 认证的考生&lt;br>
&lt;strong>备考周期&lt;/strong>：30 天（建议每日 2-3 小时）&lt;br>
&lt;strong>目标&lt;/strong>：一个月内通过 CKA 认证&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="-核心资源包一次性备齐">📦 核心资源包（一次性备齐）&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">资源&lt;/th>
&lt;th style="text-align:left">类型&lt;/th>
&lt;th style="text-align:left">用途&lt;/th>
&lt;th style="text-align:left">直达链接&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>KodeKloud CKA 课程&lt;/strong>&lt;/td>
&lt;td style="text-align:left">付费&lt;/td>
&lt;td style="text-align:left">建立完整知识体系&lt;/td>
&lt;td style="text-align:left">&lt;a class="link" href="https://kodekloud.com/courses/certified-kubernetes-administrator-cka/" target="_blank" rel="noopener"
>https://kodekloud.com/courses/certified-kubernetes-administrator-cka/&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Killer.sh 模拟器&lt;/strong>&lt;/td>
&lt;td style="text-align:left">考试附赠&lt;/td>
&lt;td style="text-align:left">考前全真压力测试&lt;/td>
&lt;td style="text-align:left">购考后登录 &lt;a class="link" href="https://trainingportal.linuxfoundation.org" target="_blank" rel="noopener"
>Linux Foundation 培训门户&lt;/a> 进入&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Killercoda&lt;/strong>&lt;/td>
&lt;td style="text-align:left">免费&lt;/td>
&lt;td style="text-align:left">日常碎片化实战练习&lt;/td>
&lt;td style="text-align:left">&lt;a class="link" href="https://killercoda.com/killer-shell-cka" target="_blank" rel="noopener"
>https://killercoda.com/killer-shell-cka&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>K8s 官方文档&lt;/strong>&lt;/td>
&lt;td style="text-align:left">免费（唯一法宝）&lt;/td>
&lt;td style="text-align:left">考试唯一允许查阅的资料&lt;/td>
&lt;td style="text-align:left">&lt;a class="link" href="https://kubernetes.io/docs/" target="_blank" rel="noopener"
>https://kubernetes.io/docs/&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>theplatformlab 笔记&lt;/strong>&lt;/td>
&lt;td style="text-align:left">免费&lt;/td>
&lt;td style="text-align:left">考纲笔记与速查表&lt;/td>
&lt;td style="text-align:left">&lt;a class="link" href="https://github.com/theplatformlab/CKA-Certified-Kubernetes-Administrator" target="_blank" rel="noopener"
>https://github.com/theplatformlab/CKA-Certified-Kubernetes-Administrator&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="-第-1-周集群架构安装与配置权重-25">📅 第 1 周：集群架构、安装与配置（权重 25%）&lt;/h2>
&lt;blockquote>
&lt;p>&lt;strong>核心任务&lt;/strong>：亲手用 &lt;code>kubeadm&lt;/code> 搭建集群，彻底掌握 ETCD 备份与恢复。&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 1 – K8s 架构与安装&lt;/strong>&lt;br>
理解控制平面组件；用 &lt;code>kubeadm&lt;/code> 搭建单节点集群。&lt;br>
📖 KodeKloud：集群搭建章节&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 2 – 集群配置与证书&lt;/strong>&lt;br>
了解 API Server, Scheduler, Controller Manager 配置；查看集群证书。&lt;br>
📖 KodeKloud：配置章节&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 3 – ETCD 备份与恢复（必考题）&lt;/strong>&lt;br>
掌握 &lt;code>etcdctl snapshot save/restore&lt;/code> 完整流程。&lt;br>
📖 KodeKloud：ETCD 章节 + Killercoda ETCD 场景&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 4 – RBAC 权限管理&lt;/strong>&lt;br>
熟练创建 ServiceAccount, Role, ClusterRole 及各种绑定。&lt;br>
📖 KodeKloud：RBAC 章节&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 5 – 集群升级&lt;/strong>&lt;br>
练习 &lt;code>kubeadm upgrade&lt;/code> 升级控制平面和工作节点。&lt;br>
📖 KodeKloud：升级章节&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 6 – 周巩固（实战）&lt;/strong>&lt;br>
不参考笔记，搭建 1 master + 2 worker 集群，完成一次 ETCD 备份与恢复。&lt;br>
📖 官方文档：集群管理指南&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 7 – 查漏补缺&lt;/strong>&lt;br>
复习本周卡壳的知识点，重做相关练习。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-第-2-周服务网络与存储权重-30">📅 第 2 周：服务、网络与存储（权重 30%）&lt;/h2>
&lt;blockquote>
&lt;p>&lt;strong>核心任务&lt;/strong>：深挖 NetworkPolicy、Ingress 和 PV/PVC 的细节。&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 8 – Service 详解&lt;/strong>&lt;br>
理解 ClusterIP, NodePort, LoadBalancer；掌握 &lt;code>kubectl expose&lt;/code>。&lt;br>
📖 KodeKloud：服务章节&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 9 – Ingress 配置&lt;/strong>&lt;br>
安装 Ingress Controller，创建 Ingress 实现域名访问。&lt;br>
📖 KodeKloud：Ingress 章节&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 10 – NetworkPolicy&lt;/strong>&lt;br>
编写网络策略，实现 Pod 间访问控制（Ingress/Egress 方向）。&lt;br>
📖 KodeKloud：网络策略章节 + Killercoda 网络场景&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 11 – 存储基础（PV/PVC）&lt;/strong>&lt;br>
静态供给：创建 PV、PVC，并挂载到 Pod。&lt;br>
📖 KodeKloud：存储章节&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 12 – StorageClass&lt;/strong>&lt;br>
配置 StorageClass，实现 PVC 动态供给。&lt;br>
📖 KodeKloud：存储章节&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 13 – 周巩固（实战）&lt;/strong>&lt;br>
部署带 Ingress 的 Web 应用，配置访问日志，挂载持久化存储。&lt;br>
📖 官方文档：Ingress, 存储&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 14 – 查漏补缺&lt;/strong>&lt;br>
复习本周卡壳的知识点，重做相关练习。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-第-3-周故障排查特训权重-30">📅 第 3 周：故障排查特训（权重 30%）&lt;/h2>
&lt;blockquote>
&lt;p>&lt;strong>核心任务&lt;/strong>：建立标准化排障流程，这是 CKA 高分分水岭。&lt;br>
&lt;strong>流程口诀&lt;/strong>：&lt;code>describe → logs → events → 节点日志&lt;/code>&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 15 – Pod 故障排查&lt;/strong>&lt;br>
排查 ImagePullBackOff, CrashLoopBackOff, Pending 等状态。&lt;br>
📖 KodeKloud：排障章节 + Killercoda Pod 排障场景&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 16 – 节点排障&lt;/strong>&lt;br>
排查节点 NotReady、kubelet 未启动等问题。&lt;br>
📖 Killercoda 节点排障场景&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 17 – 网络排障&lt;/strong>&lt;br>
排查 Service 无法访问、CoreDNS 解析失败等。&lt;br>
📖 Killercoda 网络排障场景&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 18 – 控制平面排障&lt;/strong>&lt;br>
模拟并修复 API Server、Scheduler 等组件异常。&lt;br>
📖 官方文档：故障排查章节&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 19 – 应用排障&lt;/strong>&lt;br>
熟练使用 &lt;code>kubectl logs&lt;/code>、&lt;code>describe&lt;/code>、&lt;code>get events&lt;/code> 排查应用问题。&lt;br>
📖 Gall-oDrone GitHub 仓库练习&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 20 – 周巩固（实战）&lt;/strong>&lt;br>
在 Killercoda 上完成 2 个综合排障场景，模拟压力环境。&lt;br>
📖 Killercoda 综合排障场景&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 21 – 查漏补缺&lt;/strong>&lt;br>
复习本周卡壳的知识点，重做相关练习。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-第-4-周全真模拟与冲刺">📅 第 4 周：全真模拟与冲刺&lt;/h2>
&lt;blockquote>
&lt;p>&lt;strong>核心任务&lt;/strong>：吃透 Killer.sh，查漏补缺，调整到最佳考试状态。&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 22 – 总复习&lt;/strong>&lt;br>
快速浏览 KodeKloud 课程笔记和 theplatformlab 考纲总结。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 23 – 第一次 Killer.sh 模拟&lt;/strong>&lt;br>
不计时。熟悉全部题型，做完后深度复盘，搞懂每道题。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 24 – 针对性补强（一）&lt;/strong>&lt;br>
根据第一次模拟的错题，回到 KodeKloud 或 Killercoda 强化训练。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 25 – 针对性补强（二）&lt;/strong>&lt;br>
继续补强，确保之前卡壳的知识点已彻底理解。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 26 – 第二次 Killer.sh 模拟&lt;/strong>&lt;br>
&lt;strong>严格计时 2 小时&lt;/strong>。目标：模拟考得分稳定在 &lt;strong>80% 以上&lt;/strong>。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 27 – 最终查漏补缺&lt;/strong>&lt;br>
复盘两次 Killer.sh 的所有错题，确保没有盲区。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 28 – 环境准备&lt;/strong>&lt;br>
运行 PSI 系统检查，确认摄像头、身份证件、网络环境。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 29 – 轻量复习与休息&lt;/strong>&lt;br>
浏览 &lt;code>kubectl&lt;/code> 速查表和官方文档目录。早睡，保证精力。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;input disabled="" type="checkbox"> &lt;strong>Day 30 – 🚀 考试日！&lt;/strong>&lt;br>
提前 30 分钟登录。先做有把握的题，果断跳过难题。相信你的训练！&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-备注考试关键提醒">📝 备注（考试关键提醒）&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>考试只有 2 小时&lt;/strong>，模拟考时务必培养时间意识。&lt;/li>
&lt;li>&lt;strong>官方文档是唯一法宝&lt;/strong>：备考练习时遇到不确定的字段，只查 &lt;code>kubernetes.io&lt;/code>，不要依赖搜索引擎。&lt;/li>
&lt;li>&lt;strong>&lt;code>--dry-run&lt;/code> 是核心技能&lt;/strong>：像用快捷键一样熟练使用 &lt;code>kubectl run/create ... --dry-run=client -o yaml&lt;/code>。&lt;/li>
&lt;li>&lt;strong>故障排查标准化流程&lt;/strong>：&lt;code>describe → logs → events → 节点日志&lt;/code>。&lt;/li>
&lt;li>&lt;strong>完成进度&lt;/strong>：每天开始前标记 &lt;code>- [ ]&lt;/code>，完成后改为 &lt;code>- [x]&lt;/code>。&lt;/li>
&lt;/ol></description></item></channel></rss>