摘要:Kubernetes 是一个开源的容器编排平台,其核心设计理念围绕声明式管理:用户通过定义“期望状态”来管理集群,而 Kubernetes 负责将系统调整至该状态。Kubernetes 对象(Objects)是这一理念的核心载体,它们以 YAML 或 JSON
Kubernetes 是一个开源的容器编排平台,其核心设计理念围绕声明式管理:用户通过定义“期望状态”来管理集群,而 Kubernetes 负责将系统调整至该状态。Kubernetes 对象(Objects)是这一理念的核心载体,它们以 YAML 或 JSON 格式描述应用程序及其运行环境的需求。
Kubernetes 对象的核心作用
应用程序如何运行(例如 Pod、Deployment)如何暴露服务(例如 Service、Ingress)如何存储数据(例如 PersistentVolume、PersistentVolumeClaim)如何配置应用(例如 ConfigMap、Secret)如何管理访问权限(例如 Role、ServiceAccount)类别典型对象核心作用工作负载类Pod、Deployment、StatefulSet、DaemonSet、Job、CronJob定义容器化应用的运行方式,如副本数量、更新策略、任务调度等。服务类Service、Ingress提供应用的内外部访问入口,实现负载均衡和流量路由。配置类ConfigMap、Secret解耦应用配置与容器镜像,管理环境变量、配置文件或敏感信息(如密码、密钥)。存储类PersistentVolume (PV)、PersistentVolumeClaim (PVC)抽象存储资源,为应用提供持久化存储能力。集群类Namespace、Node、Role管理集群资源隔离、节点状态、权限控制等。对象的通用结构
每个 Kubernetes 对象的 YAML 文件都包含以下关键字段:
apiVersion: v1 # Kubernetes API 版本(如 apps/v1、batch/v1)
kind: Pod # 对象类型(如 Deployment、Service)
metadata: # 对象的元数据
name: my-app # 对象名称(同一命名空间内唯一)
namespace: default # 所属命名空间(默认 default)
labels: # 标签,用于筛选和关联对象
app: my-app
annotations: # 注释,存储非标识性元数据(如构建信息)
spec: # 期望状态(用户定义)
containers:
- name: nginx
image: nginx:1.25
status: # 实际状态(由 Kubernetes 自动填充,用户不可修改)
# ...(如 Pod 的 IP、运行状态等)
关键概念解析
声明式 API:Ø 用户通过 spec 定义期望状态(如“运行 3 个副本”),Kubernetes 持续对比 spec 与 status,自动修复偏差(如副本崩溃后重启)。
Ø 无需手动执行命令干预(如 kubectl scale),系统自主维护状态。
标签(Labels)与选择器(Selectors):Ø 使用 labels 标记对象(如 env: prod、tier: frontend),通过 selector 关联对象(如 Service 选择一组 Pod)。
Ø 示例:Service 的 selector: app: nginx 会匹配所有带有此标签的 Pod。
命名空间(Namespace):Ø 逻辑隔离集群资源(如将开发、测试环境分离到不同 namespace)。
Ø 系统内置命名空间:default(默认)、kube-system(系统组件)、kube-public(公共资源)等。
操作对象的常用方式
Imperative Commands(命令式):bash
kubectl create deployment nginx --image=nginx:1.25
Declarative YAML(声明式):bash
kubectl apply -f deployment.yaml # 创建或更新对象
kubectl delete -f deployment.yaml # 删除对象
示例:一个简单的 Pod 定义
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx-container
image: nginx:1.25
ports:
- containerPort: 80
学习路径建议
入门对象:从 Pod、Deployment、Service 开始,理解应用部署与暴露流程。进阶对象:学习 ConfigMap、Secret 管理配置,PersistentVolume 处理存储。高级场景:探索 StatefulSet(有状态应用)、DaemonSet(节点守护进程)、Ingress(七层路由)等。通过组合这些对象,可以构建复杂的分布式系统,同时保持配置的版本化和可重复性。Kubernetes 的灵活性正是源于这些对象及其相互协作的机制
来源:老客数据一点号