《云原生开发实践》记录

本书会包含大量的实践内容,现阶段应着重看理论内容、实践内容暂且忽略,实践内容在理论补充完毕后用到哪块补哪块。

容器化

  • DOCKERFILE 的多阶段构建在部署阶段很有用,可以大幅减少镜像的体积。
  • Docker 可以自建网络,这样就可以把很多容器纳入到同一个网络下,实现容器间按容器名访问对方。

容器编排

对于一个中大型的应用,会有很多的容器组件。而有些容器如Redis、RabbitMQ、Kafka等需要紧密的配合,这时候就需要用到容器编排。

Docker Compose 组件用于实现本地单个节点上的容器编排,它会从 docker-compose.yaml 文件中读取所需的全部容器的定义,然后运行 docker-compose up 命令启动容器编排。Docker Swarm 可以管理多个节点上的容器,即管理 Docker 集群。

云原生软件生产流程

云计算的能力:

  • 弱化了传统 IT 硬件概念,革命性地降低了企业在基础设施上的建设成本。
  • 实现了弹性获取计算资源,用户可以按需使用。

云计算的成熟时云原生发展的基石,使云原生的许多概念得以落地。云原生应用一般有以下特点:

  • 在应用的设计和开发阶段就为部署到云上做适配。
  • 应用由多个松耦合的小模块构成而不是一个庞大的单体项目,即微服务架构。
  • 通过容器来交付和发布应用,应用代码中会加入容器化需要的文件。

和传统的软件生产方式相比,云原生的优势主要在塔提高了应用发布和运维时的效率,显著降低了运维的复杂性。

云原生基础设施

Kubernetes

Kubernetes 是开源的容器编排平台,支持集群环境下部署和管理容器化应用。目前已经是容器编排领域的事实标准,成为云原生的操作系统。Kubernetes 也叫 K8s ,8指中间的8个字母。K8s 2013年由 Google 开源,相比于 Docker Swarm K8s 提供更加复杂强大的功能。

K8s 集群中包含两种节点,一种是 Control Plane 节点(master 节点),另一种是 worker 节点。K8s 中的容器运行在 Pod 中,Pod 运行在 Node 中。每个集群默认至少有一个 Pod ,否则 Pod 无法调度和运行。Control Plane 是 K8s 的容器编排层,通过它提供的 API ,可以定义和部署容器及管理容器的整个生命周期。Control Plane 有以下组件:

  • API server :提供 K8s 的 API 访问服务。
  • etcd :一致、高可用的键值存储,用来保存集群的数据。
  • Scheduler :负责监控新创建的 Pod ,如果 Pod 没有指定的 Node ,Scheduler 会把它调度到合适的 Node 上。
  • Controller manager :负责管理以一系列控制器,这些控制器会一直监视集群状态并根据情况做出对应操作。
  • Cloud Controller manager :用于和云厂商提供的 API 交互。

kubectl 是 K8s 的命令行工具,可以通过它与集群完成各种操作。

本书后续内容不看了,K8s 相关内容质量较低。