01-Kubernetes 入门:概念与安装

发布时间:2026/9/12 5:26:03

01-Kubernetes 入门:概念与安装 Kubernetes 入门概念与安装Part 1什么是 Kubernetes概念引入想象你经营一个巨大的集装箱港口每天有上百艘货船要停靠你的应用程序每艘船需要泊位、电力、工人CPU、内存、存储有的船坏了要换一艘顶上自动修复旺季来了要多安排船淡季要减少自动扩缩你不可能每艘船都手动管Kubernetes简称 K8s就是那个港口调度系统。你告诉它我要 3 艘这样的船它会自动帮你安排泊位、调度工人、坏了就替换、多了就缩减。名字由来Kubernetes 来自希腊语意思是舵手或飞行员。Google 内部叫它 Borg2014 年开源后改名 Kubernetes。因为 K 和 s 之间有 8 个字母所以简称K8s。原理讲解K8s 解决什么问题在 K8s 之前你可能这样部署应用手动时代手动 SSH手动 SSH手动 SSH开发者服务器1服务器2服务器3问题每台服务器手动操作不可扩展、容易出错、无法自动修复。有了 K8s 之后声明式 YAML调度到调度到调度到开发者K8s 集群控制平面节点1节点2节点3你只需要声明我要什么K8s 自动帮你实现。核心概念速览概念比喻说明Cluster整个港口一组服务器组成的集群Node港口里的码头集群中的一台服务器Pod一艘货船K8s 的最小调度单元包含一个或多个容器Deployment航运公司的调度计划声明我要几艘这样的船Service港口接待处稳定的访问入口不管后面的船怎么换K8s 架构一览工作节点 (Worker Node)工作节点 (Worker Node)控制平面 (Control Plane)kube-apiserver所有操作的入口etcd集群状态存储kube-scheduler决定 Pod 放哪个节点kube-controller-manager维持期望状态kubelet管理 Podkube-proxy网络转发containerd运行容器PodPodkubeletkube-proxycontainerdPodPod现在不用记住每个组件。后面每篇文章会逐步介绍它们。这里只需要知道控制平面负责决策工作节点负责干活。声明式 vs 命令式K8s 最大的特点是声明式操作命令式传统声明式K8s方式“在服务器 A 上启动这个容器”“我要 3 个这样的 Pod”谁做决策你K8s自动修复❌ 需要手动✅ K8s 自动补上示例docker run nginxkubectl apply -f deploy.yaml声明式的好处你写一份 YAML 描述想要的状态K8s 会持续把现实状态调整到与你声明的一致——即使 Pod 崩溃了、节点宕机了K8s 都会自动修复。自检问题K8s 的 K 和 s 之间有几个字母为什么叫 K8s查看答案 8 个字母ubernete所以 K 8 s K8s。Pod 和容器是什么关系查看答案 Pod 是 K8s 的最小调度单元一个 Pod 可以包含一个或多个容器。Pod 里的容器共享网络和存储。声明式和命令式的核心区别是什么查看答案 命令式是你告诉系统怎么做具体步骤声明式是你告诉系统要什么期望状态由系统自己决定怎么做。K8s 是声明式的。Part 2安装 Kind概念引入现在你知道了 K8s 是什么但你不可能在港口调度系统上直接练习——你需要一个迷你港口。KindKubernetes in Docker就是这样一个迷你港口。它在你电脑的 Docker 里运行一个完整的 K8s 集群启动只要不到 1 分钟用完随时删掉。就像在你书桌上放了一个港口模型可以随便摆弄。你的电脑Kind 集群kubectlDocker 引擎Kind Node(Docker 容器)K8s 控制平面 工作节点你为什么选 Kind工具启动速度资源占用多节点适合场景Kind⚡ 1分钟小✅本地学习、CI 测试Minikube 2-5分钟大✅需要完整 VM 隔离Docker Desktop⚡ 即开小❌ 单节点只需要简单单节点原理讲解Kind 的工作原理Kind 的每个节点实际上是一个 Docker 容器。容器里运行着完整的 K8s 组件Kind Node (Docker 容器)kube-apiserveretcdkube-schedulercontroller-managerkubeletkube-proxycontainerd你的 Pod这意味着你可以在一台电脑上创建多节点集群——每个节点就是一个容器。前提条件Kind 依赖 Docker。你需要先安装Docker DesktopmacOS/Windows或Docker EngineLinuxkubectlK8s 命令行工具Kind本身Windows 用户本文所有实验命令均为 Linux/macOS shell 语法。建议通过WSL2学习在 PowerShell管理员中执行wsl --install重启后进入 Ubuntu 终端安装 Docker Desktop在 Settings → Resources → WSL Integration 中启用你的 Ubuntu 发行版后续所有命令直接在 WSL2 Ubuntu 终端中执行走下面的Linux路线即可动手实验步骤 1安装 DockermacOS从 docker.com 下载 Docker DesktopLinux (Ubuntu)# 安装 Dockersudoapt-getupdatesudoapt-getinstall-ydocker.iosudousermod-aGdocker$USER# 重新登录使 docker 组生效验证dockerversion预期输出Client: Version: 29.x.x Server: Version: 29.x.x步骤 2安装 kubectl# macOSbrewinstallkubectl# Linuxcurl-LOhttps://dl.k8s.io/release/$(curl-L-shttps://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl# 如果上面网络下载不了试下换谷歌源#curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -L -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectlchmodx kubectlsudomvkubectl /usr/local/bin/验证kubectl version--client预期输出Client Version: v1.31.0 Kustomize Version: v5.4.2步骤 3安装 Kind# macOSbrewinstallkind# Linux[$(uname-m)x86_64]curl-Lo./kind https://kind.sigs.k8s.io/dl/v0.24.0/kind-linux-amd64[$(uname-m)aarch64]curl-Lo./kind https://kind.sigs.k8s.io/dl/v0.24.0/kind-linux-arm64chmodx ./kindsudomv./kind /usr/local/bin/kind验证kind version预期输出kind v0.24.0 go1.22.6 linux/amd64步骤 4创建你的第一个集群先创建配置文件后续 Ingress 和 NodePort 实验需要端口映射catkind-config.yamlEOF kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane image: kindest/node:v1.31.0 kubeadmConfigPatches: - | kind: InitConfiguration nodeRegistration: kubeletExtraArgs: node-labels: ingress-readytrue extraPortMappings: - containerPort: 80 hostPort: 80 protocol: TCP - containerPort: 443 hostPort: 443 protocol: TCP - containerPort: 30080 hostPort: 30080 protocol: TCP - role: worker image: kindest/node:v1.31.0 - role: worker image: kindest/node:v1.31.0 EOF然后创建集群kind create cluster--namek8s-guide--configkind-config.yaml预期输出Creating cluster k8s-guide ... ✓ Ensuring node image (kindest/node:v1.31.0) ✓ Preparing nodes ✓ Writing configuration ✓ Starting control-plane ️ ✓ Installing CNI ✓ Installing StorageClass ✓ Joining worker nodes Set kubectl context to kind-k8s-guide You can now use your cluster with: kubectl cluster-info --context kind-k8s-guide Not sure what to do next? Check out https://kind.sigs.k8s.io/docs/user/quick-start/步骤 5验证集群kubectl get nodes预期输出NAME STATUS ROLES AGE VERSION k8s-guide-control-plane Ready control-plane 2m29s v1.31.0 k8s-guide-worker Ready none 85s v1.31.0 k8s-guide-worker2 Ready none 85s v1.31.0kubectl cluster-info预期输出Kubernetes control plane is running at https://127.0.0.1:45819 CoreDNS is running at https://127.0.0.1:45819/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy恭喜你有了一个运行中的 K8s 集群步骤 6清理实验完成后删除集群kind delete cluster--namek8s-guide 如果你还想继续学习先不要删后面的文章会继续用这个集群。自检问题Kind 集群的节点实际上是什么查看答案 是一个 Docker 容器。Kind 在 Docker 容器里运行完整的 K8s 组件kubelet、kube-apiserver 等。为什么 Kind 比 Minikube 启动快查看答案 Kind 直接利用已有的 Docker 引擎创建容器不需要启动完整的虚拟机。Minikube 默认需要启动一个 VM所以更慢。kubectl 和 Kind 是什么关系查看答案 Kind 负责创建和管理集群kubectl 负责与集群交互部署应用、查看状态等。Kind 创建集群后会自动配置 kubectl 的 context。下一步集群准备好了让我们部署第一个应用→ 02. 工作负载Pod、ReplicaSet 与 Deployment本文来自 K8s Guide—— 开源免费的 Kubernetes 中文学习指南️ 初学者轨道 面试轨道从零基础到拿 Offer 一站式覆盖 每篇文章配套 Kind 实验脚本本地一键运行 本文源码docs/beginner/01-what-is-k8s.md / docs/beginner/02-install-kind.md⭐如果对你有帮助欢迎 Stargithub.com/callmebg/k8s-guide
延伸阅读

