虚拟化与容器化 04 Kubernetes
总结来自《Kubernetes权威指南》
Kubernetes 是什么
基于容器技术的分布式架构方案,他的前身是谷歌的Borg 大规模集群管理系统。同时Kubernetes也是一个开放的开发平台和完备的分布式系统支撑平台。
在Kubernetes中Service是分布式集群架构的核心,一个service对象具有如下特征
- 唯一指定的标识名称
- 一个虚拟IP与端口号
- 能够提供远程服务
- 能被映射到容器应用上
Service的服务进程通过Socket通信方式对外提供服务,每个进程都有独立的Endpoint;Kubernetes可以使用户通过Cluster IP +Service Port的方式访问指定Service。Service一旦创建就不再变化不会造成IP地址跳动的问题。
为了将为Service提供服务的进程进行容器隔离,Kubernetes设计了Pod对象,将每个服务进程包装到相应的Pod中,使其成为Pod中运行的一个容器。
Service 与 Pod是如何建立关系的?
每个Pod拥有一个Label,相应的Service拥有Label Selector;如Pod 的Label=MYSQL 则拥有选择条件MYSQL的 Service将作用于所有有MYSQL标签的Pod。
Pod的概念?
Pod运行在被称为Node的环境中,Node可以是物理机也可是云上的虚拟机。通常一个Node上有上百个Pod。Pod上运行一个名为Pause的特殊容器,其他容器为业务容器。业务容器共享Pause容器的网络栈与Volume挂载卷。只有提供服务的Pod可以被映射为一个服务。
集群管理?
Kubernetes将集群中的机器划分为Node与一个Master; 在Master上运行着一组集群管理相关的进程:
- kube-apiserver
- kube-controller-manager
- kube-scheduler
该组进程完成了整个集群的资源管理、Pod调度、弹性伸缩与安全控制、系统监控与纠错功能。
在Node上运行着真正的应用,在Node上最小的运行单元是Pod,在Node上运行着kubelet与kube-proxy服务进程,这些进程负责Pod的生命周期以及实现软件模式的均衡负载器。