《Kubernetes从入门到进阶》之四:资源对象
  ETWZF7L1nsXD 2023年11月02日 33 0

Kuberentes抽象出多种概念来描述应用程序及其周边组件,如Pod、Deployment、Service等,这些概念被统称为资源。而对象则是“资源”的实例,如具体的某个Pod、具体的某个Service。在日常语境中,我们通常不会特意区分资源和对象,可以使用”资源“、“资源对象”来泛指某类资源的实例,也即是对象。

本文我们先来了解一些常用的资源,读者在这里可以先有个大概的印象就行,因为后面的文章会针对这些资源功能进行详细介绍。


01

全局型资源

1. Namespace(命名空间)

很多地方都有 Namespace的概念,如 Linux 中的 Namespace,容器就使用了技术来实现对于系统资源的访问隔离。Kubernetes集群中Namespace也是用于隔离,它提供了一种对集群中的对象进行分组和隔离的机制。使用Namespace可以将不同应用程序或不同团队的资源进行隔离,从而防止资源冲突和应用程序之间的相互影响。


02

工作负载型资源

1. Pod

Pod 是 Kubernetes 中最小的部署单元,可以包含一个或多个容器。每个 Pod 都有一个唯一的 IP 地址,并且内部容器可以共享网络栈、存储等。Pod 提供了一种轻量级的方式来部署容器,可以实现高效地资源利用。

2. Deployment

Deployment 用于管理 Pod 的部署和更新的控制器,可以通过指定副本数和容器镜像来定义 Pod 模板。Deployment 可以自动检测并处理 Pod 的故障,保证应用程序的高可用性,通常用于部署无状态的服务。

3. StatefulSet

功能与Deployment类似,但适用于部署有状态的应用服务。StatefulSet能够为每个Pod创建一个独特的标识,并会保证Pod之间的启动顺序。通常用于部署数据库等应用服务。

4. DaemonSet

用于确保在集群中每个节点上运行一个Pod副本,通常用于部署一些系统级别的守护进程服务,如agent、网络插件等。


03

负载均衡与路由资源

1. Service 

Service 是一种抽象的对象,用于暴露 Pod 的网络服务。Service 可以将一组 Pod 组合在一起,并使用一个唯一的 DNS 名称和虚拟 IP 地址,提供负载均衡服务。Service 还可以定义访问控制策略,用于提高应用程序的可用性和安全性。

2. Ingress

Ingress 是 Kubernetes 中用于管理 HTTP 和 HTTPS 流量的对象。它允许外部流量进入集群,并将流量路由到不同的 Service 上。


04

配置型资源

1. ConfigMap

ConfigMaps 用于在 Kubernetes 中存储配置数据,它们可以用于存储键值对、文件或目录。ConfigMaps 作为 Kubernetes 对象创建,并可在容器中作为卷或环境变量进行挂载。ConfigMaps 的好处在于可以将配置数据与应用程序代码分离,使得配置数据更易于管理和更新。

2. Secret

Secrets 类似于 ConfigMaps,但用于存储敏感信息,例如密码、API 密钥和证书。与 ConfigMaps 一样,Secrets 可以在容器中作为卷或环境变量进行挂载。Secrets 的数据是加密,并且只有经过授权的用户访问时才会解密。


05

存储型资源

1. PersistentVolumes  (PV)

PV 是集群中独立的存储Volume,可以是物理存储设备(如:磁盘)、网络存储设备(如,Nas)或者是分布式存储 系统(如GlusterFS、Ceph等)。

2. PersistentVolumeClaims(PVC)

PVC 是用于申请PV资源的对象。创建 PVC 时会指定存储的大小和资源,Kubernetes 将查找与请求匹配的可用 PV 并将它们绑定在一起。然后用户可以使用 PVC 访问存储。


06

任务型资源

1. Job

短暂运行的任务,一旦完成就会终止,常用于批处理任务、数据处理等场景。

2. CronJob

基于时间的作业调度,类似于Linux中的cron,可以按照预定时间或周期执行作业。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  9JCEeX0Eg8g4   2023年12月10日   31   0   0 应用程序javaApache
  ozzp9aSSE46S   2023年11月30日   33   0   0 DNSIPPod
  YKMEHzdP8aoh   2023年12月11日   67   0   0 DNSidePod
ETWZF7L1nsXD