Introduction to Cloud Computing

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)。

3. Docker与虚拟机的区别

特性Docker容器虚拟机
资源占用轻量(共享内核)高(独立OS)
启动速度毫秒级分钟级
隔离性进程级(较弱)硬件级(更强)
典型用途微服务、快速部署传统应用、多OS环境

4. 个人理解

相比于虚拟机模拟整个硬件环境,占用较多资源,Docker容器共享宿主机内核,实现线程级别的隔离,通过命名空间和控制组实现资源限制。

注:docker是容器技术的实现之一,其他还有LXC、rkt等。

三、如何理解Kubernetes(k8s)技术?

1. Kubernetes的核心作用

  • 自动化管理容器:包括部署、扩缩容、自愈(如容器崩溃后自动重启)。
  • 统一抽象层:屏蔽底层基础设施差异,实现应用跨云迁移。

Kubernetes Architecture
Kubernetes Architecture

2. 核心组件

  • 控制平面
    • API Server:集群操作的入口。
    • etcd:分布式键值存储,保存集群状态。
    • Scheduler:将Pod分配到合适节点。
  • 工作节点
    • kubelet:管理节点上的容器。
    • kube-proxy:处理网络通信(如服务发现)。

3. Kubernetes的优缺点

优点缺点
提高资源利用率学习曲线陡峭(需掌握YAML、Pod等概念)
支持弹性扩缩容运维复杂度高(需管理集群状态)
强大的生态系统(CNCF项目支持)对状态型应用(如数据库)支持有限