Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,简称“K8s”或者“Kube”。Kubernetes 最初由 Google 的工程师开发和设计,Google 是最早研发 Linux 容器技术的企业之一,曾公开分享介绍 Google 云服务背后的技术- 如何将一切都运行于容器之中。Google 每周会启用超过 20 亿个容器全都由内部平台 Borg 支撑。Borg 是 Kubernetes 的前身,多年来开发 Borg 的经验教训成了影响 Kubernetes 中许多技术的主要因素。
在Kubernetes中,基本调度单元称为“pod” 通过该种抽象类别可以把更高级别的抽象内容增加到容器化组件,一个Pod可以承载一个或者多个相关的容器,容器集为分组容器增加了一个抽象层,可帮助您调用工作负载,并为这些容器提供所需的联网和存储等服务。
为什么需要Kubernetes?
K8s的目标是让部署容器化的应用简单并且高效,它提供了应用部署,规划,更新,维护的一种机制。K8s是一种可自动实施Linux 容器操作的开源平台。它可以帮助用户省去应用容器化过程的许多手动部署和扩展操作。也就是说,您可以将运行 Linux 容器的多组主机聚集在一起,借助 Kubernetes 编排功能,您可以构建跨多个容器的应用服务、跨集群调度、扩展这些容器,并长期持续管理这些容器的健康状况。
有了 Kubernetes,您便可切实采取一些措施来提高 IT 安全性。而且,这些集群可跨公共云、私有云或混合云部署主机。因此,对于要求快速扩展的云原生应用而言,Kubernetes 是理想的托管平台。K8s于 2015 年发布,并迅速成为事实上的容器编排标准。
Kubernetes 还需要与联网、存储、安全性、遥测和其他服务整合,以提供全面的容器基础架构。
K8s的特色
-
自动推出和回滚
K8s 会逐步推出应用程序或其配置的更改,同时监控应用程序运行状况以确保它不会同时终止所有实例。如果出现问题,K8s 会为您回滚(rollback)更改。利用不断增长的部署解决方案生态系统。
-
服务发现和负载均衡
使用不熟悉的服务发现机制无需修改应用程序。K8s 为 Pod 提供了自己的 IP 地址和一组 Pod 的单个 DNS 名称,并且可以在它们之间进行负载平衡。
-
存储编排
自动挂载选择的存储系统,无论是本地存储、公共云提供商,还是网络存储系统。
-
机密和配置管理
部署和更新机密和应用程序配置,而无需重建映像,也无需在堆栈配置中公开机密。
-
自动打包
根据资源需求和其他限制自动放置容器,而且不牺牲可用性。混合使用关键工作负载和尽力而为的工作负载,以提高利用率并节省更多资源。
-
批量执行
除了服务之外,K8s 还可以管理批处理和 CI(Continuously Integration) 工作负载,并根据需要替换出现故障的容器。
-
IPv4/IPv6 双栈
将 IPv4 和 IPv6 地址分配给 Pod 和服务。
-
水平压缩扩展
使用简单的命令、UI 或根据 CPU 使用情况自动压缩扩展应用程序。
-
自我恢复
重新启动失败的容器,在节点故障时替换和重新安排容器,终止不响应用户定义健康检查的容器,并且在它们准备好提供服务之前不向客户端通告它们。
-
专为可扩展性而设计
在不更改上游源代码的情况下为 K8s 集群添加功能。