云原生

Table of Contents

1 定义

云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。

这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。

云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。

来自 https://github.com/cncf/toc/blob/master/DEFINITION.md

2 常见的术语

  • CNCF The Cloud Native Computing Foundation,云原生计算基金会。
  • OCI Open Container Initiative,开放容器标准。 是一个轻量级的,开放的治理结构(项目),在 Linux 基金会的支持下成立,旨在围绕容器格式和运行时创建的开放行业标准。 OCI 于 2015 年 6 月由 Docker,CoreOS 和其他容器行业领导者成立。当前包含两种规范:

3 TODO 容器

4 TODO Docker

5 Kubernetes

Kubernetes 是开源的微服务或者容器化应用的编排工具,是谷歌开发的集群管理工具(前身是谷歌内部运行十几年的集群管理工具 Borg1, Kubernetes 吸取 Borg 的经验,然后针对社区定制的开源版本2),现已捐赠给 CNCF3

Kubernetes 提供了服务发现和负载均衡、自动部署和回滚、弹性伸缩、健康检测和服务自愈等特性。它的主要目标是通过提供一组 REST APIS 来隐藏管理容器的复杂性4

5.1 概念(Concepts)

以下文档大都来自 Kubernetes 官方文档 Concepts,加上自己的理解。

  • 概览
  • 集群架构: kubernetes 架构与组件概览
  • 容器
  • 工作负载(Workloads)
    • Pods
    • 工作负载资源
  • Pod: 概念、为什么需要 Pod、状态标识、健康检查、生命周期等
  • 控制器(controller):
    • ReplicaSet: 保证一组 Pod 副本在集群的正常运行
    • ReplicationController: ReplicaSet 是下一代的 RC(支持新的基于集合的标签选择器),建议使用 RS
    • Deployments: 用于无状态服务部署,在 ReplicaSet 基础上提供了更新策略等
    • StatefulSets: 用于部署无状态应用(ZooKeeper,Kafka,Redis 等)
    • DaemonSet: 每个节点上跑一个 Pod,用作类似日志收集、系统监控等功能
    • Garbage Collection: 负责集群资源回收
    • TTL Controller for Finished Resources: 在对象执行完成后 TTL 秒,回收资源(目前仅用于 Job)
    • Jobs 一次性的任务
    • CronJobs
  • Services、负载均衡和集群网络
    • Service 集群内部的服务暴露抽象,提供虚拟 IP ,然后通过负载均衡策略,将流量转发到 Endpoints。 底层实现是 kube-proxy,它支持三种模式(用户空间,iptables,IPVS),主流都是使用 IPVS
    • [ ] 服务拓扑 实现基于 Service 的亲和性
  • 存储: Volumes, Persistent Volumes, Storage Class 等
  • 调度: 调度器和调度策略

5.2 监控告警

  • 监控: 通过 kube-state-metrics 和 cAdvisor 暴露指标

5.3 kubectl CLI

kubectl 是用来管理 Kubernetes 集群的命令行工具。

6 Resources

  • Docker 生态系统一览 翻译的文章,较为详细的说明了 Docker 的前世今生
  • Kubernetes vs Docker 2021 翻译的文章,容器、Docker、Kubernetes 之间的关系, Kubernetes v1.20 开始废弃了 Dockershim 之后,对于研发人员、管理员以及 CI/CD 流程上会有哪些影响?
  • 12-Factor 构建 SaaS 应用方法论
  • kubernetes README Kubernetes 书籍、教程和其它资源列表

6.1 书籍

  • [ ] Kubernetes: Up and Running
  • [ ] Kubernetes in Action
  • [ ] Kubernetes Patterns
  • [ ] Kubernetes Best Practices
  • [ ] Cloud Native Patterns
  • [ ] Kubernetes Patterns
  • [ ] The Kubernetes Book 这本书每年都会更新一次,以跟上最新的 Kubernetes 生态

Footnotes:

First created: 2020-02-01 09:30:20
Last updated: 2021-02-22 Mon 15:57
Power by Emacs 27.1 (Org mode 9.4.4)