Kubernetes 到底是什么?
这周我花了一些时间学习 Kubernetes,因为我想更好地理解我目前职位上的 DevOps 流水线。这篇文章基本上是我整理的笔记,方便以后需要时参考。希望它也能帮助那些对专业术语感到困惑的人更好地理解🤷
Kubernetes 是一个用于管理容器化工作负载和服务的平台。所有主流云平台都支持 Kubernetes,包括 Google、AWS 和 Azure。
好的,但是这是什么意思呢?
让我们回顾一下过去。在过去,应用程序通常部署在物理服务器上,由人工负责管理应用程序、分配资源、监控状态,并确保应用程序高效运行。随着应用程序的增长和服务需求的增长,管理和维护变得越来越困难。
时间飞快,我们迎来了虚拟化。这太棒了,虚拟化让我们能够在一台物理服务器上运行多个虚拟机 (VM)。每个虚拟机都封装了各自的操作系统和其他组件。
事情进一步发展,我们迎来了容器化。容器类似于虚拟机,但更轻量级,它们不再像虚拟机那样孤立,并且共享相同的操作系统。你可能听说过Docker,一个非常流行的容器解决方案。
以下是部署演变的便捷图像,可供参考:
好的,太棒了,现在我们有了容器,我们可以把应用程序放入一个具有我们想要的精确环境和配置的容器中。太棒了!
现在怎么办?
现在我们必须管理这些容器。这时 Kubernetes 就派上用场了。Kubernetes 帮助我们编排容器。编排只是一个花哨的词,指的是一组用于托管容器的工具和脚本。它使我们能够:
- 轻松部署多个实例
- 根据需求扩大或缩小规模
- 主机之间轻松联网
太酷了,太酷了,太酷了,那么这是怎么工作的呢?
嗯,通常你会有一个 Kubernetes 集群,集群是一组节点。节点是安装了 Kubernetes 的物理机或虚拟机。
节点是一台工作机器,容器将由 Kubernetes 启动和管理。我们如何管理它?我们有一个主节点,它监视集群中的节点,并负责节点的编排。主节点会运行不同的脚本和工具,您可以根据集群管理的需要进行配置。
该配置可以管理如下内容:
- 负载均衡
- 服务发现
- 跨实例共享配置
- 存储管理
- 自我修复
一个重要的区别是 Kubernetes不会构建或部署您的应用程序,而是提供工具来帮助您管理环境。
Kubernetes 由以下组件组成:
API 服务器:这是系统的前端,CLI 通过与 API 服务器通信来与集群进行交互。在这里,您可以进行 REST 调用来管理共享状态和配置。
etcd 服务器:这是一个键/值存储,用于存储用于管理集群的所有数据。它以分布式方式存储有关所有节点和主服务器的数据。
调度程序:负责在多个节点之间分配工作。
控制器:这是编排的大脑,它监视整个集群中的任何问题或故障,并负责在节点或容器出现故障时做出相应的响应。
容器运行时:用于运行容器的软件。例如 Docker。
kubelet:这是在集群内每个节点上运行的代理,它们确保节点上的容器按预期运行。
kubectl:Kube 控制工具,用于在集群中部署和管理应用程序的 CLI。您可以使用它来获取集群信息、节点状态等。
这就是我作为一个新手对 Kubernetes 的理解。感谢阅读!
文章来源:https://dev.to/sarahcodes_dev/what-exactly-is-kubernetes-anyway-4k9h