k8s的核心概念(Concepts)【译】

概述

可以使用k8s的API对象(objects)来描述集群要达到的期望状态(desired state): 要运行什么应用(Applications)或工作负载(Workloads),要使用哪个容器镜像(container images),要运行的副本集(replicas)的数量,要使用多少网络和磁盘资源,等等。也可以使用k8s API创建k8s对象来给出集群的期望状态(一般通常是借助命令行接口工具-kubectl来实现的)。
一旦设置了集群的期望状态,Kubernetes控制器(Kubernetes Control Plane)就会通过Pod生命周期事件发生器(Pod Lifecycle Event Generator,PLEG)来使集群当前的状态达到期望的状态。为了达到这一结果,k8s会自动的执行一系列的任务,例如启动或重启容器、扫描副本集的数量,等等。k8s控制器由一个运行在集群上的进程集构成:

  • kubenetes master,是一个包含了三个进程的集合,运行在被指定为集群主节点(master node)的单节点(single node)上,这三个进程是:kube-apiserver, kube-controller-manager 和 kube-scheduler.
    每一个非主节点(non-master node)运行着两个进程:
  • kubelet,用于和主节点通信。
  • kube-proxy,网络代理,映射k8s的网络服务到每个节点上。

k8s的对象(Kubernetes Objects)

k8s包含各种代表系统状态的抽象:已部署的容器应用和负载,关联的网络和磁盘资源,还有其它集群中正在执行的动作信息。这些抽象在k8s API中由各种对象来表示。更多请看 Understanding Kubernetes Objects 。

k8s的基础对象:
  • Pod
  • Service
  • Volume
  • Namespace
k8s的高级对象:

k8s同样包括更高级的抽象类,它们依赖Controller类来构建上述的基础对象,并提供额外的功能和便捷的特性。这些对象有:

  • Deployment
  • DaemonSet
  • StatefulSet
  • ReplicaSet
  • Job

k8s控制器(Kubernetes Control Plane)

k8s控制器的各个部分,如k8s Master和kubelet进程集,一起管控着k8s怎么和集群进行通讯。控制器维持着系统中所有对象的记录,同时运行持续的控制环(control loops)去管理这些对象的状态。不管在什么时候,控制器的控制环都会响应集群中的改变,让系统中所有的对象的实际状态去适配到给予的期望的状态。
例如,当我们使用k8s API创建一个Deployment,我们就给系统提供了一个新的期望状态,k8s控制器记录这个Deployment对象的创建,然后执行某些指令(启动必要的应用,同时安排到集群节点中),于是就使集群的实际状态适配到了期望的状态。

k8s主节点(Kubernetes Master)
k8s masterk负责维护集群的期望的状态。当我们和k8s进行交互时,如使用kubectl命令行接口,我们是在和集群的k8s master进行通讯。
这个“master”涉及到管理着集群状态的数个进程。显然的,所有这些进程都运行在集群的一个单节点上,这个节点也是被用作为master的。当然,master同样也能够被复制来进行扩容和缩减。

k8s节点(Kubernetes Nodes)
集群节点就是那些运行着应用程序和云负载的机器(虚拟机,物理服务器,等等)。k8s master控制着每一个节点,一般将很少和这些节点进行直接的交互。

2019-10-24

你可能感兴趣的:(k8s的核心概念(Concepts)【译】)