zl程序教程

您现在的位置是:首页 >  后端

当前栏目

什么是kubernetes

Kubernetes 什么
2023-09-11 14:21:18 时间

前言

环境:centos7.9

什么是kubernetes

kubernetes,简称k8s。
Kubernetes 是一个为容器服务而生的一个可移植、可扩展的容器的编排管理工具,用于管理容器化工作负载和服务,有助于声明式配置和自动化。它拥有庞大且快速发展的生态系统。Kubernetes 服务、支持和工具广泛可用。

Kubernetes 这个名字来源于希腊语,意思是舵手或飞行员。K8s 作为一个缩写,是通过计算“K”和“s”之间的八个字母得出的。Google 于 2014 年开源了 Kubernetes 项目。Kubernetes 结合了 Google 超过 15 年大规模运行生产工作负载的经验以及来自社区的最佳创意和实践。

历史回顾

传统部署时代: 早期,直接在物理服务器上运行应用程序。这样就会无法为物理服务器中的应用程序定义资源边界,这会导致资源分配问题。例如,如果多个应用程序在物理服务器上运行,则可能会出现一个应用程序占用大部分资源的情况,结果其他应用程序的性能就会不佳。比较好的解决方案可能是在不同的物理服务器上运行不同的应用程序。但这并没有解决资源问题,因为物理服务器资源没有得到充分利用,而且维护许多物理服务器的成本也很高。

虚拟化部署时代:作为解决方案,由此引入了虚拟化。它允许您在单个物理服务器的 CPU 上运行多个虚拟机 (VM)。虚拟化允许应用程序在 VM 之间隔离,并提供一定程度的安全性,因为一个应用程序的信息不会被另一个应用程序自由访问。每个 VM 都是在虚拟化硬件之上运行所有组件的完整机器,包括它自己的操作系统。
虚拟化能做到更好地利用物理服务器中的资源并拥有更好的可扩展性,因为可以轻松添加或更新应用程序,实现了降低硬件成本等等。通过虚拟化的实现,相当于可以将一组物理资源呈现为一个虚拟机集群。

容器部署时代:容器类似于虚拟机,但它们具有放松的隔离属性,可以在应用程序之间共享操作系统(OS)。因此,容器被认为是轻量级的。与 VM 类似,容器有自己的文件系统、CPU 份额、内存、进程空间等。由于它们与底层基础架构分离,因此它们可以跨云和操作系统分布移植。

容器之所以流行,是因为它们提供了额外的好处,例如:

敏捷的应用程序创建和部署:与使用 VM虚拟机相比,容器创建镜像的简便性和效率更高。
持续开发、集成和部署:提供可靠且频繁的容器镜像构建和部署以及快速高效的回滚。
Dev 和 Ops 的关注点分离:在构建/发布时而不是部署时创建应用程序容器镜像,从而将应用程序与基础架构解耦。
可观察性:不仅可以显示操作系统级别的信息和指标,还可以显示应用程序运行状况和其他信号。
开发、测试和生产之间的环境一致性:应用程序环境依赖打包为镜像,不管是在哪里运行都能保证环境一致性。
云和操作系统分发可移植性:在 Ubuntu、RHEL、CoreOS、本地、主要公共云和其他任何地方运行。
以应用程序为中心的管理:将抽象级别从在虚拟硬件上运行操作系统提高到使用逻辑资源在操作系统上运行应用程序。
松散耦合、分布式、弹性、自由的微服务:应用程序被分解成更小的、独立的部分,并且可以动态部署和管理——而不是在一台大型单一用途机器上运行的单一堆栈。
资源隔离:可预测的应用程序性能。
资源利用:高效率、高密度。

为什么需要 Kubernetes 以及k8s可以做什么

容器是捆绑和运行应用程序的好方法。在生产环境中,您需要管理运行应用程序的容器并确保没有停机。例如,如果一个容器出现故障,则需要启动另一个容器。如果这种行为由系统处理,会不会更容易?

这就是 Kubernetes 来救援的方式!Kubernetes 为您提供了一个框架来弹性地运行分布式系统。它负责应用程序的扩展和故障转移,提供部署模式等等。例如,Kubernetes 还可以轻松地为您的系统管理金丝雀部署。

Kubernetes 为您提供:
1、服务发现和负载平衡,Kubernetes 可以使用 DNS 名称或使用自己的 IP 地址公开容器。如果容器的流量很高,Kubernetes 能够负载均衡和分配网络流量,从而使部署稳定。
2、存储编排,Kubernetes 允许您自动挂载您选择的存储系统,例如本地存储、公共云提供商等。
3、自动推出和回滚,您可以使用 Kubernetes 描述已部署容器的所需状态,并且它可以以受控的速率将实际状态更改为所需状态。例如,您可以自动化 Kubernetes 为您的部署创建新容器、删除现有容器并将其所有资源用于新容器。
4、自动装箱,你为 Kubernetes 提供了一个节点集群,它可以用来运行容器化的任务。你告诉 Kubernetes 每个容器需要多少 CPU 和内存 (RAM)。Kubernetes 可以将容器安装到您的节点上,以充分利用您的资源。
5、自我修复,Kubernetes 会重新启动失败的容器、替换容器、杀死不响应用户定义的健康检查的容器,并且在它们准备好服务之前不会将它们通告给客户端。
6、秘密和配置管理,Kubernetes 允许您存储和管理敏感信息,例如密码、OAuth 令牌和 SSH 密钥。您可以部署和更新机密和应用程序配置,而无需重新构建容器镜像,也无需在堆栈配置中公开机密。