docker学习06--Kubernetes(一)

什么是Kubernetes

Kubernetes(k8s)是自动化认容器操作的开源平台。这些操作包括部署,调度和节点集群间扩展。使用Kubernets可以:

  • 自动化容器的部署和复制

  • 随时扩展或收缩容器规模

  • 将容器组织成组,并且提供容器间的负载均衡

  • 很容易的升级应用程序容器的新版本

  • 提供容器弹性,如果容器失效就替换它,等等。。。
    使用Kubernetes只需一个部署文件,使用一条命令就可以部署多层容器(前端,后台等)的完整集群:

    $ kubectl create -f single-config-file.yaml
    

kubenetes的核心概念

集群

集群是一组节点,这些节点可以是物理服务器或者虚拟机,之上安装了kubernetes平台。如下所示,是一个简化的核心概念图:
docker学习06--Kubernetes(一)_第1张图片

上图可以看到如下组件,使用特别的图标表示Services和Label

  • Pod
  • Container(容器)
  • Label(标签)
  • Replication Controller(复制控制器)
  • Services(服务)
  • Node(节点)
  • Kubernetes Master (Kubernetes主节点)

Pod

Pod(上图绿色方框)安排在节点上,包含一组容器和卷。同一个Pod六的容器共享同一个网络命名空间,可以使用localhost互相通信。Pod是短暂的,不是持续性实体。

Lable

一些Pod有lable,一个Lable是attach到Pod的一对键/值对,用来传递用户定义的属性。
比如,创建了一个“tier”和“app”标签,通过Lable(tier=frontend,app=myapp)来标记前端Pod容器,使用Lable(tier=backend,app=myapp)标记后台Pod。然后可以使用selecors选择带有特定Lable的Pod,并且将service或者replication controller应用到上面。

Replication Controller

Replication Controller 确保任意时间都有指定数量的Pod副本在运行,如果为某个Pod创建了Replication Controller并且指定3个副本,他会创建三个pod,并且集训监控它们。如果某个pod不响应,那么Replication Controller会替换它,保持总数为3,如下图:
docker学习06--Kubernetes(一)_第2张图片

当创建Replication Controller时,需要指定两个东西:

  • Pod模板:用来创建Pod副本的模板
  • Lable:Replication Controller 需要监控的Pod的标签

现在已经创建了Pod的一些副本,那么在这些副本上如何均衡负载呢,我们就需要services了

Service

Service是定义一些列Pod以及访问这些Pod的策略的一层抽象。Service通过Lable找到Pod组。因为Service是抽象的,所以在图里通常是看不到它们的存在
假如有2个后台Pod,并且定义后台Service的名称为’backend-service‘,lable选择器为(tier=backend,app=myapp)。backend-service的Service会完成如下两件重要的事情:

  • 会为Service创建一个本地集群的DNS入口,因此前端Pod只需要DNS查找主机名为’backend-service‘,就能够解析出前端应用程序可用的IP地址。
  • 现在前端已经得到了后台服务的IP地址,但是它应该访问2个后台Pod的哪一个呢。Service在这2个后台Pod之间提供透明的负载均衡,会将请求分发给其中的任意一个。通过每个Node上运行的代理(kube-proxy)完成。
    docker学习06--Kubernetes(一)_第3张图片

有一个特别类型的Kubernetes Service 成为LoadBalancer ,作为外部负载均衡器使用,在一定数量的Pod之间均衡流量,比如,对于负载均衡Web流量很有用

Node

节点是物理或者虚拟机器,作为Kubernetes worker,通常称为Minion。每个节点都运行如下Kuberbetes关键组件:

  • Kubelet:是主节点代理
  • Kube-proxy:Service使用其将链路路由到pod
  • Docker或者Rocket:Kubernetes使用的容器技术来创建容器。

Kubernetes Master

集群拥有一个Kubernetes Master,其提供集群的独特视角,并且拥有一系列组件,比如Kubernetes API Server。API Server提供可以用来和集群交互的REST端点。master节点包括用来创建和复制Pod的Replication Controller

原文链接:http://omerio.com/2015/12/18/learn-the-kubernetes-key-concepts-in-10-minutes/(翻译:崔婧雯)

你可能感兴趣的:(docker)