news 2026/4/15 21:25:07

从 0 到 1 理解 Kubernetes:一次“破坏式”学习实践(一)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从 0 到 1 理解 Kubernetes:一次“破坏式”学习实践(一)

前言

在公司里,我确实接触过 Kubernetes,但实际办公场景并不多,更多是维护、偶尔改配置、偶尔排问题,而不是从零搭建或深度理解它的工作机制。

我自己也用过:

  • minikube
  • kubeadm 快速部署
  • 各种一键脚本

包括也看了很多视频,觉得“懂了”,可过一段时间都忘的七七八八:

  • etcd 是干嘛的?
  • apiserver 和 controller 怎么协作?
  • 网络是怎么通的?
  • kubelet 具体干了什么?

面试问到原理时,总是:

“大概是这样……但细节我记不清了。”

且公司与 Kubernetes 相关 业务/系统 太少了,没什么学习、锻炼机会,所以,这次,我决定换一种学习方式:

不用任何自动化工具,不用 kubeadm,不用 Helm,不用一键脚本。

要做的是:

  • 从二进制开始部署
  • 手动生成证书
  • 删除证书、删除etcd、拔掉节点等

实现目标

  1. 理解 Kubernetes 的完整工作流
  2. 理解各组件的边界
  3. 理解网络模型
  4. 理解存储抽象
  5. 理解控制面是怎么维持状态一致性的
  6. 能定位问题
  7. 能恢复系统

一、参考资料

本次学习主要参考:

Kubernetes The Hard Way 官方项目:

  • kubernetes-the-hard-way
  • kelseyhightower / kubernetes-the-hard-way

Kelsey Hightower 的公开视频教程:

  • Kubernetes The Hard Way by Kelsey Hightower | Build Your Own Cluster From Scratch!
  • aghilish / kubernetes-the-hard-way

个人建议最好先看 rockylinux 的官方教程,自己理解并做一遍
本人是结合两者去做的
相较于官方教程,本博文或多做一些原理说明


二、环境准备

为了避免在 VMware 里做嵌套虚拟化,我直接准备了一台实体 PC:

尽可能一台实体机完成所有部署以及“破坏式”实验

项目配置
内存16GB
硬盘1TB
CPUi5
系统Ubuntu 24.04 LTS

因为要用到虚拟机脚本(懒得手敲),所以下aghilish的仓库,此外没什么其他区别:

git clone https://github.com/aghilish/kubernetes-the-hard-way.git -b youtube-tutorial

按文档(官方)说的,准备四台机:

NameDescriptionCPURAMStorage
jumpboxAdministration host1512MB10GB
serverKubernetes server12GB20GB
node-0Kubernetes worker node12GB20GB
node-1Kubernetes worker node12GB20GB

文档里让我执行一个launch.sh脚本:

# launch.shmultipass launch --name jumpbox --cpus1--memory 512M --disk 10G --cloud-init configs/debian-cloud-init.yaml multipass launch --name server --cpus1--memory 2G --disk 20G --cloud-init configs/debian-cloud-init.yaml multipass launch --name node-0 --cpus1--memory 2G --disk 20G --cloud-init configs/debian-cloud-init.yaml multipass launch --name node-1 --cpus1--memory 2G --disk 20G --cloud-init configs/debian-cloud-init.yaml

打字就是使用multipass来生成四台虚拟机

三、Multipass 原理

multipass 我也没用过(以往用的都是vmware),查了一下,原理大概如下:

它是一个极简命令行虚拟机管理器

很多人会误以为它是容器,其实不是。

工具本质
Docker容器
LXC系统容器
VirtualBoxGUI 虚拟机
VMware企业级虚拟化
Multipass命令行 VM 管理器

它创建的是:

真正的虚拟机,不是容器。

底层结构

Multipass 本身并不实现虚拟化,它只是一个控制层:

你 ↓ multipass CLI ↓ multipass daemon ↓ 系统虚拟化引擎(KVM / Hyper-V / Hypervisor.framework)

在 Linux 上,它使用:

KVM + QEMU

也就是说,它依赖:

  • CPU 虚拟化指令集(VT-x / AMD-V)
  • /dev/kvm
  • 内核虚拟化模块

这也是为什么:

你不能在 VMware 虚拟机里再用 Multipass 开虚拟机(默认情况下)。

这是典型的:

Nested Virtualization 问题

命令解释

multipass launch --name jumpbox --cpus1--memory 512M --disk 10G --cloud-init configs/debian-cloud-init.yaml

multipass launch用于创建并启动一台新的虚拟机

--cloud-init用于在虚拟机启动时注入初始化配置,例如:

  • 用户
  • 密码
  • SSH
  • 镜像源
  • 基础工具

