2

基本架构

clipboard.png

彩色版

clipboard.png

基本概念

Master

master节点运行着集群管理相关的一组进程:

  • etcd

  • kube-apiserver

  • kube-controller-manager

  • scheduler

这些进程实现了整个集群的资源管理、Pod调度、弹性伸缩、安全控制、系统监控、纠错等管理功能。

Node(节点)

  • 之前的版本叫做Minion,可以是一台物理主机,也可以是一台虚拟机。

  • 每个Node上运行用于启动和管理Pod的服务Kubelet

  • 运行Kubelet、kube-proxy、docker daemon等服务进程

相关命令

  • kubectl get node

NAME           LABELS                                STATUS     AGE
xxx   kubernetes.io/hostname=xxxx   Ready      3h
127.0.0.1      kubernetes.io/hostname=127.0.0.1      NotReady   3h
  • kubectl describe node xxx

Pod(最小调度单元、服务隔离)

  • 一个Pod可以被一个容器化的环境看做是应用层的逻辑宿主机(Logical Host),通常一个Node中可以运行几百个Pod,每个Pod中有多个容器应用,同一个Pod中的多个容器应用通常是紧密耦合的(相当于多个业务容器组成的一个逻辑虚拟机)。

  • 每个Pod中有一个特殊的Pause容器,其他的成为业务容器,这些业务容器共享Pause容器的网络栈以及Volume挂载卷,因而他们之间的通信及数据交互更为高效。

同一个pod中的业务容器共享如下资源:

  • PID命名空间(不同应用程序可以看到其他应用程序的PID)

  • 网络命名空间(pod中多个容器可以访问同一个IP和端口范围)

  • IPC命名空间(能够使用SystemV IPC或者POSIX消息队列进行通信)

  • UTS命名空间(共享同一个主机名)

  • Volumes(访问定义在pod级别的存储卷)

Replication Controller(管理一组Pod)

kubernetes通过RC中定义的Label筛选出对应的Pod实例并实时监控其状态和数量,如果实例数量少于定义的副本数量,则会根据RC中定义的Pod模板来创建一个新的Pod,然后Scheduler将此Pod调度到合适的Node上启动运行,直到Pod实例数量达到预定目标。这个过程完全是自动化的。

  • 确保用户期望的Pod数量(创建或销毁Pod)

  • 在线Pod数量调整

Service(一组提供相同服务的pod的对外访问接口)

具有如下特征:

  • 拥有一个唯一指定的名字

  • 拥有一个虚拟IP和端口号

  • 能够提供某种远程服务能力

  • 被映射到提供这种服务能力的一组容器上

service的服务进程目前都基于socket通信方式对外提供服务。

clipboard.png

kubernetes内置了透明的负载均衡以及故障恢复的机制。

Label(标签)

解决service与pod之间的关联问题。kubernetes给每个pod贴上一个标签,然后给service定义定义标签选择器。

Scheduler(将Pod调度到Node上)

将Pod调度到合适的Node上启动运行

Volume(容器共享存储卷)

pod中能够被多个容器访问的共享目录,与pod同生命周期,但与容器的生命周期无关,当容器终止或重启时,volume中的数据不会丢失。

Namespace(命名空间)

使用namespace来组织kubernetes的各种对象,可以实现用户的分组(多租户),对不同的租户还可以进行单独的资源设置和管理,是的整个集群的资源配置非常灵活。

参考


codecraft
11.9k 声望2k 粉丝

当一个代码的工匠回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样,当他老的时候,可以很自豪告诉世人,我曾经将代码注入生命去打造互联网的浪潮之巅,那是个很疯狂的时代,我在一波波的浪潮上留下...