计算资源隔离
- 更方便进行高并发架构的维护和升级
- 架构管理的灵活性更高,不再以单个节点的物理资源作为基础
技术:
- 硬件辅助虚拟化
- 容器技术
在企业部署方案中,很少以单节点实现虚拟化和容器技术,一般以集群状态来运行虚拟化技术或者容器。
容器相对比硬件辅助虚拟化的优点:
- 轻量级 (运行时对系统内存和硬盘的使用较少)
- 便捷性 portable (容器对于镜像有规范化的镜像标准,因此打包制作好的镜像可以在任何容器运行时环境中运行)
- 运行速度快 (容器在启动时,并不需要从系统内核开始进行初始化;容器在运行时只需要启动少量进程即可)
缺点:
- 容器并不可靠
- 缺少专门的存储规划
- 容器通信方式有限
Kubernetes 是一个开源的容器编排引擎,用来对容器化应用进行自动化部署、扩缩和管理。
容器的存储管理和网络基础设施管理:
以docker为例:
存储:
bind-mount
volume
以上的存储类型都不支持在跨节点进行容器化应用部署时的存储管理问题.
网络:
host 直接复制容器宿主机的网络配置
bridge 桥接网络驱动 不同桥接网络之间容器通信需要配置额外的网络通信参数
ipvlan / macvlan 通过改变网络接口的vlan标签,让不同宿主机中的容器可以彼此进行通信
overlay 支持跨宿主机的容器通信
以上的docker网络设施解决方案中,要么只能实现单节点的通信,要么在多节点通信状态下,将大大增加宿主机网卡的工作压力。以上的跨节点通信方案在设置时,都需要设置额外的路由规则才可以实现。
K8S 部署过程整理:
Kubernetes 集群的需求:
(1)可用性:一个单机的 Kubernetes 学习环境,具有单点失效特点。创建高可用的集群则意味着需要考虑:
- 将控制器(运行K8S核心组件的节点)与工作节点(运行应用容器的节点)分开
- 在多个节点上提供控制器组件的副本
- 为针对集群的 API 服务器的流量提供负载均衡
- 随着负载的合理需要,提供足够的可用的(或者能够迅速变为可用的)工作节点
- 规模:如果你预期你的生产用Kubernetes 环境要