kubernetes 基本概念

Cluster

Cluster是计算、存储和网络资源的集合,Kubernetes利用这些资源运行各种基于容器的应用。

Master

Master是Cluster的大脑,它的主要职责是调度,即决定将应用放在哪里运行。Master运行在操作系统上,可以是物理机或者虚拟
机。为了实现高可用,可以运行多个Master。

Master上运行着以下关键进程

  • Kubernetes API Server(kube-apiserver):提供 restful api 接口,是 kubernetes 里所有资源的增,删,改,查等操作的唯一入口,也是集群控制的入口进程
  • Kubernetes Controller Manager(kube-controller-manager):kubernetes里所有资源对象的自动化控制中心,可以理解为资源对象的大总管。
  • Kubernetes Scheduler(kube-scheduler):负责资源调度(Pod 调度)的进程。

Node

Node的职责是运行容器应用。Node由Master管理,Node负责监控并汇报容器的状态,同时根据Master的要求管理容器的生命周期。
Node运行在Linux操作系统上,可以是物理机或者是虚拟机, node 可以被动态的增加到集群中.

每个Node 上运行着以下关键进程

  • kubelet:负责 Pod 对应容器的创建,启停等任务,同时与Master 密切协作,实现集群管理的基本功能
  • kube-proxy:实现 Kubernetes Service 的通信与负载均衡机制的重要组件
  • Docker Engine (docker):Docker 引擎,负责本机的容器创建和管理工作

Pod

Pod是Kubernetes的最小工作单元。每个Pod包含一个或多个容器。Pod中的容器会作为一个整体被Master调度到一个Node上运行。

Pod中的所有容器使用同一个网络namespace,即相同的IP地址和Port空间。它们可以直接用localhost通信。同样的,这些容器可以共享存储,当Kubernetes挂载volume到Pod,本质上是将volume挂载到Pod中的每一个容器。

Pod 有两种类型:普通的Pod 及 静态 Pod。静态 Pod 没有存放在 Kubernetes 的 etcd 存储里,而是存放在 具体Node 的一个具体文件中 ,并且只在此 node 上启动,运行,普通的 Pod 一旦被创建,就会被放到 etcd 中存储.

Controller

Kubernetes通常不会直接创建Pod,而是通过Controller来管理Pod的。Controller中定义了Pod的部署特性,比如有几个副本、在什么样的Node上运行等。

常见控制器的种类

  • Deployment   可以管理Pod的多个副本,并确保Pod按照期望的状态运行
  • ReplicaSet   实现了Pod的多副本管理。使用Deployment时自动创建ReplicaSet,也就是说Deployment是通过ReplicaSet来管理Pod的多个副本的,我们通常不需要直接使用ReplicaSet。
  • DaemonSet   用于每个Node最多只运行一个Pod副本的场景。
  • StatefulSet   面向有状态的服务,每个Pod 都有唯一稳定的网络标识,Pod 副本的启停顺序是受控的,采用持久化存储卷.

Service

Deployment可以部署多个副本,每个Pod都有自己的IP,Service定义了外界访问一组特定Pod的方式。Service有自己的IP和端口,Service为Pod提供了负载均衡, 通过标签选择器的方式指定后端 Pod.

Namespace

用于实现多租户的资源隔离,可以将集群内部的资源对象分配到不同的 namespace 中. Namespace可以将一个物理的Cluster逻辑上划分成多个虚拟Cluster,每个Cluster就是一个Namespace。

不同Namespace里的资源是完全隔离的。

posted @ 2021-02-19 17:49  步绍训  阅读(60)  评论(0)    收藏  举报