使用Kubernetes入门:初学者简介
Kubernetes是最流行的开源软件,用于自动化容器开发流程。
根据Cloud Native Computing Foundation(CNCF)的,96%的组织正在使用K8s或考虑使用它们。如果您密切关注,全球有580万开发人员使用Kubernetes,占全球后端开发人员的31%。
它因能够通过改进的可伸缩性,可用性和短时间部署而备受青睐。虽然许多开发人员使用(一种依赖于CLI与容器逐个交互的综合工具)开始他们的容器轨迹,但K8s为您提供了高级抽象,供您通过您可以协作的图纸定义应用程序及其基础架构。
如果您是Kubernetes的新手,本文专门为您提供帮助,帮助您入门并分享见解。您将了解到K8s如何帮助您作为开发人员加速数字产品的开发。
Kubernetes是什么,为什么需要它?
Kubernetes是一种用于自动化部署,扩展和管理容器化应用程序的开源协调引擎(框架),包括处理可预测性和可用性。
简单地说,假设您有一个容器化的应用程序。为了为应用程序用户提供服务,您需要运行多个容器。当您需要管理这些容器时,问题就出现了。这些容器不一定在同一台机器上,这使问题变得更加复杂。那么,问题的解决方案是什么?
Kubernetes通过提供一种高效的方式来无缝处理所有这些过程来拯救您。虽然您可能会将K8s与Docker等容器引擎进行比较,但它是一个容器编排器。作为刚开始的开发人员,您不需要担心K8s如何进行编排。您不太可能为应用程序设置K8s集群;稍后会有更多相关信息。
但是,您将与基础架构团队设置的集群进行交互。熟悉您将与之交互的对象至关重要。但在此之前,您需要对其架构有一个高级理解,以了解其底层发生了什么。
Kubernetes的特点
Kubernetes具有多个功能,具有广泛的能力范围,用于运行容器和其他相关基础设施。以下是列表:
- 自动化发布、扩展和回滚 – Kubernetes自动化创建指定数量的副本,将它们分布到最适合的硬件上,并在节点宕机时重新调度容器。您可以根据需求或CPU使用情况即时扩展副本。
- 服务发现、负载平衡和网络入口 – Kubernetes提供了独特的网络解决方案,包括内部服务发现和公开容器。
- 有状态和无状态的应用 – 在早期,Kubernetes主要专注于无状态容器。随着技术在许多方面的发展,它现在支持表示有状态应用程序的内置对象。因此,任何应用程序都可以在Kubernetes上运行。
- 存储管理 – 无论您使用本地文件系统、网络共享还是云端,Kubernetes都为运行在容器上的应用程序提供(抽象的)持久化存储。而该抽象使您能够定义存储需求,而不考虑基础架构。虽然这超出了本文的范围,但它通过持久卷(PV)、持久卷申请(PVC)、存储类和卷插件等原则实现。
- 声明式状态 – Kubernetes使用名为对象清单的YAML文件来指定集群的期望状态。清单规定了集群的外观,包括但不限于所需的应用程序实例和网络规则等其他配置。在应用清单时,Kubernetes会自动处理所有状态转换 – 您无需编写脚本来完成此操作。
- 多个工作环境 – 您不仅限于在云端或开发者工作站上使用Kubernetes。几乎每个发行版都可用于匹配您的特定用例。请留意主要的云技术提供商,如AWS、Google Cloud和Microsoft Azure。您会发现它们都提供托管的Kubernetes服务,而像Minikube和MicroK8s这样的单节点发行版可用于本地使用。
- 超高可扩展性 – Kubernetes是许多功能的集合。如果这还不够,您可以通过扩展来加速其功能。您可以构建自定义对象类型、运算符和控制器,以简化工作负载。
Kubernetes架构
在其核心中,Kubernetes由一个主节点和两个工作节点组成。主节点在集群中发号施令,而工作节点根据主节点的决定运行应用程序。
以下是进一步的细分。
主节点
主节点决定集群的状态,并决定每个节点的操作。设置主节点需要几个过程。
- API服务器
所有集群通信都基于此进行。这是允许所有集群组件交换信息的网关。它公开了Kubernetes API。这里有两个主要角色。第一个是允许用户与集群进行交互的入口点。例如,在使用Kubectl时发送请求。第二个是进行身份验证和验证请求的门控。在这种情况下,只有特定的用户才能执行请求。 - 调度器
调度器将应用程序或Kubernetes工作负载对象分配给工作节点。在这里,调度器根据资源需求将Pod放置在节点上。而当谈到Pod时,它只是Kubernetes中的一个小部署单元。 - 控制器管理器
该单元维护集群,如节点故障,以保持正确数量的Pod。它检测集群状态变化,如Pod死亡,并尝试将Pod恢复到其原始状态。例如,如果Pod意外死亡,控制器管理器请求调度器批准哪个节点启动新的Pod作为替代,并且kubelet启动新的Pod。 - etcd
它也被称为集群的大脑。该单元是集群配置的键值存储。这意味着所有的集群更改都在这里进行。您可以通过保存键值分布式存储来备份集群。但请注意,这里只存储集群状态数据,而不是应用程序数据。该单元专门用于保存集群状态信息,并将其提供给前面的过程,使它们对集群有意识。
从属节点
每个从属节点上都安装有三个节点进程,允许K8s与其进行交互,并在每个节点上分别启动Pod。所需的进程包括:
- Kubelet
这是Kubernetes的主要服务,用于运行容器执行层。如果不使用此单元,Kubernetes只是一个带有键值存储的REST API。默认情况下,K8s执行容器应用程序。容器始终与彼此和底层主机系统隔离。这被证明是将单个应用程序管理与彼此和物理或虚拟基础架构解耦的分析方法。虽然API接入控制可以拒绝Pod或添加附加约束,但kubelet是在特定节点上运行哪些Pod的最终批准者,并非调度器或守护进程集。总之,kubelet与节点和容器进行交互。它还接受配置文件,并使用容器运行时启动Pod。
- 容器运行时
该部分运行容器。例如,您可以使用Docker、rkt或containerd等容器运行时。 - Kube-proxy
此单元为节点Pod组提供抽象层,如负载均衡的情况。所有节点都应用Kube-proxy,以为访问动态Pod的客户端提供虚拟链接。这种结构是在保持低性能开销的同时解决负载均衡的解决方案。
容器化的工作原理
容器化是将软件应用程序的所有必需部分虚拟化为一个单元的过程。容器的底层是一组库、二进制文件和所有必需的应用程序配置。但它们不包括内核资源或虚拟化硬件。
最终,执行'on top'的容器运行时定义资源。由于容器只包含基本组件和应用程序依赖项,因此它们是轻量级的,因此比其他虚拟机更快。
还阅读:Containers vs. Virtual Machines: Explaining the Differences
如何安装和设置Kubernetes
我花了很多时间进行理论研究,级联部分将是实战性的,需要一些容器操作经验。本教程特别介绍在Windows操作系统上的安装。
使用Windows时,有多种安装方式可选,您可以选择命令行或图形用户界面。但是,您应该确保满足以下所需规格。
您的硬件需要一个至少具有2GB内存和700MB工作节点的主节点。对于软件要求,需要Hype-v、Docker for desktop、唯一的<link_9>和每个节点的唯一产品UUID。以下是逐步的方法。
安装和设置Hyper-V
Hyper-V是Windows的默认虚拟化软件。本质上,它是一个强化版的VirtualBox。它允许您在Microsoft GUI或命令行上管理虚拟机。要启用Hyper-V,请按照以下步骤操作。
- 打开控制面板。
- 从左侧面板中点击“程序”。
- 在程序和功能页面中,点击“打开或关闭Windows功能”。
- 选择Windows的Hyper-V和Hypervisor功能。
- 然后,选择确定,在此步骤中,您的计算机将重新启动以激活新的设置。
偶尔,您的计算机可能会多次重启以确保一切配置正确。您可以在Power Shell中输入以下命令来验证安装是否成功。
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V
确认您的屏幕上显示的是“enabled”状态。
安装Docker
正如您已经了解的,K8s是一个建立在容器之上的容器编排工具;在这种情况下,Docker是一个不错的选择。K8s与Docker通信,并在企业级别上管理一切。通过为Windows安装Docker来开始。如果您想知道为什么需要使用Docker Desktop,那是因为它更适合简化开发、部署和运行dockerized(容器化)应用程序。
这也是使用Hyper-V和网络构建Windows上Docker应用程序的最快方法。安装成功后,只要Docker正在运行,它就可以在任何终端上访问。有关安装的详细指南,您可以查看官方<https://yaoweibin.cn/kubernetes-for-beginners/link_11>。如果在安装后遇到任何问题,例如隐藏图标,可以通过重新启动计算机来解决问题。
安装Kubernetes
Docker GUI允许您配置设置、安装和启用Kubernetes。要安装K8s,请按照以下步骤操作。
- 右键单击Docker托盘图标,选择属性。
- 在点击“属性”后,从下拉菜单中选择“设置”。
- 在左侧面板上选择“Kubernetes”,然后点击“应用”。
然后,Docker将安装一些附加的软件包和依赖项。这个过程大约需要五到十分钟,具体取决于您的网络速度。您可以使用Docker应用程序来确认一切是否正常工作。
由于Kubernetes应用程序可以使用CLI部署,您可能需要安装K8s仪表板,因为它默认情况下未安装。请按照以下步骤安装仪表板。
- 下载<https://yaoweibin.cn/kubernetes-for-beginners/link_12>。
- 使用以下代码部署应用程序:
. Kubectl apply -f .recommended.yaml
。 - 通过以下命令确认一切是否设置正确:
kubectl.exe get -f .recommended.yaml.txt
。
要访问仪表板,请在Power Shell上运行以下命令(不是CMD)
- 运行以下代码
((kubectl -n kube-system describe secret default | select-string "token:") - split "+")[1]
- 复制生成的令牌并运行
kubectl proxy
。
- 复制生成的令牌并运行
- 在浏览器中打开this link。
- 点击`Token`并粘贴您的令牌。
- 登录。
如果您到达了这里,恭喜您的屏幕应该显示有K8s仪表板。现在您可以使用CLI来管理应用程序而不需要进行繁重的工作。
如何创建和管理Kubernetes集群
如果您已经跟进到这里,应该已经成功在主机上安装了Kubernetes。接下来,请按照以下步骤创建和执行对集群的简单管理:
- 配置网络 – 在这里,您需要设置集群节点之间的网络连接,允许它们相互通信。
- 设置集群身份验证 – 创建集群访问的身份验证和授权机制。
- 设置主节点组件;包括API服务器,调度程序和控制器管理器。
- 加入工作节点 – 使用集群安装过程提供的配置文件将工作节点连接到集群。
- 部署附加组件 – 您可以安装扩展来增强集群的功能。
- 管理工作负载 – 现在是时候部署您的应用程序了。
尽管这只是集群创建过程的概述,但它涉及许多步骤和多个命令。这是关于如何在部署之前的官方文档指南,它应该是您的指导手册。create clusters
如何使用Kubernetes部署您的第一个应用程序
在使用K8s时,最常用的命令是kubectl action resource
,它允许您执行特定的操作,例如创建或删除指定的资源。
如果您遇到困难,可以在特定的子命令后使用--help
来获取附加信息。
例如,Kubernetes get nodes --help
。使用kubectl create deployment Kubernetes-bootcamp -image=gcr.io/google-samples/Kubernetes-bootcamp:v1
命令部署您的第一个K8s应用程序。
最后的话
本指南已经成为进入Kubernetes技术的入门点。您已经学习了Kubernetes的优点,功能和架构。幸运的是,您可能不得不参考一些要点(外部资源)来开始,它已经解释了事情在内部是如何工作的。
虽然作为初学者来说,理解整个技术栈可能似乎是令人不知所措的,但本文已经成为您开始使用K8s的顺畅指南。您需要一点实践才能对使用这项技术感到自信,因此我将您引荐给官方Kubernetes文档作为您的并行参考。您拥有的练习越多,您将越快成为K8s专家。