k8s series 5: 相关概念

372 阅读5分钟

  kubernetes 中大部分概念如Pod,Deployment,Serivce等都可以看作是一种资源对象,但所有资源对象都可以通过kubectl工具执行增删改查操作

资源对象相关概念介绍:

Maseter

master是k8s中的控制节点,负责管理和控制整个集群

在Master上运行着以下进程:

  • kube-apiserver: 提供rest接口,所有资源的增删改查入口,集群控制的入口
  • kube-controller-manager:所有资源对象的控制中心 
  • kube-scheduler:  负责资源调度

Node

node是k8s中工作节点,负责接收和上报来自master的任务

在Node上运行着以下进程:

  • kubelet:  负责Pod管理,接收和上报来自master的任务,实现节点管理的基本功能
  • kube-proxy: 维护节点上的网络规则,实现service
  • docker:  负责容器创建和管理

Namespace

命令空间是一个支持多个虚拟集群的服务,主要具有环境隔离作用

Label

标签是附加到对象(例如 pod)的键/值对。旨在用于指定对用户有意义和相关的对象的标识属性,但不直接暗示核心系统的语义。可用于组织和选择对象的子集。可以在创建时附加到对象上,随后可以随时添加和修改。每个对象都可以定义一组键/值标签。每个 Key 对于给定的对象必须是唯一的

Selectors

通过标签选择器,客户端/用户可以识别一组对象。标签选择器是 Kubernetes 中的核心分组原语

Annotation

可以使用 注释将任意非标识元数据附加到对象。诸如工具和库之类的客户端可以检索此元数据

Pod

Pod 的共享上下文包括一组 Linux 名字空间、控制组(cgroup)和可能一些其他的隔离 方面,即用来隔离 Docker 容器的技术。 在 Pod 的上下文中,每个独立的应用可能会进一步实施隔离。

就 Docker 概念的术语而言,Pod 类似于共享名字空间和文件系统卷的一组 Docker 容器

Deployment

deployment内部使用ReplicaSets 提供声明式的更新能力。和RC功能相似度达90%,但有部署进度的功能。经常用于无状态服务的部署

ReplicaSet

ReplicaSet 的目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合。 因此,它通常用来保证给定数量的、完全相同的 Pod 的可用性

Statfulset

StatefulSet 是用来管理有状态应用的工作负载 API 对象,StatefulSet 用来管理某 Pod 集合的部署和扩缩, 并为这些 Pod 提供持久存储和持久标识符。

DaemonSet

DaemonSet确保全部(或者某些)节点上运行一个 Pod 的副本。 当有节点加入集群时, 也会为他们新增一个 Pod 。 当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。

ReplicationController

ReplicationController确保在任何时候都有特定数量的 Pod 副本处于运行状态, 现在几乎不用RC这种方式了,因为ReplicaSetDeployment都已经实现了RC的功能,并且更加强大

Jobs

Job 会创建一个或者多个 Pods,并将继续重试 Pods 的执行,直到指定数量的 Pods 成功终止。 随着 Pods 成功结束,Job 跟踪记录成功完成的 Pods 个数。 当数量达到指定的成功个数阈值时,任务(即 Job)结束。 删除 Job 的操作会清除所创建的全部 Pods。 挂起 Job 的操作会删除 Job 的所有活跃 Pod,直到 Job 被再次恢复执行。

CronJob

CronJob创建基于时隔重复调度的 Jobs

Service

将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法

Ingress

Ingress 是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP

Volume

Container 中的文件在磁盘上是临时存放的,这给 Container 中运行的较重要的应用 程序带来一些问题。问题之一是当容器崩溃时文件丢失。kubelet 会重新启动容器, 但容器会以干净的状态重启。 第二个问题会在同一 Pod 中运行多个容器并共享文件时出现。 Kubernetes 卷(Volume) 这一抽象概念能够解决这两个问题。

Persisten Volume (Claim)

管理存储是一个与管理计算实例截然不同的问题。

PersistentVolume 子系统为用户和管理员提供了一个 API,它从如何使用存储中抽象出如何提供存储的详细信息。

为此,我们引入了两个新的 API 资源:PersistentVolume 和 PersistentVolumeClaim。

PersistentVolume(PV)是已经由管理员提供或者动态使用供应的集群中的一块存储的存储类。它是集群中的资源,就像节点是集群资源一样。PV 是与 Volumes 类似的卷插件,但具有独立于使用 PV 的任何单个 Pod 的生命周期。此 API 对象捕获存储实现的详细信息,无论是 NFS、iSCSI 还是特定于云提供商的存储系统。

PersistentVolumeClaim(PVC)是由用户进行存储的请求。它类似于 Pod。Pod 消耗节点资源,PVC 消耗 PV 资源。Pod 可以请求特定级别的资源(CPU 和内存)。声明可以请求特定的大小和访问模式(例如,它们可以挂载 ReadWriteOnceReadOnlyMany 或 ReadWriteMany

ConfigMaps

ConfigMap 是一个 API 对象,用于在键值对中存储非机密数据。Pod可以将 ConfigMaps 作为环境变量、命令行参数或作为配置文件使用volume.

Secrets

Kubernetes Secrets 让您可以存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。

将机密信息存储在 Secret 中比逐字保存在 Secret 中更安全、更灵活

Horizontal Pod Autoscaler

Horizontal Pod Autoscaler 根据资源利用率(基于定义的规则)自动伸缩 replication controller, deployment, replica set, stateful set 中的pod数量

DNS

集群 DNS 是一个 DNS 服务器,它为 Kubernetes 服务提供 DNS 记录。