详细可以到configs/debian-cloud-init.yaml文件里面去看


四、启动虚拟机并验证

snapinstallmultipasssh./launch.sh

验证:

multipass list multipass shell jumpboxuname-mov

五、部署说明

上面准备好虚拟机,这里简单说明一下,为什么要四台机:

  • Jumpbox
  • master
  • node-1
  • node-1,
    后面三个都很好理解(组 kubernetes 集群)。

主要说一下 Jumpbox ,官方说明如下:

Think of the jumpbox as the administration machine you will use as a home base when setting up your Kubernetes cluster from the ground up. One thing you need to do before you get started is to install a few command line utilities and clone the Kubernetes The Hard Way git repository, which contains some additional configuration files that you will use to configure various Kubernetes components throughout this tutorial.

可把它理解为,是一个专门用来“操作集群”的管理节点

它的职责是:

  • 不运行任何 Kubernetes 组件

  • 不承载业务

  • 只做三件事:

    • 分发配置
    • 分发证书
    • 执行管理命令

JumpServer之类的是类似的。


六、Jumpbox

官方教程用的是 Rocky Linux(dnf),我这里用的是 Ubuntu / Debian 系(虚拟机),命令会有点不一样。
所以安装软件都是使用apt install

1. 进入 jumpbox 并安装基础工具

multipass shell jumpboxsudoapt-get-yinstallwgetcurlvimopensslgit

2. 下载对应文件

下载配套教程文件

gitclone --depth1\https://github.com/wsoyinka/kubernetes-the-hard-way.gitcdkubernetes-the-hard-way

下载二进制文件(避免 kubernetes 节点多次下载相同文件)

wget-q --show-progress\--https-only\--timestamping\-P downloads\-i downloads.txtls-loh downloads

3. 安装 kubectl

官方说明:

In this section, you will install the kubectl, the official Kubernetes client command line tool, on the jumpbox machine. You will use kubectl to interact with the Kubernetes control plane after the provisioning of your cluster completes later in this tutorial.

jumpbox 是未来所有集群管理操作的入口,所以这里需要提前安装 kubectl。

chmod+x downloads/kubectlcpdownloads/kubectl /usr/local/bin/

验证:

kubectl version --client

七、hosts 配置

官方教程 hosts 部分比较啰嗦,如果大家明白它做什么用的手动复制上去都可以

在宿主机上,查看所有虚拟机 IP:

multipass list# 输出如下:Name State IPv4 Image jumpbox Running10.182.70.218 Ubuntu24.04LTS node-0 Running10.182.70.221 Ubuntu24.04LTS node-1 Running10.182.70.234 Ubuntu24.04LTS server Running10.182.70.26 Ubuntu24.04LTS

在宿主机上追加 hosts

vim/etc/hosts# 追加10.182.70.218 jumpbox10.182.70.26 server.kubernetes.local server10.182.70.221 node-0.kubernetes.local node-010.200.0.0/2410.182.70.234 node-1.kubernetes.local node-110.200.1.0/24

新建一份文件并追加给虚拟机的 hosts

cat<<'EOF'>hosts.append10.182.70.218 jumpbox 10.182.70.26 server.kubernetes.local server 10.182.70.221 node-0.kubernetes.local node-0 10.200.0.0/24 10.182.70.234 node-1.kubernetes.local node-1 10.200.1.0/24 EOFforvmin$(multipass list --format csv|tail-n +2|cut-d, -f1);doecho"Processing$vm"multipassexec"$vm"--sudotee-a /etc/hosts<hosts.append>/dev/nulldone# 验证multipassexecnode-0 --tail-n10/etc/hosts

八、SSH 配置

目的是实现 jumpbox 可以 ssh 免密登录到另外3台虚拟机

1. 开启 SSH

在宿主机上操作:

批量配置所有虚拟机 SSH(开启 Root 账号登录)

forvmin$(multipass list --format csv|tail-n +2|cut-d, -f1);domultipassexec"$vm"--sudosed-i's/^#PermitRootLogin.*/PermitRootLogin yes/'/etc/ssh/sshd_config&&systemctl daemon-reload&&systemctl restartssh;done

批量配置 Root 账号密码

# 一句话命令改密码# echo "root:YourPassword" | sudo chpasswd# multipass exec node-1 -- bash -c "echo 'root:123' | sudo chpasswd && sudo passwd -u root"# 批量修改为 “123”forvmin$(multipass list --format csv|tail-n +2|cut-d, -f1);doecho"Processing$vm"multipassexec"$vm"--bash-c'echo "root:123" | sudo chpasswd && sudo passwd -u root && sudo systemctl restart ssh'done

