kubernetes组件与核心概念介绍
节点(Node):
一个节点是一个运行 Kubernetes 中的主机。作为Kubernetes worker,通常称为Minion。每个节点都运行如下Kubernetes关键组件:
Kubelet:是主节点代理。
Kube-proxy:Service使用其将链接路由到Pod,如上文所述。
Docker或Rocket:Kubernetes使用的容器技术来创建容器。
容器组(Pod):
一个 Pod 对应于由若干容器组成的一个容器组,同个组内的容器共享一个存储卷(volume),同一个Pod里的容器共享同一个网络命名空间,可以使用localhost互相通信。Pod是短暂的,不是持续性实体。一个容器组是一个特定运用的打包集合,包含一个或多个容器。
和运行的容器类似,一个容器组被认为只有很短的运行周期。容器组被调度到一组节点运行,直到容器的生命周期结束或者其被删除。
容器组生命周期(pos-states):
包含所有容器状态集合,包括容器组状态类型,容器组生命周期,事件,重启策略,以及 replication controllers。
标签(labels):
标签是用来连接一组对象的,比如容器组pod。标签可以被用来组织和选择子对象。一个Label是attach到Pod的一对键/值对,用来传递用户定义的属性。
Replication Controllers:
主要负责指定数量的 pod 在同一时间一起运行。Replication Controller确保任意时间都有指定数量的Pod“副本”在运行。如果为某个Pod创建了Replication Controller并且指定3个副本,它会创建3个Pod,并且持续监控它们。如果某个Pod不响应,那么Replication Controller会替换它,保持总数为3。
当创建Replication Controller时,需要指定两个东西:
1.Pod模板:用来创建Pod副本的模板
2.Label:Replication Controller需要监控的Pod的标签。
现在已经创建了Pod的一些副本,那么在这些副本上如何均衡负载呢?我们需要的是Service。
services:
如果Pods是短暂的,那么重启时IP地址可能会改变,怎么才能从前端容器正确可靠地指向后台容器呢?
Service是定义一系列Pod以及访问这些Pod的策略的一层抽象。Service通过Label找到Pod组。因为Service是抽象的,所以在图表里通常看不到它们的存在,这也就让这一概念更难以理解。
现在,假定有2个后台Pod,并且定义后台Service的名称为‘backend-service’,lable选择器为(tier=backend, app=myapp)。backend-service 的Service会完成如下两件重要的事情:
1.会为Service创建一个本地集群的DNS入口,因此前端Pod只需要DNS查找主机名为 ‘backend-service’,就能够解析出前端应用程序可用的IP地址。
2.现在前端已经得到了后台服务的IP地址,但是它应该访问2个后台Pod的哪一个呢?Service在这2个后台Pod之间提供透明的负载均衡,会将请求分发给其中的任意一个。通过每个Node上运行的代理(kube-proxy)完成。这里有更多技术细节。
Kubernetes Master:
集群拥有一个Kubernetes Master。Kubernetes Master提供集群的独特视角,并且拥有一系列组件,比如Kubernetes API Server。API Server提供可以用来和集群交互的REST端点。master节点包括用来创建和复制Pod的Replication Controller。
posted on 2018-05-30 11:41 sichenzhao 阅读(201) 评论(0) 编辑 收藏 举报