文章目录
- 前言
- 应用部署
- Kubernetes能做什么
- 总结
前言
Kubernetes(简称k8s)是一个开源的容器编排和管理工具,由Google开发并捐赠给Cloud Native Computing Foundation(CNCF)管理。它能够自动化部署、扩展和管理容器化应用程序
应用部署
- 物理机部署
直接将应用程序部署在物理机器上面- 优点:操作简单
- 缺点:应用程序可能会相互影响,不能为每个应用程序分配合适的计算资源,灵活度较差
- 虚拟机部署
在物理机器上面运行多个虚拟机,在每个虚拟机上面运行各自的应用程序- 优点:应用程序之间相互隔离,减少冲突
- 缺点:虚拟机需要安装操作系统,浪费计算机大量资源
- 容器化部署
使用容器技术共享宿主机的操作系统,让应用程序运行在容器里面-
优点:不同容器中的应用程序相互隔离,包装应用程序,并和底层操作系统充分解耦,易于分发,部署。提供更高的灵活性、可扩展性和便利性。容器提供了一个独立于底层操作系统的运行环境,方便应用的部署和迁移。
-
缺点:容器需要一定的内存和计算资源来运行自己的操作系统内核,相对于原生应用来说,会消耗更多的资源,但是比虚拟机部署消耗的资源要少很多,共享宿主机操作系统内核这种方式相比虚拟机部署隔离的不够彻底,但是比起物理机部署要好很多
-
单个容器的操作还很方便,但是当容器故障停机了,如何让另外一个容器启动去替补停机的容器,怎么做到自动化部署,水平扩展等一系列问题,这些问题我们称为是容器的编排问题,Kubernetes就是解决编排问题的一个开源项目,也是我们博客中的主角,相似的容器编排项目还有Swarm等等,就让读者自行去探索了
Kubernetes能做什么
容器是捆绑和运行应用程序的好方法。在生产环境中,如果需要管理运行应用程序的容器,并确保没有停机时间。例如,如果一个容器关闭,另一个容器需要启动。如果这种行为由一个系统来处理,不是更容易吗? 这就是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提供了强大和可靠的方式来管理和运行容器化应用程序,从而简化了应用程序的部署、扩展和管理工作,提高了应用程序的可靠性和可用性