镜像 config 里面其实配了 root 密码,但似乎没生效,所以重配了
ssh也得重启后才生效

2. 免密登录配置

在宿主机上操作:

拷一份之前创建的 hosts 到 jumpbox

scp/root/kubernetes-the-hard-way/docs/hosts.append root@jumpbox:/root/kubernetes-the-hard-way

在 jumebox 上操作:

创建公钥私钥

ssh-keygen

配置免密

whilereadIP FQDN HOST SUBNET;dossh-copy-id root@${IP}done<hosts.append

这里可用 ssh 测试另外3节点是不是免密了

再改下 hosts

whilereadIP FQDN HOST SUBNET;dossh-n root@${IP}"echo '127.0.0.1$FQDN' >> /etc/hosts done < hosts.append while read IP FQDN HOST SUBNET; do ssh -n root@${IP}"echo'127.0.0.1 ${FQDN}'>>/etc/hosts"done<hosts.append

hosts 前面追加过内容,这里不用改动太多,改完上去查看验证下就行。

hostname 就不改了,对应就是虚拟机名(默认)
且 Kubernetes 中,kubelet 默认使用系统 hostname 作为 Node 名。如果不显式指定 --hostname-override(官方操作这块会有点问题,后面会导致 Node 节点加不上)

总结

没那么多实体机,创建太多 VM 虚拟机也不太好管理(配地址、清理之类的),
测试环境就用 multipass,创建删除管理都方便。

现在前期准备了,下篇会正式开始部署 Kubernetes。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/28 9:48:13

癌症药研发企业Eikon冲刺美股:9个月亏2.5亿美元 路演PPT曝光

雷递网 雷建平 2月5日癌症药研发医药企业Eikon Therapeutics&#xff08;股票代码拟定为“EIKN”&#xff09;日前递交招股书&#xff0c;准备2026年2月5日在美国纳斯达克上市。当前&#xff0c;贝恩资本支持的零售商Bobs Discount Furniture Inc.&#xff0c;Neos Partners支持…

作者头像 李华
网站建设 2026/4/14 5:50:37

Nano-Banana实战案例:用AI为3C产品说明书自动生成多角度分解图

Nano-Banana实战案例&#xff1a;用AI为3C产品说明书自动生成多角度分解图 1. 为什么3C说明书还在靠人工画图&#xff1f; 你有没有翻过一部新手机的纸质说明书&#xff1f;那些整齐排列的螺丝、主板、电池、摄像头模组&#xff0c;被一根根虚线连接&#xff0c;标注着编号和…

作者头像 李华
网站建设 2026/4/15 14:48:53

Qwen3-VL-8B Web系统教程:start_chat.sh与run_app.sh分工逻辑解析

Qwen3-VL-8B Web系统教程&#xff1a;start_chat.sh与run_app.sh分工逻辑解析 1. 理解这个AI聊天系统的本质 你拿到的不是一个“点开就能用”的黑盒应用&#xff0c;而是一套经过工程化拆解、职责清晰的本地AI服务组合。它不像手机App那样封装严密&#xff0c;而是像一辆可拆…

作者头像 李华
网站建设 2026/4/3 4:08:52

解锁你的艺术天赋:灵感画廊创意绘画指南

解锁你的艺术天赋&#xff1a;灵感画廊创意绘画指南 1. 这不是又一个AI绘图工具&#xff0c;而是一间会呼吸的画室 你有没有过这样的时刻&#xff1a;脑海里浮现出一幅画面——晨雾中泛着青灰调的江南石桥&#xff0c;桥下流水映着半片残月&#xff0c;一只白鹭掠过水面&…

作者头像 李华
网站建设 2026/3/31 15:22:21

Qwen3-VL-Reranker-8B详细步骤:Python 3.11+Torch 2.8环境兼容性验证

Qwen3-VL-Reranker-8B详细步骤&#xff1a;Python 3.11Torch 2.8环境兼容性验证 1. 这不是普通重排序模型&#xff0c;是真正能“看懂”图文视频的多模态理解引擎 你可能用过不少文本重排序模型&#xff0c;输入一段查询和一堆候选文本&#xff0c;返回一个打分列表——但Qwe…

作者头像 李华
网站建设 2026/4/10 7:00:16

OFA-VE效果展示:夜间/逆光/运动模糊图像下的稳定推理能力

OFA-VE效果展示&#xff1a;夜间/逆光/运动模糊图像下的稳定推理能力 1. 什么是OFA-VE&#xff1a;不只是视觉理解&#xff0c;更是鲁棒性验证 OFA-VE不是又一个“能看图说话”的AI工具。它是一套专为真实世界复杂图像设计的视觉蕴含分析系统——不挑图、不娇气、不回避难题。…

作者头像 李华