09 云计算
概述
1. 云计算层次
# 基础设施即服务 (IaaS)
- 云服务提供商只提供 CPU, 内存, 网络等基础资源;
# 平台即服务 (PaaS)
- 云服务提供商提供操作系统层级的服务, 类似于远程登录一台主机;
# 软件即服务 (SaaS)
- 云服务提供商直接在云端部署好了应用程序, 用户可以直接选择和使用自己想用的应用;
# 容器即服务
# 函数即服务
2. Docker
# docker
- docker 是一种非常轻量的虚拟化技术, 它是通过容器来运行不同系统上的应用程序;
- 容器本质是一个进程, 通过 namespace 和 Cgroup 来实现资源隔离和宿主机资源的公平调度和分配;
# 优点
- 与虚拟机相比, 容器更加轻量
* 容器中只需要包含应用程序和其依赖的库和组件, 通过 docker deamon 守护进程来直接运行, 速度快, 占有资源少;
* 虚拟机除了应用程序和依赖项以外, 还需要在底层模拟操作系统, 会消耗更多的计算资源, 启动速度慢;
- 容器解决了不同主机和操作系统上应用移植的问题
* 容器内部主要包含了应用以及它所依赖的库和组件
* 开发人员可以对一个正在运行的容器其进行环境配置, 而后打包成镜像文件;
* 其后, 该镜像文件就可以在其他不同的主机上通过 docker deamon 守护进程来运行了;
- 容器更加容易扩展和维护
* 结合 docker 本身的 swarm 或者 K8S 可以对分布式集群上的容器进行编排;
* 实现对运行容器状态的监控, 当有容器挂掉时, 自动在其它工作节点上进行重启;
* 实现弹性计算, 当应用的并发请求量突然增加时, 可以自动增加计算资源的分配, 自动创建出更多的容器来实现负载均衡;
3. K8S
# K8S
- K8S 主要为 docker 容器提供一种编排和管理的技术;
# K8S 集群
- K8S 集群拥有一个 master 节点, 集群主控, 负责接收用户请求, 并进行集群资源和任务的管理;
- K8S 集群可以有很多 worker 节点, 它们是计算任务的实际承担者, 从 master 节点上接受命令, 然后执行;
# K8S 组成
- kubeadm: 初始化集群
- kubelet: 接收指令并对运行的 pod 生命周期进行管理
- kubectl: 集群命令行管理工具
# K8S 概念
- Namespace : 根据用户来实现集群资源的隔离;
- Pod: 是 K8S 管理的最小单元, 是容器的封装, 部署 worker 节点上, 用于执行计算任务;
- 控制器: 对运行的 Pod 进行管理和监控, 一般使用 Deployment 控制器, 支持滚动更新和回滚, 扩容和缩容等;
- Service: 为内部分布式部署的 Pod 提供一个统一的访问地址, 外部请求可以提交到统一的地址, 然后再分配给具体的 Pod;