以简单的方法学习Kubernetes


如果您是一名软件开发人员,您可能几乎每天都会听说 Kubernetes。Kubernetes 已经成为业界领先的容器编排工具。
当我开始学习 Kubernetes 时,它很难,术语太多,我很快就几乎要放弃了。出于这个原因,我将尝试在本教程中以简洁易懂的方式缓慢而彻底地介绍 Kubernetes 的每个步骤。

我们将构建一个运行 API 和数据库的简单应用程序。本教程旨在帮助您熟悉 Kubernetes 并希望学习一些基础知识。本教程不会介绍如何将应用程序部署到生产环境中,这是一个本身需要整篇文章的主题。
在开始编码之前,让我们先了解一些信息。
您可以在我的GitHub 上找到本教程的完整代码

Kubernetes 是一种管理和控制容器化应用程序的工具。如果您不熟悉容器和 Docker,可以阅读学习 Docker
Kubernetes也称为 K8S,是一个开源系统,用于自动部署、扩展和管理容器化应用程序。
Kubernetes 旨在解决跨基础设施部署和控制多个容器的问题。Kubernetes 是由谷歌开发的开源软件。
您会发现 Kubernetes 的一些功能是

  • 服务发现——通过 DNS 公开您的容器,并可以找到正在运行的服务。
  • 负载平衡——如果您的一个容器流量过多,它可以将流量分配给另一个已部署的容器。
  • 自我修复——可以配置为在需要时重启/删除和启动新容器。
  • Secrets & Configurations——这使得存储和管理部署的秘密变得容易。
  • 监控——应用程序的内置监控

为了给我们提供所有这些功能,Kubernetes 有许多协同工作的组件,我们将简要概述 Kubernetes 组件,以便我们了解基本级别的内容。
一个正在运行的 K8s 集群是由一个Control Plane组成的。控制平面负责暴露 API 来控制集群和管理容器的生命周期。在控制平面内部,我们发现了几个具有不同职责的重要节点。
  • API ——kube-apiserver 用于连接集群并允许我们与集群通信。
  • etcd — Etcd是K8s用来维护集群数据的key-value存储方案
  • 调度程序——检查没有分配节点(工作机器)的新 Pod(运行容器),并分配它们。
  • 控制器管理器——负责管理控制器的组件。

然后我们有与控制平面通信的工作节点。控制平面与工作节点对话,以便它们知道该做什么。工作节点用于运行 Pod(一组容器)。
每个工作节点都有一个kubelet正在运行,它负责接受来自控制平面的关于它应该运行什么的指令。Kubelet 通常被称为节点代理。

因此,我们有一个正在运行的控制平面,多个 kubelet(工作节点)可以连接到它。这是对 Kubernetes 的整个基础架构如何工作的非常基本的解释,您应该再次熟悉所有内容,浏览文档以了解更多关于确切的内部工作原理。
一旦我们进入 Kubelet,了解它们可以运行的不同资源是很好的。

这里有一些在使用 K8s 时很好理解的词。

  • Pod——一组在集群中运行的容器,将 Pod 视为在 K8s 中工作的最小单元。通常,每个 pod 使用一个容器,但也可以是多个容器。
  • 节点——集群中的工作机器
  • 控制器- 检查集群的特定状态并尝试对其进行调节的循环。
  • ReplicaSet——用于确保始终有一定数量的 Pod 在运行。
  • 部署——为 ReplicaSets 和 Pod 提供更新
  • 作业——由 Pod 执行的进程,将创建 Pod 并执行该进程,然后关闭。
  • 服务——允许 pod 通过在内部公开端口与集群中的其他 pod 通信。我试着让单词列表变小,我知道记住它们可能会让人不知所措,但请放心,我们会在将它们添加到我们的应用程序时逐个覆盖它们。

安装 Kubernetes、Minikube、Docker 和 Go
在我们开始使用 K8s 之前,我们需要下载并安装它,以及本教程中使用的其他一些工具。

按照 Kubernetes 自己提供的安装指南进行操作。如果您使用的是 Linux,这就是我们需要做的。

首先使用 curl 获取 Kubernetes 并安装下载的二进制文件。

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" 
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

您可以通过运行来确保安装工作

第二步是安装 Minikube。Minikube 是一个本地 Kubernetes 节点,可用于学习和测试 Kubernetes。基本上,它会在您的计算机上设置一个虚拟机,该虚拟机运行具有单个节点的集群。

要安装 Minikube,请按照说明进行操作。对我来说,运行 Linux,就像运行一样简单

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

如果您运行的是 Windows,请不要在 WSL 中安装 Minikube,并确保您已安装Hyper-V。避免使用 WSL 的原因是因为在编写本教程时,使其工作起来非常复杂。

您需要的第三个软件是 Docker,需要 docker 是因为我们将使用它来构建我们的容器。
您可以在他们的网站上找到有关如何安装 Docker 的说明。

第四个要求是Go,可以通过访问他们的网站来安装。我在本教程中将 Go 用于一个简单的服务,该服务并不复杂,对于新手开发人员来说应该也很容易理解。

让我们为 Kubernetes 冒险做好准备
详细点击标题