7 9
k8s基本概念

Kubernetes是在群集中管理跨多台主机容器化应用的开源系统。它为容器化应用提供了资源调度部署服务发现扩展等功能。

TL;DR

主要功能用途:

  1. 使用Docker对我们的应用进行打包、实例化和运行。

  2. 以集群的方式运行和管理跨主机的容器。

  3. 解决跨主机容器的通讯问题。

  4. 提供自我修复的功能,保证系统运行的健壮性。

核心概念

先看下K8s的架构图

k8s

核心组件:

  • Node

    节点是Kubernates系统中的一台工作机器,既从属主机。它可以是物理机,也可以是虚拟机。每一个节点都包含了Pod运行所需的必要服务,例如Docker、kubelet和网络 代理(proxy),节点受Kubernates系统中的主节点控制。

    和Pod、Service不一样,节点本身并不属于Kubernates的概念,它是云平台中的虚拟机或实体机。所以当一个节点加入到Kubernates系统中时,它将会创建一个数据结构 来记录该节点的信息。另外,不是所有节点都能加入到Kubernates系统中,只有那些通过验证的节点才能成为Kubernates节点。

    你可以通过下面的命令获取节点运行情况列表:

    $ kubectl get nodes
    
    NAME          LABELS                               STATUS
    172.19.17.99  kubernetes.io/hostname=172.19.17.99  Ready
    
  • Pod

    Pod是一组并置的应用容器,这些容器是共享磁盘卷的。

    Pod是可以被创建,调度,并与Kubernetes管理最小部署单元。Pod可以单独创建。由于Pods没有受管的生命周期,如果他们进程死掉了,他们将不会重新创建。出于这个原因,建议您使用复制控制器(我们将在后面介绍),即使你创造了单独的Pod。

    所有在Pod的应用使用相同的网络命名空间,IP地址及端口空间。他们可以找到并互相使用localhost沟通。每个Pod有一个与跨网络的其他物理计算机和容器充分沟通的扁平网络共享命名空间中的IP地址。

  • Service

    服务为一组Pod提供单一稳定的名称和地址。他们作为基本负载均衡器而存在。是一系列Pod以及这些Pod的访问策略的抽象。

    Pod大多数被设计为长期运行的,但具备时效性,一旦单个进程死亡,Pod也跟着退出。如果Pod退出,复制控制器使用新的Pod替换它。每个Pod都有自己专用的IP地址,这使得容器具有相同的端口,即使他们共享相同的主机。但每次Pod由复制控制器启动,Pod将获取一个新的IP地址。

  • Replication Controller

    复制控制器管理Pod的生命周期。它们保证指定数量的Pod在任何给定的时间都在运行。他们通过创建或删除Pod做到这一点。出于这个原因,建议您使用复制控制器,即使你创造了单独的Pod。

  • Label

    Label(标签)是一组附加在对象上的键值对。标签常用来从一组对象中选取符合条件的对象,这也是Kubernates中目前为止最重要的节点分组方法。标签的本质是附属在对象上的非系统属性类的元数据, 即它不是名字、Id以及对象的硬件属性,而是一些附加的键值对。