Kubernetes 简介
在本文中,我的目标是了解 Kubernetes 的宗旨,理解其哲学。如果我需要稍微解释一下,那就是所有方法都会导致依赖关系。想象一下,你有一个软件项目。所有类都相互依赖。此时,依赖注入或许是一个不错的解决方案。让我们跳出思维定式。假设你有一个 Php 项目。我们需要其他库和包,这些库和包是由其他程序员编写的。是的,你知道答案。Composer对我们来说是最好的解决方案。在说“完美!”之前,实际上我们仍然需要十几个依赖项。操作系统的服务可以是 Nginx、Mysql、Rabbitmq、Redis 等等。这还没有结束。我们直接依赖于操作系统。此外,网络呢?Docker 就是解决这些问题的解决方案。但是,管理大量容器仍然会遇到一些令人困惑的问题。幸运的是,我们遇到了像Kubernetes这样的容器编排系统。
我将对 Kubernetes 进行简单介绍,并演示可以解决哪些问题。
本质上,Kubernetes 是一种容器编排。容器编排确保我们能够管理容器。我们能够在单台计算机上运行容器来开发或测试应用程序。然而,在生产环境中,我们的优先级会有所不同。
- 它对于错误是否耐受?
- 可扩展性。
- 尽可能少地使用机器资源。
- 可从外部访问。
- 我们可以在不停机的情况下进行更新/回滚吗?
容器编排器就是帮助我们实现所有这些目标的系统。市面上有很多可用的容器编排器。
-
Docker Swarm
是 Docker 公司提供的容器编排器,是 Docker Engine 的一部分。 -
Kubernetes
Kubernetes 由 Google 发起,但现在它是云原生计算基金会项目的一部分。 -
Mesos Marathon
Marathon 是在 Apache Mesos 上大规模运行容器的框架之一。 -
Amazon ECS
Amazon EC2 容器服务 (ECS) 是 AWS 提供的托管服务,用于在其基础设施上大规模运行 Docker 容器。 -
Hashicorp Nomad
Nomad 是 HashiCorp 提供的容器编排器。
从现在开始,我们来简单聊聊 Kubernetes。根据 Kubernetes 官网的介绍。顺便提一下,Kubernetes 也被称为 k8s,因为 k 和 s 之间有 8 个字母。
"Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications."
Kubernetes 为容器编排提供了非常丰富的功能。其中一些功能完全受支持。Kubernetes 使用 Go 编程语言编写。
-
自动装箱
Kubernetes 根据资源使用情况和约束自动调度容器,而不会牺牲可用性。 -
具有自我修复功能的
Kubernetes 会自动替换并重新调度故障节点上的容器。它还会根据现有规则/策略终止并重启未响应健康检查的容器。 -
水平扩展
Kubernetes 可以根据 CPU 和内存等资源使用情况自动扩展应用程序。在某些情况下,它还支持基于客户指标的动态扩展。 -
服务发现和负载均衡
Kubernetes 将容器集合分组,并通过域名系统 (DNS) 引用它们。此 DNS 也称为 Kubernetes 服务。Kubernetes 可以自动发现这些服务,并在给定服务的容器之间平衡请求负载。 -
机密和配置管理
Kubernetes 可以管理应用程序的机密和配置详细信息,而无需重新构建相应的镜像。借助机密,我们可以将机密信息共享给应用程序,而无需像在 GitHub 上那样将其暴露给堆栈配置。
在深入研究 Kubernetes 之前,我们需要了解一下云原生计算基金会。
云原生计算基金会 (CNCF) 是 Linux 基金会旗下的项目之一。CNCF 旨在加速容器、微服务和云原生应用的普及。CNCF 为每个项目提供资源,但同时,每个项目在其原有的治理结构和维护者的支持下继续独立运营。
我们将了解 Kubernetes 的架构、主节点和工作节点的不同组件、使用 etcd 进行集群状态管理以及网络设置要求。我们还将讨论 Kubernetes 使用的网络。
主节点
主节点负责管理 Kubernetes 集群,它是所有管理任务的入口。我们可以通过 CLI、GUI(仪表板)或 API 与主节点通信。
工作节点
工作节点是一台机器(虚拟机、物理服务器等),它使用 Pod 运行应用程序,并由主节点控制。Pod 在工作节点上进行调度,工作节点拥有运行和连接 Pod 所需的工具。Pod 是 Kubernetes 中的调度单位。
结论
我们将在接下来的章节中深入探讨这一点。Kubernetes 可能是最适合您的解决方案,您应该基本衡量一下您的目标。此外,我们将讨论主节点和工作节点。因此,之后我们将会遇到一些令人困惑的主题。
文章来源:https://dev.to/_mertsimsek/an-introduction-to-the-kubernetes-ib5