<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Minikube on WYF 的技术博客</title><link>https://saflyer.cn/tags/minikube/</link><description>Recent content in Minikube on WYF 的技术博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 14 Sep 2026 10:03:15 +0800</lastBuildDate><atom:link href="https://saflyer.cn/tags/minikube/index.xml" rel="self" type="application/rss+xml"/><item><title>K8s 从零到实战 00（番外）：Minikube 快速体验</title><link>https://saflyer.cn/posts/k8s-00c-minikube/</link><pubDate>Sun, 13 Sep 2026 10:20:00 +0800</pubDate><guid>https://saflyer.cn/posts/k8s-00c-minikube/</guid><description>&lt;img src="https://saflyer.cn/posts/k8s-00c-minikube/cover.webp" alt="Featured image of post K8s 从零到实战 00（番外）：Minikube 快速体验" /&gt;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;定位：主线（Lima + kubeadm，见 &lt;a href="https://saflyer.cn/posts/k8s-00a-vm-system-init/"&gt;00（上）&lt;/a&gt;、&lt;a href="https://saflyer.cn/posts/k8s-00b-kernel-containerd/"&gt;00（下）&lt;/a&gt;）之外的&lt;strong&gt;对照实验&lt;/strong&gt;——用一条命令体验&amp;quot;工具帮你把集群全装好&amp;quot;的感觉，&#10;从而理解主线手动搭建的每一步都被工具藏到了哪里。&#10;体验完建议删掉，主线继续走 &lt;a href="https://saflyer.cn/posts/k8s-00a-vm-system-init/"&gt;阶段 0（上）&lt;/a&gt;。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;h2 id="0-minikube-与主线的区别"&gt;&lt;a href="#0-minikube-%e4%b8%8e%e4%b8%bb%e7%ba%bf%e7%9a%84%e5%8c%ba%e5%88%ab" class="header-anchor"&gt;&lt;/a&gt;0. Minikube 与主线的区别&#10;&lt;/h2&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;维度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Minikube&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;主线：Lima + kubeadm&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;集群怎么来&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;一条命令，全自动&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;每个组件亲手装&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;节点形态&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Docker 容器（或虚拟机）里的&amp;quot;模拟节点&amp;quot;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;完整的 Rocky Linux 虚拟机&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;组件可见性&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;黑盒（etcd/apiserver 藏在容器里）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;透明（systemd 服务，可查可拆）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;对应生产&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;偏离较多&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1:1 对应&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;适合&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;快速用 k8s 跑应用&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;学懂 k8s 本身&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="1-安装mac-上执行"&gt;&lt;a href="#1-%e5%ae%89%e8%a3%85mac-%e4%b8%8a%e6%89%a7%e8%a1%8c" class="header-anchor"&gt;&lt;/a&gt;1. 安装（Mac 上执行）&#10;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-0-1"&gt;&lt;a class="lnlinks" href="#hl-0-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-2"&gt;&lt;a class="lnlinks" href="#hl-0-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-3"&gt;&lt;a class="lnlinks" href="#hl-0-3"&gt;3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-4"&gt;&lt;a class="lnlinks" href="#hl-0-4"&gt;4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-0-5"&gt;&lt;a class="lnlinks" href="#hl-0-5"&gt;5&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install minikube&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 验证&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;minikube version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 预期输出：minikube version: v1.x.x&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;驱动选择&lt;/strong&gt;：用 &lt;code&gt;--driver=docker&lt;/code&gt;——你已装 Docker Desktop，minikube 直接复用它，&#10;不需要再开一台虚拟机（这也是它轻量的原因：k8s 节点就是一个 Docker 容器）。&lt;/p&gt;&#10;&lt;h2 id="2-启动集群国内网络参数必加"&gt;&lt;a href="#2-%e5%90%af%e5%8a%a8%e9%9b%86%e7%be%a4%e5%9b%bd%e5%86%85%e7%bd%91%e7%bb%9c%e5%8f%82%e6%95%b0%e5%bf%85%e5%8a%a0" class="header-anchor"&gt;&lt;/a&gt;2. 启动集群（国内网络参数必加）&#10;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-1-1"&gt;&lt;a class="lnlinks" href="#hl-1-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;minikube start --driver&lt;span class="o"&gt;=&lt;/span&gt;docker --image-mirror-country&lt;span class="o"&gt;=&lt;/span&gt;cn&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;--image-mirror-country=cn&lt;/code&gt;：k8s 组件镜像改从阿里云镜像站拉取（&lt;code&gt;registry.cn-hangzhou.aliyuncs.com/google_containers&lt;/code&gt;），不加会因为 gcr.io 被墙而卡死。&#10;它等价于主线 kubeadm 配置里的 &lt;code&gt;imageRepository: registry.aliyuncs.com/google_containers&lt;/code&gt;（阶段 1 会写到），只是一个走命令行开关、一个写进配置文件&lt;/li&gt;&#10;&lt;li&gt;首次启动要下载节点基础镜像（约 1GB），耐心等几分钟&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;预期输出&lt;/strong&gt;（结尾）：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-2-1"&gt;&lt;a class="lnlinks" href="#hl-2-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;🏄 Done! kubectl is now configured to use &amp;#34;minikube&amp;#34; cluster and &amp;#34;default&amp;#34; namespace by default&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="3-验证集群"&gt;&lt;a href="#3-%e9%aa%8c%e8%af%81%e9%9b%86%e7%be%a4" class="header-anchor"&gt;&lt;/a&gt;3. 验证集群&#10;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-3-1"&gt;&lt;a class="lnlinks" href="#hl-3-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-3-2"&gt;&lt;a class="lnlinks" href="#hl-3-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 集群状态&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;minikube status&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;实测输出（2026-09-13，minikube v1.36.0 / k8s v1.33.1）：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-4-1"&gt;&lt;a class="lnlinks" href="#hl-4-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-4-2"&gt;&lt;a class="lnlinks" href="#hl-4-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-4-3"&gt;&lt;a class="lnlinks" href="#hl-4-3"&gt;3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-4-4"&gt;&lt;a class="lnlinks" href="#hl-4-4"&gt;4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-4-5"&gt;&lt;a class="lnlinks" href="#hl-4-5"&gt;5&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-4-6"&gt;&lt;a class="lnlinks" href="#hl-4-6"&gt;6&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;minikube&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;type: Control Plane&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;host: Running&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubelet: Running&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apiserver: Running&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubeconfig: Configured&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-5-1"&gt;&lt;a class="lnlinks" href="#hl-5-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-5-2"&gt;&lt;a class="lnlinks" href="#hl-5-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 节点（minikube 自动配好了 Mac 上的 kubectl 上下文）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get nodes&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-6-1"&gt;&lt;a class="lnlinks" href="#hl-6-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-6-2"&gt;&lt;a class="lnlinks" href="#hl-6-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;NAME STATUS ROLES AGE VERSION&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;minikube Ready control-plane 52s v1.33.1&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-7-1"&gt;&lt;a class="lnlinks" href="#hl-7-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-7-2"&gt;&lt;a class="lnlinks" href="#hl-7-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 系统组件&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get pods -n kube-system&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-8-1"&gt;&lt;a class="lnlinks" href="#hl-8-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-2"&gt;&lt;a class="lnlinks" href="#hl-8-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-3"&gt;&lt;a class="lnlinks" href="#hl-8-3"&gt;3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-4"&gt;&lt;a class="lnlinks" href="#hl-8-4"&gt;4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-5"&gt;&lt;a class="lnlinks" href="#hl-8-5"&gt;5&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-6"&gt;&lt;a class="lnlinks" href="#hl-8-6"&gt;6&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-7"&gt;&lt;a class="lnlinks" href="#hl-8-7"&gt;7&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-8-8"&gt;&lt;a class="lnlinks" href="#hl-8-8"&gt;8&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;NAME READY STATUS RESTARTS AGE&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;coredns-746c97786-gpmv9 1/1 Running 0 51s&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;etcd-minikube 1/1 Running 0 57s&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kube-apiserver-minikube 1/1 Running 0 57s&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kube-controller-manager-minikube 1/1 Running 0 57s&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kube-proxy-6v4nl 1/1 Running 0 52s&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kube-scheduler-minikube 1/1 Running 0 57s&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;storage-provisioner 1/1 Running 0 56s&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-9-1"&gt;&lt;a class="lnlinks" href="#hl-9-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-9-2"&gt;&lt;a class="lnlinks" href="#hl-9-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-9-3"&gt;&lt;a class="lnlinks" href="#hl-9-3"&gt;3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-9-4"&gt;&lt;a class="lnlinks" href="#hl-9-4"&gt;4&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 终极验证：跑一个真 Pod（和主线的验收标准一样）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl run nginx-test --image&lt;span class="o"&gt;=&lt;/span&gt;nginx&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get pods -w &lt;span class="c1"&gt;# 看到 Running 后 Ctrl+C&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl delete pod nginx-test&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-10-1"&gt;&lt;a class="lnlinks" href="#hl-10-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-10-2"&gt;&lt;a class="lnlinks" href="#hl-10-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;NAME READY STATUS RESTARTS AGE&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nginx-test 0/1 ContainerCreating 0 5s&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;⚠️ 若 &lt;code&gt;ContainerCreating&lt;/code&gt; 超过一两分钟不动，是节点内的 containerd 拉不动 docker.io&#10;（Docker Hub 被墙），解法见第 5 节表格第 4 行（实测 2026-09-13 即遇到此情况）；&#10;用 &lt;code&gt;kubectl describe pod nginx-test&lt;/code&gt; 看 Events，卡在 &lt;code&gt;Pulling image &amp;quot;nginx&amp;quot;&lt;/code&gt; 即是。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;🔍 &lt;strong&gt;对比观察点&lt;/strong&gt;（体验的价值所在）：&#10;上面的命令和主线一模一样——这就是&amp;quot;工具标准化&amp;quot;的好处。&#10;但你想想：swap 谁关的？SELinux 谁管的？pause 镜像谁换的？CNI 谁装的？&#10;全被 minikube 藏掉了。这些答案你都知道，因为你亲手做过——这就是主线带给你的。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;h2 id="4-日常管理命令"&gt;&lt;a href="#4-%e6%97%a5%e5%b8%b8%e7%ae%a1%e7%90%86%e5%91%bd%e4%bb%a4" class="header-anchor"&gt;&lt;/a&gt;4. 日常管理命令&#10;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-11-1"&gt;&lt;a class="lnlinks" href="#hl-11-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-11-2"&gt;&lt;a class="lnlinks" href="#hl-11-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-11-3"&gt;&lt;a class="lnlinks" href="#hl-11-3"&gt;3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-11-4"&gt;&lt;a class="lnlinks" href="#hl-11-4"&gt;4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-11-5"&gt;&lt;a class="lnlinks" href="#hl-11-5"&gt;5&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-11-6"&gt;&lt;a class="lnlinks" href="#hl-11-6"&gt;6&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-11-7"&gt;&lt;a class="lnlinks" href="#hl-11-7"&gt;7&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;minikube stop &lt;span class="c1"&gt;# 停止集群（数据保留）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;minikube start &lt;span class="c1"&gt;# 再次启动（不用再加参数，配置已记住）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;minikube delete &lt;span class="c1"&gt;# 彻底删除集群（体验完用它）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;minikube ip &lt;span class="c1"&gt;# 查看节点 IP&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;minikube ssh &lt;span class="c1"&gt;# 进入节点容器里看看&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;minikube dashboard &lt;span class="c1"&gt;# 打开 Web 控制台（可选，会再拉几个镜像）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;minikube logs &lt;span class="c1"&gt;# 启动失败时看日志&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="5-国内网络预案启动卡住时看这里"&gt;&lt;a href="#5-%e5%9b%bd%e5%86%85%e7%bd%91%e7%bb%9c%e9%a2%84%e6%a1%88%e5%90%af%e5%8a%a8%e5%8d%a1%e4%bd%8f%e6%97%b6%e7%9c%8b%e8%bf%99%e9%87%8c" class="header-anchor"&gt;&lt;/a&gt;5. 国内网络预案（启动卡住时看这里）&#10;&lt;/h2&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;现象&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;原因&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;解法&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;提示 &lt;code&gt;cannot pull kicbase image&lt;/code&gt;，转而从 GitHub 下载 &lt;code&gt;kicbase-vX.X.X-arm64.tar&lt;/code&gt;，几十 KB/s&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--image-mirror-country=cn&lt;/code&gt; 只管 K8s 组件镜像；kicbase 底座（约 1.2GB）拉取失败后，minikube 兜底从 GitHub Release 直下 tar 包，国内直连要几个小时&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;① Ctrl+C；② 手动拉底座镜像（tag 以启动日志&amp;quot;正在拉取基础镜像 vX&amp;quot;为准）：&lt;code&gt;docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.47&lt;/code&gt;；③ 重跑加 &lt;code&gt;--base-image=registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.47&lt;/code&gt;，命中本地镜像，下载整段跳过&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;想让 GitHub 兜底下载本身变快&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;minikube 本体的 HTTP 下载会读 Shell 的代理变量&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;开 Clash 后带变量重跑：&lt;code&gt;HTTPS_PROXY=http://127.0.0.1:7897 minikube start --driver=docker --image-mirror-country=cn&lt;/code&gt;（代理也会被自动注入节点容器）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;k8s 组件镜像拉取失败（preload 阶段卡住）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;gcr.io 被墙，或此时直连阿里云被拦&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;确认 &lt;code&gt;--image-mirror-country=cn&lt;/code&gt;；仍卡住就 Ctrl+C，开 Clash、带上面的代理变量重跑&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Pod 的镜像（nginx 等）拉不动，&lt;code&gt;ContainerCreating&lt;/code&gt; 卡住&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;docker.io 被墙。&lt;strong&gt;注意&lt;/strong&gt;：kubectl 跑的 Pod 由节点容器内的 containerd 拉镜像，Docker Desktop 的 registry-mirrors 管不到它&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;① 重建集群时加 &lt;code&gt;--registry-mirror=https://docker.m.daocloud.io&lt;/code&gt;；② 或镜像名直接带前缀：&lt;code&gt;kubectl run nginx-test --image=docker.m.daocloud.io/library/nginx&lt;/code&gt;（可配合 &lt;code&gt;minikube image pull &amp;lt;镜像&amp;gt;&lt;/code&gt; 先手动拉进节点）；③ &lt;code&gt;kubectl describe pod &amp;lt;名&amp;gt;&lt;/code&gt; 看 Events 确认是否卡在 Pulling&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;全都不行&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Mac 直连被拦（公司安全软件）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;打开 Clash（允许局域网），Docker Desktop → Settings → Resources → Proxies 填 &lt;code&gt;http://127.0.0.1:7897&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&lt;strong&gt;原理：一次 &lt;code&gt;minikube start&lt;/code&gt; 里藏着三条网络通道，代理配置各有各的地盘&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;通道&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;谁在发请求&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;代理怎么配&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;① minikube CLI 自己的 HTTP 下载（GitHub 兜底 tar 包等）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Mac 上的 minikube 进程&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;shell 环境变量 &lt;code&gt;HTTPS_PROXY=...&lt;/code&gt;，它自己会读&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;② dockerd 拉镜像（kicbase、业务镜像）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Docker Desktop 虚拟机里的 dockerd&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;看不到 shell 变量&lt;/strong&gt;；只能配 Docker Desktop → Settings → Resources → Proxies&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;③ 节点容器内拉 K8s 组件镜像&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;minikube 节点容器里的 containerd&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;minikube 检测到 ① 的代理变量后会自动注入节点（&lt;code&gt;127.0.0.1&lt;/code&gt; 自动换成 &lt;code&gt;host.docker.internal&lt;/code&gt;，前提是 Clash 开了 Allow LAN）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&lt;strong&gt;Clash 的另一个坑&lt;/strong&gt;：规则模式下，阿里云这类国内域名默认走 DIRECT（直连），根本没上代理节点。&#10;所以&amp;quot;开了 Clash&amp;quot; ≠ &amp;ldquo;走了代理&amp;rdquo;——直连被安全软件限速时，走 DIRECT 的流量照样慢。&#10;要让国内站点也过代理，得切全局（Global）模式。&#10;排查时先想清楚当前卡在哪个通道，再决定改哪边的配置。&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;&lt;strong&gt;实战记录（2026-09-13）&lt;/strong&gt;：首次启动时 kicbase 拉取失败转 GitHub（74KB/s，ETA 4 小时+），&#10;实测当时 Mac 直连阿里云镜像站只有 11KB/s——与 Lima 虚拟机那次是同根因（企业安全软件拦截）。&#10;排查中发现 kicbase 镜像本地已存在（&lt;code&gt;docker images | grep kicbase&lt;/code&gt; 确认），&#10;于是用 &lt;code&gt;--base-image&lt;/code&gt; 直接指向本地镜像跳过下载。注意这只解决了底座镜像，&#10;后续 preload 阶段还要从阿里云拉几百 MB 的 K8s 组件镜像，网络不好时仍需代理。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;实战记录 2（同日）&lt;/strong&gt;：中途 Ctrl+C 后重跑依然很慢，且开 Clash + &lt;code&gt;HTTPS_PROXY&lt;/code&gt; 无效。&#10;查 &lt;code&gt;~/.minikube/logs/lastStart.txt&lt;/code&gt; 发现剧情已变：&#10;上次没下完的 tar 包（464MB/1.17GB）残留在 &lt;code&gt;~/.minikube/cache/kic/&lt;/code&gt; 里，&#10;minikube 误判&amp;quot;有缓存&amp;quot;，加载时报 &lt;code&gt;tag ... not found in tarball&lt;/code&gt;（残缺包），&#10;随后走第二兜底——从 &lt;strong&gt;docker.io（Docker Hub，被墙）&lt;/strong&gt; 拉 &lt;code&gt;kicbase/stable&lt;/code&gt;。&#10;而 &lt;code&gt;HTTPS_PROXY&lt;/code&gt; 只对 minikube 本体的 HTTP 下载生效，&lt;strong&gt;管不到 Docker Desktop 里 dockerd 的拉取&lt;/strong&gt;&#10;（dockerd 走代理要在 Docker Desktop → Settings → Resources → Proxies 里配）。&#10;解法：删掉残缺缓存包 &lt;code&gt;rm ~/.minikube/cache/kic/arm64/kicbase_*.tar&lt;/code&gt;，&#10;加 &lt;code&gt;--base-image&lt;/code&gt; 指向本地完好镜像重跑。&lt;/p&gt;&#10;&lt;p&gt;教训：minikube 启动卡住时，先看 &lt;code&gt;~/.minikube/logs/lastStart.txt&lt;/code&gt; 确认&lt;strong&gt;到底卡在哪一步、在连谁&lt;/strong&gt;，&#10;再决定对策——不同阶段（CLI 下载 / dockerd 拉取 / 节点内 containerd 拉取）走的网络通道完全不同。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;实战记录 3（同日）&lt;/strong&gt;：集群验证时 &lt;code&gt;kubectl run nginx-test --image=nginx&lt;/code&gt; 卡 &lt;code&gt;ContainerCreating&lt;/code&gt;，&#10;&lt;code&gt;kubectl describe pod&lt;/code&gt; 显示 &lt;code&gt;Pulling image &amp;quot;nginx&amp;quot;&lt;/code&gt; 超百秒——节点内 containerd 直连 docker.io 被墙&#10;（通道 ③，Docker Desktop 的镜像代理设置管不到）。&#10;解法：&lt;code&gt;minikube image pull docker.m.daocloud.io/library/nginx&lt;/code&gt; 预拉进节点（约 6 分钟），&#10;删掉旧 Pod 后用带前缀的镜像名重建，5 秒 Running。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;注意：minikube 跑在 Docker Desktop 的虚拟机里，&lt;strong&gt;它的网络是 Docker Desktop 管的&lt;/strong&gt;，&#10;和你 Lima 虚拟机的 192.168.5.x/192.168.64.x 完全是两个世界，互不影响。&#10;排查思路可复用主线的分层法（&lt;a href="https://saflyer.cn/posts/k8s-00a-vm-system-init/"&gt;阶段 0（上）附录 A&lt;/a&gt;）。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;h2 id="6-体验完收拾干净"&gt;&lt;a href="#6-%e4%bd%93%e9%aa%8c%e5%ae%8c%e6%94%b6%e6%8b%be%e5%b9%b2%e5%87%80" class="header-anchor"&gt;&lt;/a&gt;6. 体验完收拾干净&#10;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-12-1"&gt;&lt;a class="lnlinks" href="#hl-12-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-12-2"&gt;&lt;a class="lnlinks" href="#hl-12-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;minikube delete&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Docker Desktop 里的 minikube 容器会被删除；brew uninstall minikube 可卸载本体&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="7-原理深挖一条命令背后发生了什么"&gt;&lt;a href="#7-%e5%8e%9f%e7%90%86%e6%b7%b1%e6%8c%96%e4%b8%80%e6%9d%a1%e5%91%bd%e4%bb%a4%e8%83%8c%e5%90%8e%e5%8f%91%e7%94%9f%e4%ba%86%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;7. 原理深挖：一条命令背后发生了什么&#10;&lt;/h2&gt;&lt;h3 id="71-四层套娃你的-pod-实际跑在哪"&gt;&lt;a href="#71-%e5%9b%9b%e5%b1%82%e5%a5%97%e5%a8%83%e4%bd%a0%e7%9a%84-pod-%e5%ae%9e%e9%99%85%e8%b7%91%e5%9c%a8%e5%93%aa" class="header-anchor"&gt;&lt;/a&gt;7.1 四层套娃：你的 Pod 实际跑在哪&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-13-1"&gt;&lt;a class="lnlinks" href="#hl-13-1"&gt; 1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-13-2"&gt;&lt;a class="lnlinks" href="#hl-13-2"&gt; 2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-13-3"&gt;&lt;a class="lnlinks" href="#hl-13-3"&gt; 3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-13-4"&gt;&lt;a class="lnlinks" href="#hl-13-4"&gt; 4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-13-5"&gt;&lt;a class="lnlinks" href="#hl-13-5"&gt; 5&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-13-6"&gt;&lt;a class="lnlinks" href="#hl-13-6"&gt; 6&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-13-7"&gt;&lt;a class="lnlinks" href="#hl-13-7"&gt; 7&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-13-8"&gt;&lt;a class="lnlinks" href="#hl-13-8"&gt; 8&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-13-9"&gt;&lt;a class="lnlinks" href="#hl-13-9"&gt; 9&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-13-10"&gt;&lt;a class="lnlinks" href="#hl-13-10"&gt;10&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-13-11"&gt;&lt;a class="lnlinks" href="#hl-13-11"&gt;11&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;macOS（你的 Mac）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── Docker Desktop 的 Linux 虚拟机&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ 容器共享宿主机内核，macOS 的内核不是 Linux，&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ 所以 Mac 上要跑 Linux 容器必须先有这台 Linux VM&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── minikube 节点容器（kicbase 镜像）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ 一个&amp;#34;假装自己是台完整服务器&amp;#34;的容器：内置 systemd、containerd、kubeadm&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── systemd ── 管理 kubelet（和主线 Rocky 虚拟机里一模一样的形态）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── containerd ── 节点自己的容器运行时（独立于 Docker Desktop 的 dockerd）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── 控制面静态 Pod：etcd / apiserver / scheduler / controller-manager&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ （清单位于 /etc/kubernetes/manifests，kubeadm 的标准做法）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── 你的业务 Pod（nginx-test 就跑在这里）&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;要点：minikube 节点&lt;strong&gt;不是虚拟机&lt;/strong&gt;，而是 Docker Desktop 那台 Linux VM 里的一个容器。&#10;kicbase（Kubernetes in Container）的绝活是把 systemd 塞进容器，&#10;于是 kubelet、containerd 都能以真实服务器的形态运行——&#10;你在主线阶段 0/1 亲手做的每件事，它都在这个容器里替你预置好了。&lt;/p&gt;&#10;&lt;h3 id="72-对照主线它把哪些步骤藏掉了"&gt;&lt;a href="#72-%e5%af%b9%e7%85%a7%e4%b8%bb%e7%ba%bf%e5%ae%83%e6%8a%8a%e5%93%aa%e4%ba%9b%e6%ad%a5%e9%aa%a4%e8%97%8f%e6%8e%89%e4%ba%86" class="header-anchor"&gt;&lt;/a&gt;7.2 对照主线：它把哪些步骤藏掉了&#10;&lt;/h3&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;主线亲手做（阶段 0/1）&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;minikube 藏到哪&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;关 swap、注释 fstab&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;kicbase 镜像本身无 swap&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;SELinux 设宽容、关防火墙&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;容器里没有这套安全体系&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;加载 br_netfilter、调 sysctl&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;节点容器启动时自动完成&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;装 containerd、配 certs.d 镜像代理&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;containerd 内置于 kicbase；&lt;code&gt;--registry-mirror&lt;/code&gt; 可注入代理配置&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;kubeadm init、证书签发&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;minikube 在节点内调用内置 kubeadm 自动完成&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;装 CNI 插件&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;内置轻量 CNI（kindnet）默认装好&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;写 kubeconfig、切上下文&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;自动写入 &lt;code&gt;~/.kube/config&lt;/code&gt; 并设为当前上下文&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h3 id="73-kubectl-是怎么连上容器里的集群的"&gt;&lt;a href="#73-kubectl-%e6%98%af%e6%80%8e%e4%b9%88%e8%bf%9e%e4%b8%8a%e5%ae%b9%e5%99%a8%e9%87%8c%e7%9a%84%e9%9b%86%e7%be%a4%e7%9a%84" class="header-anchor"&gt;&lt;/a&gt;7.3 kubectl 是怎么连上&amp;quot;容器里的集群&amp;quot;的&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;API server 在节点容器内部监听 8443&lt;/li&gt;&#10;&lt;li&gt;Docker 把容器的 8443 映射到 Mac 的 &lt;code&gt;127.0.0.1:&amp;lt;随机端口&amp;gt;&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;minikube 把 server 地址 + CA + 客户端证书写进 &lt;code&gt;~/.kube/config&lt;/code&gt; 的 minikube 上下文&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;动手验证（两个端口应一致）：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-14-1"&gt;&lt;a class="lnlinks" href="#hl-14-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-14-2"&gt;&lt;a class="lnlinks" href="#hl-14-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker port minikube &lt;span class="c1"&gt;# 8443/tcp -&amp;gt; 127.0.0.1:xxxxx&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl config view --minify &lt;span class="p"&gt;|&lt;/span&gt; grep server &lt;span class="c1"&gt;# server: https://127.0.0.1:xxxxx&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h3 id="74-进节点亲眼看看强烈建议"&gt;&lt;a href="#74-%e8%bf%9b%e8%8a%82%e7%82%b9%e4%ba%b2%e7%9c%bc%e7%9c%8b%e7%9c%8b%e5%bc%ba%e7%83%88%e5%bb%ba%e8%ae%ae" class="header-anchor"&gt;&lt;/a&gt;7.4 进节点亲眼看看（强烈建议）&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="hl-15-1"&gt;&lt;a class="lnlinks" href="#hl-15-1"&gt;1&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-15-2"&gt;&lt;a class="lnlinks" href="#hl-15-2"&gt;2&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-15-3"&gt;&lt;a class="lnlinks" href="#hl-15-3"&gt;3&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-15-4"&gt;&lt;a class="lnlinks" href="#hl-15-4"&gt;4&lt;/a&gt;&#10;&lt;/span&gt;&lt;span class="lnt" id="hl-15-5"&gt;&lt;a class="lnlinks" href="#hl-15-5"&gt;5&lt;/a&gt;&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;minikube ssh &lt;span class="c1"&gt;# 进节点容器&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl status kubelet --no-pager &lt;span class="c1"&gt;# kubelet 就是 systemd 服务，和主线一致&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls /etc/kubernetes/manifests &lt;span class="c1"&gt;# 控制面静态 Pod 清单，kubeadm 同款&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo crictl images &lt;span class="c1"&gt;# 节点内 containerd 的镜像（前缀全是阿里云）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;exit&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;看完你就明白：minikube ≈ 把&amp;quot;阶段 0 + 阶段 1 的全部手工&amp;quot;自动化后塞进一个容器。&#10;它替你省掉的每一步，都是你主线练过的每一步。&lt;/p&gt;&#10;&lt;h3 id="75-缓存与兜底链呼应第-5-节实战记录"&gt;&lt;a href="#75-%e7%bc%93%e5%ad%98%e4%b8%8e%e5%85%9c%e5%ba%95%e9%93%be%e5%91%bc%e5%ba%94%e7%ac%ac-5-%e8%8a%82%e5%ae%9e%e6%88%98%e8%ae%b0%e5%bd%95" class="header-anchor"&gt;&lt;/a&gt;7.5 缓存与兜底链（呼应第 5 节实战记录）&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;K8s 组件镜像：minikube 先在 Mac 侧下载成 tar 存到 &lt;code&gt;~/.minikube/cache/images/&lt;/code&gt;，再装进节点——所以第二次 start 飞快&lt;/li&gt;&#10;&lt;li&gt;kicbase 底座的获取兜底链：本地 docker 已有 → 镜像仓库拉取（cn 参数指向阿里云）→ GitHub Release 直下 tar 包 → &lt;code&gt;docker.io/kicbase/stable&lt;/code&gt;；缓存 tar 在 &lt;code&gt;~/.minikube/cache/kic/&lt;/code&gt;，&lt;strong&gt;残缺缓存会投毒&lt;/strong&gt;（实战记录 2）&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;minikube image pull &amp;lt;镜像&amp;gt;&lt;/code&gt; = 替你进节点让 containerd 拉镜像（通道 ③），拉完业务 Pod 秒起（实战记录 3）&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="76-为什么说它偏离生产"&gt;&lt;a href="#76-%e4%b8%ba%e4%bb%80%e4%b9%88%e8%af%b4%e5%ae%83%e5%81%8f%e7%a6%bb%e7%94%9f%e4%ba%a7" class="header-anchor"&gt;&lt;/a&gt;7.6 为什么说它&amp;quot;偏离生产&amp;quot;&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;节点是容器不是虚拟机：没有独立内核（与 Docker Desktop 的 VM 共享）、systemd 是被改造塞进容器的、网络是 docker 桥接而非真实节点网卡&lt;/li&gt;&#10;&lt;li&gt;单节点：控制面和业务负载挤在一起，练不到多节点、高可用&lt;/li&gt;&#10;&lt;li&gt;结论：它适合&amp;quot;用 K8s 跑东西&amp;quot;，不适合&amp;quot;理解 K8s 怎么活的&amp;quot;——所以本篇只是番外，主线 Lima + kubeadm 才是正菜&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="小结"&gt;&lt;a href="#%e5%b0%8f%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;小结&#10;&lt;/h2&gt;&lt;p&gt;Minikube 一分钟给你集群，主线一天教你集群——两个都体验过，&#10;你就同时拥有了&amp;quot;用的效率&amp;quot;和&amp;quot;修的底气&amp;quot;。回主线：阶段 1「搭建集群」（系列第 1 篇，即将发布）。&lt;/p&gt;&#10;</description></item></channel></rss>