更多相关文章

2026/9/10 9:48:33

NATS Streaming遗留系统维护指南:安全与兼容性最佳实践

NATS Streaming遗留系统维护指南:安全与兼容性最佳实践 【免费下载链接】stan.go NATS Streaming System 项目地址: https://gitcode.com/gh_mirrors/st/stan.go NATS Streaming作为一款曾经广泛使用的消息系统,虽然已正式宣告End of Life&#x…

2026/9/6 18:45:44

3种方法用Dataflow kit实现无限滚动页面爬取,效率提升10倍

3种方法用Dataflow kit实现无限滚动页面爬取,效率提升10倍 【免费下载链接】dataflowkit Extract structured data from web sites. Web sites scraping. 项目地址: https://gitcode.com/gh_mirrors/da/dataflowkit Dataflow kit是一款强大的网页数据提取工…

2026/9/12 5:24:52

从Prompt到Skills:Karpathy力推的大模型技能包工程实践

前阵子技术圈聊得最多的一个词,除了“agent”就是“skills”。Andrej Karpathy 在多个场合反复表达过一个观点:与其让模型在 prompt 里翻来覆去地猜你的意图,不如直接给它一组可验证、可复用的技能代码。网上关于“andrej-karpathy-skills”的…

2026/9/12 5:24:52

Prompt as Code:工业级提示词工程化实践指南

1. 项目概述:这不是又一个“AI画图工具”,而是一套可版本化、可测试、可部署的提示词基础设施你有没有遇到过这样的场景:在团队里,设计师A写了个“赛博朋克风、霓虹雨夜、低角度仰拍、胶片颗粒感”的提示词,效果惊艳&a…

2026/9/12 2:05:33

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/12 3:55:12

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/12 0:04:17

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现

简介:本资源是一份面向智能优化算法研究者与MATLAB初学者的仿生智能算法实践代码包,聚焦于长鼻浣熊优化算法(COA)的多策略改进与性能验证。针对传统COA易陷局部最优、收敛精度不足等问题,作者融合Circle映射初始化提升…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)

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

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

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

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/10 15:49:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码