目录
一、容器编排工具
-
Swarm:Docker自己的容器编排工具
-
Mesos:Apache的一个资源统一管控的工具,需要和Marathon结合使用
-
Kubernetes:Google开源的的容器编排工具
二、kubernetes的特点
- 轻量级:底层使用go语言开发,资源消耗小
- 开源
-
自我修复——控制器:一旦某一个容器崩溃,能够在1秒中左右迅速启动新的容器
-
弹性伸缩——自动/手动:可以根据需要,自动对集群中正在运行的容器数量进行调整
-
服务发现:服务可以通过自动发现的形式找到它所依赖的服务
-
负载均衡:如果一个服务起动了多个容器,能够自动实现请求的负载均衡
-
版本回退:如果发现新发布的程序版本有问题,可以立即回退到原来的版本
-
存储编排:可以根据容器自身的需求自动创建存储卷
-
批处理:提供一次性任务(job),定时任务(cronjob);满足批量数据处理和分析的场景
三、构建kubernenets集群的构建方式
-
minikube——测试用,生产环境一般不用
-
kubeadm—— 相当于yum工具
-
二进制(手工编译安装)——X 不用
-
使用开源的/收费的第三方工具(kubesphere rancher k8s-disploy)
-
基于云——阿里云ACK 微软云AKS 华为云CES
二进制和kubeadm的区别:
-
二进制的部署方式:所有的组件都是以宿主机进程的方式来管理的
-
kubeadm的部署方式:所有的组件,都是以封装镜像、运行为容器的方式来跑的
四、kubernetes组件
一个kubernetes集群主要是由控制节点(master)、工作节点(node)构成,每个节点上都会安装不同的组件。
master:集群的控制平面,负责集群的决策 ( 管理 )
ApiServer : 资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制
Scheduler : 负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上
ControllerManager : 负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等
Etcd :负责存储集群中各种资源对象的信息
node:集群的数据平面,负责为容器提供运行环境 ( 干活 )
Kubelet : 负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器
KubeProxy : 负责提供集群内部的服务发现和负载均衡
Docker : 负责节点上容器的各种操作