什么是资源

在 Kubernetes 中,有两个基础但是非常重要的概念:Node 和 Pod。Node 即节点,是对集群资源的抽象;Pod 是对容器的封装,是应用运行的实体。Node 提供资源,而 Pod 使用资源,这里的资源分为计算(CPU、Memory、GPU)、存储(Disk、SSD)、网络(Network Bandwidth、IP、Ports)。这些资源提供了应用运行的基础,正确理解这些资源以及集群调度如何使用这些资源,对于大规模的 Kubernetes 集群来说至关重要,不仅能保证应用的稳定性,也可以提高资源的利用率。

Kubernetes 中有哪些常用资源对象?

kubernetes常用资源示意图
kubernetes常用资源示意图

依据资源的主要功能作为分类标准,Kubernetes的API对象大体可分为五个类别:

  • 集群级别的资源:Namespace、Node、Role、ClusterRole、RoleBinding、ClusterRoleBinding

  • 工作负载类型资源(workload):

    • Pod: Kubernetes中最小的负载单元
    • ReplicaSet:简称RC,管理Pod的创建,通过标签控制副本数
    • Deployment:控制器,通过控制RC去创建Pod
    • StatefulSet:主要用于有状态服务
    • DaemonSet:在每个节点都运行一个Pod组件
    • Job、CronJob:为了(批)处理
  • 服务发现及负载均衡资源(Service Discovery And LoadBalance):Service、Ingress…

  • 配置与存储类型:Volume(存储卷)、CSI(容器存储接口,可以扩展各种各样的第三方存储卷,现在市面上的大多数存储都是支持CSI)

  • 特殊类型的存储卷:ConfigMap(当成配置中心来使用的资源类型)、Secret(保存敏感数据)、DownwardAPI(把外部环境中的信息输出给环境,比如把运行Pod的所在Node的NodeIp传进Pod)

  • 元数据(metadata):HPA、PodTemplate、LimitRange(资源限制)