Basic knowledge
第一:docker是一款开源的容器,其实这个技术并不新鲜。早期在linux中就有LXC这样的轻量级的虚拟化系统。Docker其实只是换了一种语言来实现而已。Kubernetes意思是航海的舵手,它是docker的一款具有强大功能的编排+监控+灾备+负载管理系统
第二:kubernetes是基于google十五年的容器使用经验的总结和最佳实践,是google内部使用的borg系统的开源版本。改善了docker中很多的不足,可以说是与docker互补的一项技术。
第三:kubernetes和docker一样是用go语言写的,这就说明它们契合度非常高
第四:go语言也是google开源的,大公司就是拽。
第五:docker现在是一家公司,以前叫做DotCloud,社区项目叫moby,免费版本叫做
docker CE,企业版本的叫docker EE。
更多信息可以戳我
element
Replications Controller 复制控制器,它的目的只有一个,那就是保活。Replication Controller确保任何时候Kubernetes集群中有指定数量的pod副本(replicas)在运行
Pod 可以看作是容器的再次封装,同一个Pod共享一个namespace。其内部通过localhost进行互相通信
Label 标签是一个很先进的概念,就是通过给容器打上不同的标签进行区分,后期也可以通过标签进行识别,从而进行更多的操作
Service是定义一系列Pod以及访问这些Pod的策略的一层抽象。Service是通过通过Label找到Pod组。
Node
节点可以是物理或者虚拟机器,作为Kubernetes worker,通常称为Minion。每个节点都运行如下Kubernetes关键组件:
Kubelet:是主节点代理。
Kube-proxy:Service使用其将链接路由到Pod,如上文所述。
Docker或Rocket:Kubernetes使用的容器技术来创建容器。
Kubernetes Master
集群拥有一个Kubernetes Master。Kubernetes Master提供集群的独特视角,并且拥有一系列组件,比如KubernetesAPI Server。API Server提供可以用来和集群交互的REST端点。master节点包括用来创建和复制Pod的Replication Controller。
Architec
kubernetes大概分为5个组件
kube-apiserver:是一个水平设计的控制平台,对外暴露api
etcd:是一个先进的KV存储,提供后端的存储功能,类似的还有zookeeper
kube-scheduler:用于根据外部访问来调度
kube-controller-manager:管理kubelet,运行在管理节点上,用于处理集群日常任务的后台线程
原文翻译
1、节点控制:负责节点下线时的通知和应答
2、复制控制:负责维持在复制控制器中所定义的pods正确数量
3、端点控制:填充端点对象(加入服务,加入pods)
4、服务账户和令牌控制:
kubelet:node的管理插件,用来采集node上的相关信息
kube-proxy:用于node上的网络访问
结构如下图:其中的cAdcisor是用于Pod内部的监控。