目录
Kubernetes是google开源的容器编排工具,本质是一组服务器集群,在集群的各个节点上运行程序来进行容器进行管理,最终实现资源管理智能化、自动化。
(1)新容器能够迅速接替崩溃容器,自我修复能力强。
(2)灵活性强,可以对运行容器的数量进行个性调整,也可以退回旧版本,支持横向扩容和整体迁移。
(3)可以自主去发现依赖的服务。
(4)多个容器启动时,自动实现处理请求的负载均衡。
(5)可创建存储卷来根据需求对容器进行存储。
(1)master
集群控制节点,至少需要一个master节点。
(2)node
工作负载节点,是由master分配容器到node上,node上的docker在进行运行容器。
(3)pod
kubernetes的最小控制单元,容器运行在其中,一个pod可以有1个或多个容器。
(4)label
通过对标签对pod进行分类,同一类pod有相同标签。
(5)namespace
用来隔离pod的运行环境。
(1)ApiServer:资源操作的唯一入口,接收用户输入的命令,提供认证、注册等功能,可以通过REST调用、Kubectl命令行界面或者Kubeadm等来访问。需要安装某个服务时,安装请求会首先发送到master节点上的ApiServer。
(2)Scheduler:监视来自ApiServer的新请求,进行集群资源调度,按照策略将Pod调度到最适合的node节点上。安装请求发送到ApiServer后右Scheduler进行选择(在etcd中获取node节点性能等信息并通过算法进行选择)将服务安装到哪个node节点。
(3)Controller-manager:维护集群状态,故障检测等等。ApiServer调用Controller-manager来调度node节点去安装这个服务。
(4)etcd:存储集群中对象的信息(类似于数据库)。在kubernetes启动后,master和node的信息都会存储到这里。
(1)Kubelet:维护容器的生命周期,控制docker来对容器进行创建删除等操作。Kubelet接收到安装指令后通知docker,由docker去启动用于这个服务的Pod,容器在此Pod中运行。
(2)Kubeproxy:提供集群内部的服务发现情况和负载调度。通过Kubeproxy对此服务进行访问。
(3)Docker(或者其他容器引擎):负责节点上的容器的相关操作
(4)其他组件
kube-dns:我整个集群提供dns服务
ingress controller:为服务提供外网入口
heapster:提供资源监控
dashboard:提供GUI界面
fluentd-elasticsearch:集群日志采集、存储和查询