K8s 入门指南:
概述
Kubernetes 在 2021 年左右达到了主流企业采用,标志着它从专用工具转变为行业标准。这一转变由以下几个因素驱动:
-
主要云提供商推出了托管 Kubernetes 服务
-
工具和集成生态系统显著成熟
-
企业级支持和培训广泛可用
然而,尽管广泛采用,组织仍面临重大挑战:
DevOps 团队挑战:
-
复杂的集群操作和维护
-
跟上快速的平台演进
-
大规模管理安全和合规性
-
故障排查分布式系统
应用团队挑战:
-
理解 Kubernetes 概念和架构
-
编写有效的部署配置
-
调试容器化环境中的应用问题
-
优化资源使用和成本
即使 Kubernetes 在现代云基础设施中变得越来越重要,这一技能差距仍然存在,迫切需要更好的培训和工具来简化操作和开发工作流程。
每个开发者与 Kubernetes 的旅程都始于同一个问题:“我从哪里开始?”本指南为新接触 Kubernetes 的应用开发者和 DevOps 工程师提供了一条清晰的路径。
我们不会深入技术细节,而是专注于构建正确的思维模型和理解核心概念。将其视为您在 Kubernetes 领域的初始地图——为您提供足够的方向,以便自信地开始探索。
我们将涵盖基本概念、命令和模式,这些构成了使用 Kubernetes 的基础。虽然不全面,但本指南将帮助您:
-
理解 Kubernetes 的思维方式
-
学习基本构建块
-
开始常见操作
-
知道下一步该看什么
让我们按顺序逐步进入以下主题,使 Kubernetes 对更多人更易接近,并扩展社区。
-
Kubernetes 的基本组件
-
Kubernetes 的思维模型
-
Kubernetes 资源和 API
-
核心 Kubernetes API 概念
-
基本 Kubernetes 资源
-
Kubernetes CLI 基础
-
动手练习
让我们慢慢深入这些内容:
K8s 的基本组件
K8s 是一个开源系统,用于自动化部署、扩展和管理容器化应用。每个开始使用 K8s 的人都应该熟悉以下关键组件:
kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kube-proxy、kubelet。您可以在此https://kubernetes.io/docs/concepts/overview/components/了解更多详细信息。etcd 是存储层。kube-apiserver 可以被视为 API 网关,所有对 k8s 的请求都通过它。kube-controller-manager 和 kube-scheduler 是控制平面的主要组件。最后,kubelet 和 kube-proxy 是存在于 K8s 管理的所有节点上的代理。
还有一些其他重要组件,如 cloud-controller-manager,主要用于与主要云提供商集成,以及容器运行时。后者用于管理容器的生命周期(也缩写为 CRI)。还有 CNI,但这不在本指南范围内。
K8s 的思维模型
在了解基本组件后,让我们简要回顾一些思维模型,这些模型将帮助您更好地理解和导航 Kubernetes。
控制循环思维
Kubernetes 中的控制循环思维是基于系统如何不断努力使期望状态与当前状态匹配的思维模型。以下是清晰的解释:
想象一个恒温器:
-
您设定一个期望温度(期望状态)——比如 72°F
-
恒温器不断检查当前温度(观察当前状态)
-
如果有差距,它采取行动(打开/关闭加热)以匹配期望状态
-
这个循环不断重复(循环)
在 K8s 中,这种模式随处可见:
-
您声明“我想要 3 个这个 Pod 的副本”(期望状态)
-
Kubernetes 不断检查实际运行的副本数量(当前状态)
-
如果太少或太多,它会创建或删除 Pod
-
这个检查和协调循环不断运行
这种模式有助于理解:
-
Kubernetes 是自愈的
-
声明式配置如何工作
-
控制器和操作符如何工作
-
系统如何响应故障或变化
理解这个循环模式使 Kubernetes 的行为更可预测和更容易调试,因为您可以思考:“期望状态是什么?当前状态是什么?”
声明式状态机
Kubernetes 中的声明式状态机可以通过一个简单的类比来解释:
想象一下给管家下指令:
而不是给出一步一步的命令,如:
-
“去厨房”
-
“打开冰箱”
-
“取出食材”
-
“开始烹饪”
您只需声明:“我希望在 7 点准备好晚餐,这些菜放在桌子上”
Kubernetes 以同样的方式工作:
-
您声明“这是我想要的应用状态”
-
您不告诉 Kubernetes 如何做
-
您只需在 YAML 中描述期望的最终状态