开发人员入门 Kubernetes

2025-06-10

开发人员入门 Kubernetes

你是否厌倦了听 DevOps 里每个人都在谈论“Kubernetes”,而自己却还在纠结怎么发音?除非你今天才开始编程,否则我敢肯定你肯定听过这个词,但作为一名开发者,你很可能还没有机会了解它——也许是因为它看起来令人生畏,也许是因为你不确定它对你有什么用处。

让我带你从一名对 Kubernetes 一无所知的开发者,变成一名能够理解基础设施团队所有繁琐细节的开发者。在这个过程中,你也会开始欣赏它的美丽之处以及它在提升开发者生产力方面的实用性。本系列文章内容丰富,让我们立即开始吧!

“它在我的机器上运行良好!”的消亡

在讨论 Kubernetes 之前,了解容器非常重要。容器是可执行的软件包,包含在任何地方运行应用程序所需的所有代码和依赖项。我所说的任何地方,字面意思是任何地方——我的笔记本电脑、你的笔记本电脑,甚至是“云端”。

容器听起来是不是有点像虚拟机?其实不然,事实上它们甚至更胜一筹!为什么?因为与虚拟机不同,容器不包含操作系统镜像。这意味着它们更加轻量级!要在本地创建和运行容器,您可以使用像 Docker 这样的容器引擎。

容器之所以越来越受欢迎,是因为它们真正秉承了“一次编写,随处运行”的理念。由于容器部署快捷方便,它们显著提高了开发人员的生产力。有趣的是,Okteto 还利用这些容器,让您在本地开发时实时预览所做的更改。

但随着越来越多的公司开始使用容器,一个新的问题出现了。如何管理在分布式系统上运行的数千个容器?而 Kubernetes 恰好解决了这个问题!

Kubernetes 来救援!

Kubernetes,通常缩写为 K8s,是一个容器编排平台。让我用通俗易懂的语言来解释一下。

假设你有一个已容器化的应用。你运行了一堆容器来为用户提供服务。但是你该如何管理这些不同的容器呢?由于这些容器不一定在同一台机器上运行,情况变得更加复杂!

这时,K8s 就派上用场了。它让部署、管理和扩展容器化工作负载变得轻而易举!我要明确指出的是,K8s 并非像 Docker 那样的容器引擎。相反,它是一个容器编排器

作为开发者,您无需担心 K8s 如何完成所有这些编排。您可能也无需为您的应用程序搭建 K8s 集群。但您主要需要做的是与基础设施团队为您搭建的集群进行交互。因此,熟悉您将要交互的 K8s 对象至关重要。这正是我们在本系列文章中将重点讨论的内容。

在我们这样做之前,让我们先对 Kubernetes 的架构有一个高层次的了解,这样您就不会完全不知道其背后发生了什么。

Kubernetes 底层原理

在 Kubernetes 世界中,一台机器被称为一个节点。Kubernetes 的“集群”其实就是一组运行容器化应用程序的节点。这些节点可能是您家中的裸机服务器,也可能是您在云服务提供商上运行的实例。这些节点也分为两种类型:工作节点 (worker) 和主节点 (master)。

不同类型的节点

工作节点是应用程序容器实际运行的地方。Kubernetes 实际上使用一个名为 Pod 的对象来运行这些容器,更多内容将在下一篇文章中介绍。Kubernetes 集群中工作节点上运行的三个基本功能是:

  1. 容器运行时:这应该不足为奇,因为容器运行时实际上负责运行容器。Kubernetes 支持多种容器运行时,包括 Docker 和 containerd。

  2. kubelet:这是一个代理,负责与主节点上运行的 Kubernetes 控制平面进行通信。它负责执行从控制平面收到的任何指令。它还确保容器在 Pod 中正常运行。

  3. kube-proxy:这是在每个节点上运行的网络代理。无需赘述,您可以将其视为负责集群内部和外部的网络通信。我们将在后续文章中探讨所有这些 Pod 之间的通信方式。

Kubernetes 集群的基本组件

主节点是运行 Kubernetes 控制平面所有组件的节点。您也可以设置多个主节点以实现高可用性。以下是一些您应该熟悉的重要控制平面组件:

  1. kube-apiserver:它暴露了 Kubernetes API,我们可以使用它与 K8s 集群通信。它可以被认为是 Kubernetes 控制平面的前端。

  2. etcd:这是一个分布式键值存储系统,用于存储所有集群相关数据。出于安全考虑,它只能通过 API 服务器访问。这也有助于确保 etcd 中存储的数据一致性。

  3. kube-scheduler:负责在可用的工作节点上调度 Pod。调度时,它会考虑 Pod 的资源需求以及我们指定的其他约束。

  4. kube-controller-manager:K8s 中的控制器负责观察对象并确保该对象的当前状态与我们指定的期望状态匹配。K8s 中针对不同的对象提供了各种控制器。所有这些控制器都组合成一个二进制文件,即 kube-controller-manager。

  5. cloud-controller-manager:此组件用于将集群连接到云提供商。此二进制文件包含所有云提供商特定的控制器。因此,当云提供商发生类似节点终止的情况时,此组件将负责处理。

结论

这涵盖了 Kubernetes 架构的所有基础知识。真正酷的是,虽然掌握这些知识固然很好,但作为一名开发人员,你可能根本不需要担心这些,尤其是当你的团队使用像 Okteto 这样的开发环境时。

使用 Okteto,您可以在自己喜欢的 IDE 中舒适地进行开发,同时无需提交、构建、推送或部署即可实时查看对应用所做的更改!由于 Okteto 部署在真实的 Kubernetes 集群上,因此您可以看到已部署的更改预览,与用户在生产环境中看到的完全一样。

在下一篇文章,我们将深入探讨常见的 Kubernetes 对象。我们将探索我之前简要提到的 Pod,并了解如何使用 Deployment(另一个重要的 Kubernetes 对象)来管理它们。所以,在等待本系列下一篇文章的同时,不妨尝试一下 Okteto,亲眼见证它的神奇之处吧?🙂

“面向开发人员的 Kubernetes”博客系列现已结束,您可以在此处找到本系列的所有内容

鏂囩珷鏉ユ簮锛�https://dev.to/okteto/getting-started-with-kubernetes-as-a-developer-2jea
PREV
35+ 个免费公共 API,助您提高生产力
NEXT
JavaScript:“this”关键字[上下文]速查表