目录
1. 容器编排工具
- 常见编排工具
==docker官方== docker machine //docker官方提出的, 用于各平台上快速创建具有docker服务的虚拟机的技术 docker-compose //单机编排工具 docker-swarm //多主机 多容器 部署, 不是很成熟; ==Apache Mesos 开源, 分布式资源管理框架; ==Google Kubernetes==
1.1. 概述
- 容器本身没有价值,有价值的是“容器编排”;
2. k8s
2.1. 概述
-
用途:
- 动态对应用进行扩容;
- 仅仅使用需要的资源(模块化), 达到硬件优化的目的;
- 无缝发布应用, 包括自动发布, 自动重启, 自动复制…
-
优势:
- Go开发, 轻量级, 消耗资源少;
- 开源;
- 弹性伸缩, 负载均衡;
参考:
2.2. 组件
- 组成:
1. Master: 集群的管理节点, 1个或是1组, 3个足够; 2. node: 提供计算资源的节点, 即运行容器的节点, 可以扩展;
2.2.1. Master
- 基本构成:
APISERVER 所有服务访问统一入口, API Server 对外暴露了 k8s API,提供 HTTP REST 服务。 提供了认证、授权、访问控制、API 注册和发现等机制 Controller Manager 维持副本期望数目,Controller 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等 Scheduler 负责接收任务,选择合适的节点进行分配任务,Scheduler 负责资源的调度, 按照预定的调度策略将 Pod 调度到相应的机器上 Etcd 分布式键值对数据库,存储K8S集群所有重要数据(持久化),是一个高可用的键值对存储系统,被用作 k8s 的后端存储, 所有集群配置数据都存储在里面,用于服务发现和集群管理,可以说是存了整个集群的状态
2.2.2. node
- 组件构成
1.主要组件: Pod: 在 k8s 里面最小的部署单元不是容器而是 Pod,所以将dockfile 需要「转化」成 Pod 对象, 再交由 k8s 创建 Kubelet: 直接跟容器引擎交互实现容器的生命周期管理,它和 Master 节点协作, 实现 Pod 的创建、启动、监控、重启、销毁等集群管理工作 Kube-Proxy:负责写入规则至Iptables, IPVS(IP Virtual Server) 实现服务映射访问的, 维护主机上的网络规则并执行连接转发,实现服务的负载均衡和反向代理 Docker。负责用于运行容器 (或者说 Pod) fluentd。fluentd 是一个守护进程,它有助于提供集群层面日志 集群层面的日志 2.其他组件: CoreDNS:可以为集群中的SVC创建一个域名P的对应关系解析 Dashboard:给K8S提供一个B/S结构的访问体系 Ingress Controller: 官方只能实现四层代理,Ingress可以实现七层代理 Federation: 提供一个可以跨集群中心多K8S统一管理功能 Prometheus:提供一个K8S集群的监控能力 ELK: 提供K8S集群日志统一分析介入平台