ralp的k8s从入门到跑路---02 kubernetes集群架构

Kubernetes 集群对象

基本对象:

  • Pod:

Pod 是最小部署单元,一个 Pod 有一个或多个容器组成,Pod 中容器共享存储和网络,在同一台 Docker 主机上运行。

  • Service:

Service 一个应用服务抽象,定义了 Pod 逻辑集合和访问这个 Pod 集合的策略。
Service 代理 Pod 集合对外表现是为一个访问入口,分配一个集群 IP 地址,来自这个IP 的请求将负载均衡转发后端 Pod 中的容器。
Service 通过== LableSelector ==选择一组 Pod 提供服务。

  • Volume

数据卷,共享 Pod 中容器使用的数据。

  • Namespace

命名空间将对象逻辑上分配到不同 Namespace,可以是不同的项目、用户等区分管理,并设定控制策略,从而实现多租户。
命名空间也称为虚拟集群

  • Lable

标签用于区分对象(比如 Pod、Service),键/值对存在;每个对象可以有多个标签,通过标签关联对象。

  • ReplicaSet

下一代 ReplicationController。确保任何给定时间指定的 Pod 副本数量,并提供声明式更新等功能。
下一代 ReplicationController。确保任何给定时间指定的 Pod 副本数量,并提供声明式更新等功能。
RC 与 RS 唯一区别就是 lableselector 支持不同,RS 支持新的基于集合的标签,RC 仅支持基于等式的标签。

  • Deployment

Deployment 是一个更高层次的 API 对象,它管理 ReplicaSets 和 Pod,并提供声明式更新等功能。
官方建议使用 Deployment 管理 ReplicaSets,而不是直接使用 ReplicaSets,这就意味着可能永远不需要直接操作 ReplicaSet 对象。

  • StatefulSet

StatefulSet 适合持久性的应用程序,有唯一的网络标识符(IP),持久存储,有序的部署、扩展、删除和滚动更新。

  • DaemonSet

DaemonSet 在每个节点同一个 Pod。当节点加入 Kubernetes 集群中,Pod 会被调度到该节点上运行,当节点从集群中移除时,DaemonSet 的 Pod 会被删除。删除 DaemonSet会清理它所有创建的 Pod。

  • Job

一次性任务,运行完成后 Pod 销毁,不再重新启动新容器。还可以任务定时运行。
Kubernetes 对象是 Kubernetes 系统中的持久实体。

二、Kubernetes 集群的主要组件
• Master 节点–etcd、 apiserver 、 scheduler 、controller-manager
• Node 节点 – kubelet、kube-proxy
• Addons 插件 — coredns 、flannel、traefik

ralp的k8s从入门到跑路---02 kubernetes集群架构

  • Master 组件

Master 组件提供集群的管理控制中心。
Master 组件可以在集群中任何节点上运行。但是为了简单起见,通常在一台 VM/机器上启动所有 Master 组件,并且不会在此 VM/机器上运行用户容器。

  • kube-apiserver

kube-apiserver 用于暴露 Kubernetes API。任何的资源请求/调用操作都是通过kube-apiserver 提供的接口进行。

ETCD
etcd 是 Kubernetes 提供默认的存储系统,保存所有集群数据,使用时需要为 etcd 数据提高可用。

kube-controller-manager
处理集群中常规后台任务,一个资源对应一个控制器,而 ControllerManager 就是负管理这些控制器的。

kube-scheduler
kube-scheduler 调度器,为 Pod 选择一个 Node。

节点(Node)组件

节点组件运行在 Node,提供 Kubernetes 运行时环境,以及维护 Pod。

  • kubelet

kubelet 是 Master 在 node 上的代理 Agent和 docker 引擎通信

  • kube-proxy

kube-proxy 在 node 节点上实现 Pod 网络代理,维护网络规则及四层负载均衡工作。