Menu

Kubernetes 通过声明式资源对象实现集群的自动化管理与弹性扩展,理解对象类型、规范与状态是高效运维的基础。

Kubernetes 资源对象分类

Kubernetes 资源对象用于描述集群中各种实体和功能。下表总结了常用对象类型及其主要用途:

Kubernetes 常用资源对象分类

类别 资源对象 说明
工作负载 Pod、Deployment、StatefulSet、DaemonSet、Job、CronJob、ReplicaSet 应用部署与调度
服务与网络 Service、Ingress 服务发现与负载均衡
配置与存储 ConfigMap、Secret、Volume、PersistentVolume(PV)、PersistentVolumeClaim(PVC) 配置管理与持久化存储
集群管理 Node、Namespace、Label 节点管理与资源隔离
安全与权限 ServiceAccount、Role、ClusterRole、SecurityContext 身份认证与权限控制
资源管理 ResourceQuota、LimitRange、HorizontalPodAutoscaler(HPA) 资源分配与自动扩缩容
扩展性 CustomResourceDefinition(CRD) 自定义资源类型

工作负载对象

工作负载对象用于定义和管理应用的运行方式。常见类型包括:

服务发现与负载均衡

配置与存储

集群管理

安全与权限

资源管理

扩展性

理解 Kubernetes 对象

Kubernetes 对象(Object)是集群中的持久化实体,用于描述期望状态。每个对象定义了:

Kubernetes 采用声明式管理模式:用户声明期望状态,Kubernetes 控制平面持续确保实际状态与期望状态一致。

对象规范与状态

每个对象包含两个关键字段:

Kubernetes 控制器持续监控对象状态,发现实际状态与期望状态不符时会自动修正。

对象定义格式

Kubernetes 对象通常使用 YAML 文件定义,包含以下必需字段:

apiVersion: apps/v1      # API 版本
kind: Deployment         # 对象类型  
metadata:               # 元数据
  name: nginx-deployment # 对象名称
  namespace: default     # 命名空间(可选)
  labels:                # 标签(可选)
    app: nginx
spec:                   # 对象规范
  replicas: 3           # 期望状态配置
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.25
        ports:
        - containerPort: 80

对象生命周期与管理流程

Kubernetes 对象的声明、创建、变更和删除遵循标准流程。下图展示了对象生命周期的主要阶段:

```mermaid “Kubernetes 对象生命周期” graph TD A[声明 YAML/JSON] –> B[apply 创建对象] B –> C[控制器监控状态] C –> D[实际状态与期望状态比对] D –> E{一致?} E – 是 –> F[持续运行] E – 否 –> G[控制器修正状态] G –> C F –> H[更新/删除对象] H –> I[apply/apply/delete] I –> C


![Kubernetes 对象生命周期](/architecture/pod-state-and-lifecycle/5810af7b75ae6eb50221bedf332356c3.svg)
{width=1920 height=4815}

## 对象管理操作

Kubernetes 支持多种对象管理操作,常用命令如下:

- **创建对象**:

  ```bash
  kubectl apply -f nginx-deployment.yaml

最佳实践

在实际管理 Kubernetes 资源对象时,建议遵循以下最佳实践:

总结

Kubernetes 通过丰富的资源对象体系,实现了集群的声明式管理和自动化运维。掌握对象类型、规范与状态,有助于高效构建和维护云原生应用。

参考文献


Menu