容器化技术

TODO 容器

TODO Docker

TODO Kubernetes

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

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

概念(Concepts)

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

  • 架构: kubernetes 架构与组件概览
  • 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
    • DNS
    • Ingress 和 Ingress Controller
    • 网络策略
  • 存储: Volumes, Persistent Volumes, Storage Class 等
  • 调度: 调度器和调度策略

监控告警

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

kubectl CLI

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

Footnotes: