Introduction of Cloud Computing —— one of the NUS SOC Workshop courses.
一、课程内容概览
本课程主要围绕云计算及云原生应用开发展开,分为以下核心模块:
1. 云计算基础
- 定义与特征
- NIST定义:按需获取计算资源(网络、存储、服务器等)的模型,具备弹性、可度量、资源共享等特点。
- 关键特性:按需自服务、泛在网络访问、资源池化、弹性扩展、可计量服务。
- 服务模型
- IaaS(基础设施即服务):提供虚拟机、存储等底层资源(如AWS EC2)。
- PaaS(平台即服务):提供开发环境与工具(如Google App Engine)。
- SaaS(软件即服务):直接使用应用(如Gmail)。
2. 虚拟化技术
- 虚拟机(VM)
- 通过Hypervisor(如KVM)模拟完整硬件环境,每个VM运行独立操作系统。
- 缺点:资源开销大、启动慢、部署复杂。
- 容器(Container)
- 共享宿主机操作系统内核,通过命名空间(Namespaces)和控制组(Cgroups)实现隔离。
- 优点:轻量、快速启动、镜像分层复用(如Docker镜像)。
3. 容器编排(Kubernetes)
- 核心功能:自动化部署、扩展、管理容器化应用。
- 核心概念
- Pod:最小的调度单元,包含一个或多个共享资源的容器。
- 控制平面(Control Plane):包括API Server、Scheduler、etcd等,负责集群管理。
- 工作节点(Worker Node):运行Pod的机器,包含kubelet、容器运行时(如Docker)。
4. 云原生应用开发
- 基于Kubernetes的云原生设计模式(如微服务、DevOps集成)。
- 使用开源组件(数据库、消息队列、机器学习框架)构建端到端应用。
二、如何理解Docker技术?
1. Docker的核心概念
- 镜像(Image)
- 静态文件快照,包含应用代码、依赖库、环境配置(通过Dockerfile定义)。
- 分层结构:基础层(如Ubuntu)可复用,上层修改生成新层。
- 容器(Container)
- 镜像的运行实例,提供隔离的进程空间。
- 优势:解决环境依赖问题(“开发环境能跑,生产环境不行”)。
2. Docker架构
- 组件
- Docker Client:用户命令行工具(如
docker build
)。 - Docker Daemon:后台服务,管理容器生命周期。
- Registry:镜像仓库(如Docker Hub)。
- Docker Client:用户命令行工具(如
3. Docker与虚拟机的区别
特性 | Docker容器 | 虚拟机 |
---|---|---|
资源占用 | 轻量(共享内核) | 高(独立OS) |
启动速度 | 毫秒级 | 分钟级 |
隔离性 | 进程级(较弱) | 硬件级(更强) |
典型用途 | 微服务、快速部署 | 传统应用、多OS环境 |
4. 个人理解
相比于虚拟机模拟整个硬件环境,占用较多资源,Docker容器共享宿主机内核,实现线程级别的隔离,通过命名空间和控制组实现资源限制。
注:docker是容器技术的实现之一,其他还有LXC、rkt等。
三、如何理解Kubernetes(k8s)技术?
1. Kubernetes的核心作用
- 自动化管理容器:包括部署、扩缩容、自愈(如容器崩溃后自动重启)。
- 统一抽象层:屏蔽底层基础设施差异,实现应用跨云迁移。
Kubernetes Architecture
2. 核心组件
- 控制平面
- API Server:集群操作的入口。
- etcd:分布式键值存储,保存集群状态。
- Scheduler:将Pod分配到合适节点。
- 工作节点
- kubelet:管理节点上的容器。
- kube-proxy:处理网络通信(如服务发现)。
3. Kubernetes的优缺点
优点 | 缺点 |
---|---|
提高资源利用率 | 学习曲线陡峭(需掌握YAML、Pod等概念) |
支持弹性扩缩容 | 运维复杂度高(需管理集群状态) |
强大的生态系统(CNCF项目支持) | 对状态型应用(如数据库)支持有限 |