作为一个管理跨多台主机的集合体应用程序的开源系统,源自Google十年容器化基础架构Borg的Kubernetes(下文简称K8s)提供了部署、维护和扩展应用程序的基本机制。因为K8s具有的轻量级,消耗资源小,开源,弹性伸缩和负载均衡等特点,使其已经成为了业内的通用PaaS平台。
介绍K8s架构,功能以及应用的文章可谓汗牛充栋,而本文尝试用国际化视角(I18n)来解读和剖析K8s。先来关注K8s的各部分组件,其中包括etcd(一个可信赖的分布式键值对存储服务,能否为整个分布式集群存储一些关键数据,协助分布式集群的正常运转,是K8s的持久化方案,存储K8s集群所有重要信息),kubectl(命令行接口,用于对 K8s 集群运行命令),scheduler(负责介绍任务,选择合适的节点进行任务分配),api server(是一切服务访问的入口,负责把来自scheduler的任务写入etcd中),replication controller(控制器,维护副本的期望数目),kuberlet(通过Container Runtime Interface和docker进行交互,操作docker来创建对应的容器,实现pod的生命周期管理),kube proxy(pod间的访问以及负载均衡,通过操作firewall来实现pod映射),pod和node等。
其他常用插件还包括了CoreDNS(为奇群中的SVC创建一个域名IP的对应关系解析),IngressController(官方只实现了四层代理,Ingress可以实现七层),Federation(提供一个跨集群中心多K8s统一管理功能),Prometheus(提供K8s的集群监控能力),ELK(提供K8s集群日志统一分析介入平台)和dashboard等。