发布时间:2026/7/27 19:28:11
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/7/27 19:28:11

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

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

2026/7/27 19:23:11

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/7/27 20:23:14

深入理解鎏光云游戏引擎:服务端与客户端协同工作的技术细节

深入理解鎏光云游戏引擎:服务端与客户端协同工作的技术细节 【免费下载链接】liuguang 鎏光云游戏引擎 项目地址: https://gitcode.com/gh_mirrors/li/liuguang 鎏光云游戏引擎是金山云边缘计算团队开发的一套服务于云游戏场景的技术集合,它创新性…

2026/7/27 20:23:14

NVIDIA Vera Rubin NVL72超级计算集群:72 GPU统一架构解析与应用

这次我们来看 NVIDIA 最新交付的 Vera Rubin NVL72 超级计算集群。这个系统最引人注目的特点是将 72 块 GPU 整合为统一计算单元,专门为大规模 AI 训练和科学计算设计。对于需要处理千亿参数模型训练、天文数据分析或大规模模拟的研究机构来说,这种级别的…

2026/7/27 20:23:14

YOLO算法在田间杂草识别系统中的应用与实践

1. 田间杂草识别系统概述作为一名长期从事农业AI落地的算法工程师,我见证了计算机视觉技术在农田场景中的实际应用价值。田间杂草识别系统是精准农业中最具实用性的技术之一,它直接关系到农民的劳动强度和农业生产效率。这个系统本质上是一个基于YOLO系列…

2026/7/27 20:18:14

Unity TextMeshPro中文字体生成:从SDF原理到7000字库实战

1. 项目概述:为什么TextMeshPro处理中文字体是个“坎”?如果你在Unity里做过需要显示中文的项目,尤其是UI部分,大概率踩过TextMeshPro(后面简称TMP)的字体坑。Unity自带的旧版UI Text组件对中文支持尚可&am…

2026/7/27 9:04:58

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

2026/7/27 0:01:12

xcku5p-ffvb676-2-i 设计 RoCEv2 时 constraints.xdc 配置依据核查记录

constraints.xdc 配置依据核查记录 被核查文件:fpga/vitis/xcku5p/build/constraints/constraints.xdc 目标板卡:RK-XCKU5P-F V1.2(搭载 xcku5p-ffvb676-2-i) 移植母本:fpga/pynq/rfsoc-pynq/build/constraints/constraints.xdc(NVIDIA Holoscan Sensor Bridge 参考工程)…

2026/7/27 0:01:12

TMS320C54x DSP内存映射与I/O模拟配置实战指南

1. 项目概述与核心价值在嵌入式系统开发,尤其是DSP这类资源受限、架构独特的处理器上,内存映射配置和I/O模拟是每个开发者都必须跨越的一道坎。这不仅仅是调试器里的几个菜单选项或命令行参数,它直接关系到你的程序能否在目标板上正确运行、能…

2026/7/27 3:13:33

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…