K8S概念汇总

Pod

Pod是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。

pod的本意是“豆荚”,可以类比成一种封装形式,它封装的是豆子(即容器)。

Kubernetes 集群中的 Pod 主要有两种用法:

  • 【豆荚里面只有一个豆子】运行单个容器的 Pod。”每个 Pod 一个容器”模型是最常见的 Kubernetes 用例; 在这种情况下,可以将 Pod 看作单个容器的包装器,并且 Kubernetes 直接管理 Pod,而不是容器。
  • 【豆荚里面有多个豆子】运行多个协同工作的容器的 Pod。 Pod 可能封装由多个紧密耦合且需要共享资源的共处容器组成的应用程序。 这些位于同一位置的容器可能形成单个内聚的服务单元 —— 一个容器将文件从共享卷提供给公众, 而另一个单独的“边车”(sidecar)容器则刷新或更新这些文件。 Pod 将这些容器和存储资源打包为一个可管理的实体。

名字空间(Namespace)

在 Kubernetes 中,名字空间(Namespace) 提供一种机制,将同一集群中的资源划分为相互隔离的组。 同一名字空间内的资源名称要唯一,但跨名字空间时没有这个要求。 名字空间作用域仅针对带有名字空间的对象,例如 Deployment、Service 等。但是作用域对集群访问的对象不适用,例如 StorageClass、Node、PersistentVolume 等。

名字空间是在多个用户之间划分集群资源的一种方法(通过资源配额)。

初始名字空间

Kubernetes 启动时会创建四个初始名字空间:

  • default:Kubernetes 包含这个名字空间,以便于你无需创建新的名字空间即可开始使用新集群。
  • kube-node-lease:该名字空间包含用于与各个节点关联的 Lease(租约)对象。 节点租约允许 kubelet 发送心跳, 由此控制面能够检测到节点故障。
  • kube-public所有的客户端(包括未经身份验证的客户端)都可以读取该名字空间。 该名字空间主要预留为集群使用,以便某些资源需要在整个集群中可见可读。 该名字空间的公共属性只是一种约定而非要求。
  • kube-system:该名字空间用于 Kubernetes 系统创建的对象。

说明:对于生产集群,请考虑不要使用 default 名字空间,而是创建其他名字空间来使用。