在碰到Kubernetes时,很多人是否跟我一样有这样的困惑:网上文档杂而不全,没有系统性的整理;官方文档全英文,专业词汇较多,不容易理解,而且我们不确定哪些章节部分是我们必须掌握的知识,无从下手。所以打算记录自己学习Kubernetes的知识,整理个精简的教程。

什么是Kubernetes

Kubernetes源于希腊语,意为“舵手”或“飞行员”,K8s是通过将8个字母“ubernete”替换为8而导出的缩写。Kubernetes项目由Google公司在2014年启动。Kubernetes建立在Google公司超过十余年的运维经验基础之上,Google所有的应用都运行在容器上, 再与社区中最好的想法和实践相结合,它是现今最受欢迎的和使用最为广泛的容器管理平台。

因为Kubernetes是建立在容器基础环境之上的组件,我们要搞清楚Kubernetes是干什么用的,首先需要了解容器,如果你有使用过容器方面的经验,可以跳过关于容器的介绍;如果没有,最好先了解下相关知识,详见另一篇关于什么是Docker的文章。

Kubernetes 是一个跨主机集群的开源的容器调度平台,它可以自动化应用容器的部署、扩展和操作 , 提供以容器为中心的基础架构。

通俗理解就是Kubernetes是一个容器编排服务,类似Rancher;它可以按你的需求随意部署、调试、和伸缩服务;可以轻而易举的实现无状态服务的分布式集群;可以将你的节点资源统一管理和合理分配。最终实现应用服务的低成本化健壮运行。使用Kubernetes,你可以快速高效地响应客户以下需求:

  • 快速、可预测地部署您的应用程序
  • 拥有即时扩展应用程序的能力
  • 不影响现有业务的情况下,无缝更新应用
  • 优化硬件资源,降低成本

Kubernetes特点

  • 便携性: 无论公有云、私有云、混合云还是多云架构都全面支持
  • 可扩展: 它是模块化、可插拔、可挂载、可组合的,支持各种形式的扩展
  • 自修复: 它可以自保持应用状态、可自重启、自复制、自缩放的,通过声明式语法提供了强大的自修复能力

Kubernetes功能

Kubernetes提供了基础设施来构建一个真正以容器为中心的开发环境,可以满足我们日常开发和应用中许多常见的需求:

  • Pod提供多个复合应用使用一个容器模型
  • 支持使用外部存储
  • 支持安全类信息,例如证书、密码、token等的统一管理
  • 应用服务的健康检查
  • 应用多副本管理
  • 应用横向自动伸缩
  • 应用滚动更新
  • 服务发现
  • 负载均衡
  • 资源监测和管理
  • 日志采集和存储
  • 支持自检和调试
  • 支持认证鉴权

既提供了PAAS层的简单性又提供了IAAS层的灵活性。Kubernetes在容器的基础上,进一步的提高了开发和运维效率;有实力的团队还可以借助Kubernetes整合内部各类资源和服务,构建属于自已的CI/CD管理平台。