kubernetes-learning-path - 从零开始学习 Kubernetes 的路线图(初级到高级)

Created at: 2022-11-16 13:02:58
Language:

打星星!

如果你打算使用此 repo 作为参考,请打星。谢谢!

Kubernetes 学习路线图

🚀CKA,CKAD,CKS或KCNA考试的候选人今天可以使用代码DCUBEOFFER节省60美元 https://kube.promo/devops。这是Linux基金会的限时优惠。

先决条件

学习 Kubernetes 架构

下图显示了高级 kubernetes 体系结构以及外部服务如何连接到群集。

kubernetes-architecture

请参阅以下文档以了解 Kubernetes 架构。

$1000+ 免费云积分用于启动集群

在云中启动大型集群的成本可能很高。因此,利用可用的云积分来练习部署集群,就像在处理真实项目一样。所有云平台都提供托管的 Kubernetes 服务。

了解 Kubernetes 集群设置和管理

作为 DevOps 工程师,全面了解每个组件和集群配置对于在生产环境中工作至关重要。尽管部署 Kubernetes 集群的方法多种多样,但建议从头开始学习如何设置多节点集群。这使你能够获得有关高可用性、扩展和网络等概念的知识,并模拟实际项目。

此外,掌握多节点集群的配置有助于面试和建立对自己能力的信心。以下是建立 Kubernetes 集群的推荐方法。

以下是一些重要的群集管理任务

了解 KubeConfig 文件

作为一名 DevOps 工程师,熟悉 Kubeconfig 文件非常重要。它对于为 CI/CD 系统设置群集身份验证、为开发人员提供群集访问权限等任务至关重要。

Kubeconfig 文件是一个 YAML 文件,用于存储用于连接到 Kubernetes 集群的信息和凭据。命令行工具(如 kubectl 和其他客户端库)使用它来向群集进行身份验证并与其资源进行交互。

Kubeconfig 文件可用于存储多个集群和用户的信息,允许用户轻松地在不同的集群和上下文之间切换。它是管理对 Kubernetes 集群的访问和交互的重要工具。

请参考以下文档详细了解 Kubeconfig 文件。

了解 Kubernetes 对象和资源

在 Kubernetes 中,对象是集群中的持久实体,表示系统的所需状态。它由 Kubernetes API 服务器创建和管理,并存储在 etcd 键值存储中。Kubernetes 对象的示例包括 pod、服务和部署。

下面是一个 Pod 对象的示例

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

资源是由 Kubernetes API 公开的 Kubernetes 对象的表示形式。这是客户端与群集中的对象交互和操作对象的一种方式。

资源是指用于访问对象的特定 API URL。资源通常通过 Kubernetes API 使用 HTTP 动词(如 GET、POST 和 DELETE)进行访问。例如,该资源可用于检索 v1 Pod 对象列表。此外,可以从资源中获取单个 v1 Pod 对象。

/api/v1/pods
/api/v1/namespaces/namespace-name/pods/pod-name

了解 Pod 和相关资源

<--进行中-->

了解 Pod 依赖对象

<--进行中-->

在 Kubernetes 上部署端到端应用程序

<--进行中-->

了解如何保护 Kubernetes 集群

<--进行中-->

了解 Kubernetes 运算符模式

<--进行中-->

了解重要的 Kubernetes 配置

<--进行中-->

学习 Kubernetes 最佳实践

<--进行中-->

学习 Kubernetes 日志记录和监控

<--进行中-->

学习 Kubernetes 生产最佳实践/学习

现实世界的 Kubernetes 案例研究

如果你没有现实世界的 Kubernetes 经验,最好阅读其他使用 kubernetes 的公司的案例研究。

学习 Kubernetes 模板工具

Helm 和 Kustomize 都是用于管理 Kubernetes 清单的工具。它们在许多方面相似,但有一些关键差异。

Helm 是 Kubernetes 的包管理器,允许用户在 Kubernetes 集群上轻松安装、管理和升级应用程序。它使用一种称为“图表”的概念,这些图表是预先配置的 Kubernetes 资源集,可以轻松部署、升级和回滚。

另一方面,Kustomize是一个允许用户自定义和配置现有Kubernetes清单的工具。它使用称为“补丁”的概念,可以应用于现有清单,以针对不同的环境和用例自定义它们。与 Helm 不同,Kustomize 不包括对版本控制和回滚的内置支持,并且没有“包”或“存储库”的概念。

Kubernetes Deployment Tools(基于 GitOps)

GitOps 是一种持续部署方法,它使用 Git 作为声明性基础结构和应用程序代码的单一事实来源。

一些流行的基于 GitOps 的工具,用于将应用程序部署到 Kubernetes 集群: