Kubernetes(简称k8s)是一个开源的容器编排和管理工具,由Google开发并捐赠给Cloud Native Computing Foundation(CNCF)管理。它能够自动化部署、扩展和管理容器化应用程序
优点:不同容器中的应用程序相互隔离,包装应用程序,并和底层操作系统充分解耦,易于分发,部署。提供更高的灵活性、可扩展性和便利性。容器提供了一个独立于底层操作系统的运行环境,方便应用的部署和迁移。
缺点:容器需要一定的内存和计算资源来运行自己的操作系统内核,相对于原生应用来说,会消耗更多的资源,但是比虚拟机部署消耗的资源要少很多,共享宿主机操作系统内核这种方式相比虚拟机部署隔离的不够彻底,但是比起物理机部署要好很多

单个容器的操作还很方便,但是当容器故障停机了,如何让另外一个容器启动去替补停机的容器,怎么做到自动化部署,水平扩展等一系列问题,这些问题我们称为是容器的编排问题,Kubernetes就是解决编排问题的一个开源项目,也是我们博客中的主角,相似的容器编排项目还有Swarm等等,就让读者自行去探索了
容器是捆绑和运行应用程序的好方法。在生产环境中,如果需要管理运行应用程序的容器,并确保没有停机时间。例如,如果一个容器关闭,另一个容器需要启动。如果这种行为由一个系统来处理,不是更容易吗? 这就是Kubernetes的拯救之道!Kubernetes提供了弹性运行分布式系统的框架。它负责应用程序的扩展和故障转移,提供部署模式等
Kubernetes提供了:
服务发现和负载均衡
Kubernetes 可以使用 DNS 名称或自己的 IP 地址来暴露容器。 如果进入容器的流量很大, Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定
存储编排
Kubernetes 允许你自动挂载你选择的存储系统,例如本地存储、公共云提供商等
自动部署和回滚
你可以使用 Kubernetes 描述已部署容器的所需状态, 它可以以受控的速率将实际状态更改为期望状态。 例如,你可以自动化 Kubernetes 来为你的部署创建新容器, 删除现有容器并将它们的所有资源用于新容器
自动完成装箱计算
你为 Kubernetes 提供许多节点组成的集群,在这个集群上运行容器化的任务。 你告诉 Kubernetes 每个容器需要多少 CPU 和内存 (RAM)。 Kubernetes 可以将这些容器按实际情况调度到你的节点上,以最佳方式利用你的资源
自我修复
Kubernetes 将重新启动失败的容器、替换容器、杀死不响应用户定义的运行状况检查的容器, 并且在准备好服务之前不将其通告给客户端
密钥与配置管理
Kubernetes 允许你存储和管理敏感信息,例如密码、OAuth 令牌和 SSH 密钥。 你可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥
批处理执行
除了服务外,Kubernetes 还可以管理你的批处理和 CI(持续集成)工作负载,如有需要,可以替换失败的容器
水平扩缩
使用简单的命令、用户界面或根据 CPU 使用率自动对你的应用进行扩缩
IPv4/IPv6 双栈
为 Pod(容器组)和 Service(服务)分配 IPv4 和 IPv6 地址
可扩展性设计
在不改变上游源代码的情况下为你的 Kubernetes 集群添加功能
Kubernetes提供了强大和可靠的方式来管理和运行容器化应用程序,从而简化了应用程序的部署、扩展和管理工作,提高了应用程序的可靠性和可用性