[译] 47 advanced tutorials for mastering Kubernetes

如果开始学习 Kubernetes,并不难找到高质量的初学者教程。但是,当你掌握了基础,在哪儿可以找到更高级的学习资源?

官方的Kubernetes文档为中级高级用户提供了一些资源,但是许多有用的专业级技巧都散布在网络上。下面收集的资源旨在帮助工程师们在他们的Kubernetes教育上更进一步 – 摆脱菜鸟,剑指大神。

涵盖的主题包括安全性,监视和日志记录,源代码,持续集成(CI)持续交付(CD)以及工程师在生产中可靠运行Kubernetes必须理解的其他领域。

Kubenetes:直视胆量

我对Kubernetes的一些了解

朱莉娅·埃文斯Julia Evans)是软件和运营工程领域的超级巨星。在试用并阅读源代码之后,本文包括她对该技术的第一印象。介绍了许多初学者的概念同时,本文还从易于理解的角度介绍了Kubernetes。

在本文中,还有很多其他介绍中找不到的建议,例如她建议,如果您想省掉一些麻烦,可以学习网络。 Evans的博客提供了许多有用的Kubernetes资源,涵盖了调度, 证书,网络以及为什么它很“酷” -带有一些有用的插图和专家级的建议,这些都是您从初学者无法获得的教程。

Kubernetes豆荚和etcd

埃文斯著名的解释者素描之一。

Kubernetes源代码浏览:从kubectl到API Server

掌握任何技术的关键步骤是阅读源代码并查看其工作方式。要阅读Kubernetes的源代码,您需要学习Go编程语言的一些语法

然后,阅读 Brad Topol Kubernetes源代码之旅,其中包括运行kubectl命令的代码 以及学习Kubernetes源代码的工具和技术。

Kubernetes中的电平触发和调节

当您第一次学习新技术时,入门课程往往很实用–您不会了解有关工具如何工作的所有细节。但是,如果您要掌握一项技术,则需要了解技术哲学,它影响了该工具的设计者。为什么Kubernetes在自我修复方面如此出色?

詹姆斯·鲍斯(James Bowes)发现,电子和系统编程 中的边缘和电平触发概念落后于Kubernetes的弹性属性。他的文章探讨了这些概念以及它们如何使您对Kubernetes的工作原理有更深入的了解。

“对于Kubernetes而言,将问题视为一个边沿触发系统已经导致了一种干净,简单且可以满足用户期望的架构,尽管分布式计算存在固有的问题。” —詹姆斯·鲍斯James Bowes)

高级内容流

Kubernetes博客

Kubernetes开发人员应首先关注的,是Kubernetes官方博客。该博客不仅会为您提供有关Kubernetes的最新版本和各种支持工具的最新信息,而且还包括社区新闻,安全警告,案例研究和教程。

最近最好的一些教程包括:

Medium上的Google云平台

当您通过“ Kubernetes”标签在Medium上的GCP博客进行排序时,会得到源源不断的技术内容。其中大部分专注于Google的Kubernetes Engine服务,但也有很多与产品无关的Kubernetes教程和最佳实践文章

Medium上的Heptio

一个越来越多的Kubernetes初创公司 都出现在过去的几年里,一个最知名的是Heptio,它是Kubernetes产品和服务的公司,经常在大型DevOps和容器会议上邀请员工担任演讲者(包括CTO,扬声器 乔·贝达,是Kubernetes的共同创建者)。该公司还有一个由多才多艺的作家组成的团队,他们在Medium上发表博客。除了撰写有关一些Heptio版本的博客之外,这些专家还主要撰写有关Kubernetes前沿主题的信息,包括如何保护Kubernetes仪表板 以及如何获得Kubernetes认证管理员(CKE)考试的资格。

云原生计算基金会(CNFC)YouTube频道

录制的会议演讲可能是了解高级主题并保持领先地位的另一种好方法。如果您想向领先的Kubernetes专家学习,KubeCon / CloudNativeCon的播放列表是最好的选择。

高级技巧和窍门

您需要知道的高级Kubernetes对象

Kubernetes初学者通常会学习一些基本对象,例如Pods,ConfigMap和Deployments,但是 Mustafa Akin希望向您介绍一些鲜为人知的对象,这些对象可以改善您的工作量和日常操作。他的列表包括ResourceQuota,PriorityClass,LimitRange,PodSecurityPolicy等。它还涵盖了许多准入控制器,它们可以在Kubernetes对象访问数据库之前对其进行检查。

操作简介:将操作知识纳入软件

自2016年底发布以来,Kubernetes Operators一直在追赶。这些自定义控制器应用程序规范实际上使您可以编写一个应用程序以完全管理另一个,这对于难以管理的有状态应用程序(例如数据库)特别有用。当您成为更高级的Kubernetes用户时,您将需要学习如何构建自己的Operators。

如何在AWS kops Kubernetes集群中从单主机迁移到多主机

通过多个主节点为Kubernetes集群带来高可用性是一项棘手的操作,通常初学者不会尝试。但是对于高级Kubernetes用户而言,这是一种有用的弹性策略。Blender Fox的本教程展示了如何使用运行在Amazon Web Services(AWS)之上的kops(增强的Kubernetes安装)来完成此任务。

群集@%#’d –如何恢复损坏的Kubernetes群集

Kubernetes部署中有三种类型的节点:主节点,etcd节点和工作节点。Codefresh博客上的这篇短篇文章,为您提供了有关如何确定这些节点类型是否已关闭,以及高可用性和非高可用性恢复步骤是什么的简要说明。

Kubernetes集群联盟(艰难的道路)

Kubernetes集群联合是一种几乎神奇的技术,它可以使用云提供商或裸机的任意组合,来管理多个Kubernetes集群,并在它们之间自由移动工作负载。自学集群联盟的最佳方法是Kubernetes传奇人物Kelsey Hightower编写的本教程。之所以称其为“艰难之路”,是因为它专注于缓慢而有条理地做事,以便您保留所有信息并在构建系统的过程中对Kubernetes联盟有深入的了解。

“该指南不适用于正在寻求建立Kubernetes集群联盟的全自动命令的人。…本教程针对学习进行了优化,这意味,在帮助人们理解引导Kubernetes集群联盟所需的每个任务,还有很长的路要走 。” —凯尔西高塔

尽管它使用Google Cloud而不是与产品无关的环境,但您找不到许多更好的教程。在使用Hightower的教程理解了联盟之后,您可以继续使用Kubefed设置集群,将“艰辛”过程中的几个步骤抽象化了。最后,您可以通过学习如何 在跨多个云提供商Kubernetes群集上部署Node.js应用程序(Google,Azure和AWS)来巩固自己的知识。

使用Kubernetes实现高级调度技术

这篇文章通过有用的图表和示例,深入介绍了Kubernetes调度程序的内部工作原理。它说明了Kubernetes如何通过执行调度程序的三部分过程(节点过滤,节点优先级计算和调度),来选择Pod的主机。

设置Kubernetes本地永久卷

Ian ChakeresDhiraj Hegde描述了Salesforce存储云运营工程师如何准备其裸机,配置本地持久卷以及如何向状态服务所有者公开多种存储类型。本文是一个很好的示例和案例研究,其中Kubernetes用于这些存储云系统的自动化部署,管理和扩展。

逐步教程设置多区域Kubernetes应用

当您在一个地理区域的公共云上运行Kubernetes应用程序时,您会怎么做?如果这开始成为问题,则可能需要将您的应用程序放在多个区域中。Francois-Guillaume Ribreau向您展示了他如何在Google Cloud Engine中的Kubernetes应用程序中做到这一点。其他提供商也可以采取类似的步骤。

图像图表客户分布

Ribreau的SaaS客户的全球分布图。

使用Kubernetes API构建东西

当您对Kubernetes达到一定程度的熟练程度并且您的团队对工具的需求已经超出了现成的功能时,就该开始为Kubernetes编写自己的功能了。 Vladimir Vivien 提供了使用三种不同语言(Python,Java和Go)进行此操作的完美介绍。Vivien从简单的工具到自定义API类型,介绍了用于扩展Kubernetes的各种选项。

扩展Kubernetes:为核心和自定义资源创建控制器

托马斯·斯金格(Thomas Stringer)的精彩教程也涉及到扩展Kubernetes,重点是如何创建控制器和自定义资源。斯金格的文章不会帮助您决定是否需要使用控制器和自定义资源,但是他在Kubernetes文档中为您提供了一个不错的页面

Udemy:高级Kubernetes用法

如果低成本的在线课程是您最喜欢的学习方式之一,那么您应该在Udemy查看此入门课程。它涵盖了Kubernetes的一系列重要主题,包括集中式日志记录,身份验证,授权,程序包管理,作业资源,调度,使用Spinnaker和联合在Kubernetes上进行部署。

十大Kubernetes技巧和窍门

来自经验丰富的 kubernetes 用户,而在文档和初学者教程中找不到的提示,总是很有帮助的。蒂莫西·约瑟菲克Timothy Josefik)的一些技巧包括使用 Pod 破坏预算,准备和活跃度调查以及对所有内容进行标记。

Azure,Google和AWS上的Kubernetes

Kubernetes在Azure上的冒险

伊万·菲奥拉万蒂(Ivan Fioravanti) 分享了一个分为三部分的系列文章,内容涵盖了使用Linux节点和Windows节点的Azure基础架构上的Kubernetes。该系列还分享了缩放 Pod 的技巧。

Kubernetes混合Windows-Linux群集

Kubernetes仪表板显示在Azure上运行的混合群集。

教程:在Amazon Web Services上运行Kubernetes

Kubernetes专家在 Heptio 上撰写了有关在AWS上运行Kubernetes的广泛教程/电子书。本教程假定您已经熟悉AWS CLI和Cloud Formation。它详细介绍了如何从Cloud Formation模板创建堆栈,如何查看堆栈和资源信息以及如何管理集群。

Kubernetes的艰难之路

自从他在Google工作以来,Kelsey Hightower是学习如何在Google的云基础架构上使用Kubernetes的绝佳资源。尽管本教程将Google Cloud Platform(GCP)用于基本基础架构,但是他探索的Kubernetes核心概念也适用于其他平台。对于初学者来说这是一个很棒的教程,但是如果您想了解在GCP上使用Kubernetes,它也很有用。

CI / CD和Kubernetes

用于开发基础架构的Kubernetes

Kubernetes不仅用于运行生产工作负载。Maxim Leonovich说,它还可以作为开发基础结构的组成部分。在他的公司中,他们有数百个基于Selenium的工作流程。这些测试按顺序运行,需要10个小时才能完成。他的任务是使这些集成测试更快。

本文介绍了他如何在开发/测试环境中, 使用Docker和Kubernetes来启动和拆除,运行这些Selenium工作流仅需要在两到三分钟内即可。

Kubernetes的动态环境

随需应变的动态环境是伊恩·克罗斯比(Ian Crosby) 提出的不变基础架构的思想,但应用了更高的层次。他使用Kubernetes中的命名空间演示了该策略,从而可以随意启动和关闭生产,暂存,测试和开发环境。

使用Kubernetes设置CI / CD管道

Craig Martin的这个由多部分组成的系列文章,向您展示了如何使用简单的CI / CD管道,在Kubernetes中设置完全容器化的应用程序堆栈,以管理部署。您部署的应用程序是一个填字游戏示例应用程序,旨在展示关键的Kubernetes和CI / CD概念。

Kubernetes CI和CD架构

Martin的CI / CD管道(使用minikube)的体系结构图。

凯尔西高塔(Kelsey Hightower)的“管道”指南

Hightower提供了另一个出色的教程,向您展示了如何使用Cloud Container Builder(一种Google云商业产品),GitHub和多个Kubernetes集群,来构建端到端部署管道。在本教程结束时,您将获得针对每种环境的细粒度访问控制,以及针对这些环境的简化自动构建步骤。

使用Kubernetes设置Jenkins CI / CD管道

这是一篇很棒的文章,了解如何将Kubernetes与几乎无处不在的CI引擎Jenkins结合使用。 Alen Komljen 展示了使用Helm和Kubernetes插件在Kubernetes集群上设置Jenkins很容易,但是创建管道很难。有很多Jenkinsfiles可以使用,但是如果您在不了解细节的情况下尝试自定义它们,它们可能会损坏。使用Jenkinsfile示例,Komljen向您展示了如何在Kubernetes上使用它们。

如何在Kubernetes集群之上设置可扩展的Jenkins

单个Jenkins实例可以非常快速地增长,这导致了冗余的资源消耗和缓慢的交付管道。测试AlphaSense的软件开发人员Yuri Bushnev说,这就是为什么您可能希望将Jenkins放在Kubernetes集群上的原因。在本教程中,Bushnev使用minikube向您展示了Jenkins在Kubernetes集群上自动扩展的强大功能。

##Kubernetes部署

使用Kubernetes部署Rock Solid应用程序

这是分两部分的系列文章中的第二篇。如果您仅以实验性功能使用过Kubernetes,而实际上并没有迁移到Kubernetes,则第一篇文章也可能会很有用。在 以零停机时间迁移到Kubernetes:原因和方式中Jelmer Snoeck展示了如何解释他的团队决定迁移到Kubernetes的原因-分享了他们提出的问题。他描述了他们做出的取舍,并向您展示了他的团队如何配置Kubernetes集群以实现其目标。Snoeck在使用Kubernetes部署Rock Solid应用程序中,概述了用于可靠部署的强大Kubernetes工具,包括运行状况检查,pod(反)亲和力,网络策略,安全策略,重新计划和PodDisruptionBudgets。

高可用性配置中的Kubernetes组件

高可用性配置中的Kubernetes组件

Kubernetes部署策略

Etienne Tremel撰写的有用的备忘单 ,本文简要描述了五种部署策略:重新创建,渐变,蓝/绿,金丝雀和a / b测试。然后,他列出了每种方法的优缺点,并提供了一个代码段以及使用GitHub上的Kubernetes的示例的链接。

Docker和Kubernetes的最佳架构-神话还是现实?

虽然本文不是教程,但 Dmitriy Paunin 向您展示了如何在Kubernetes和基于容器的环境中考虑开发工作流程和软件体系结构。本文涵盖了策略级别的自动化服务供应,日志记录,跟踪和其他主题。

Kubernetes工具

适用于高效SRE和运营团队的10个开源Kubernetes工具

GitHub上有大量用于Kubernetes的开源工具。很难意识到所有可能对您有所帮助的事物。这就是为什么 Abishek Tiwari 为使用Kubernetes的站点可靠性工程师(SRE)和运营工程师汇总了一些最受欢迎的工具的原因。该列表包括Kubectx,Cabin,Kube-ops,Kube-shell等的简要说明和动画效果。

kube-ops

Kube-ops仪表板的视图。

5个用于大规模监控Kubernetes的工具

克雷格·马丁(Craig Martin)的另一篇文章分享了他的前五种Kubernetes监视工具,这些监视工具不仅是公司使用的工具。根据本文中包含的“新堆栈”调查,它们也是一些最受欢迎的工具。这些工具包括Heapster,Prometheus,CAdvisor,InfluxDB和Grafana。

###50个有用的Kubernetes工具

Stefan Thorpe汇编了更广泛的Kubernetes工具列表,并对其进行了方便地分类以易于阅读。其中一些类别包括用于监视,安全性,测试,部署,命令行,服务发现,虚拟化和无服务器的工具。

##Kubernetes监控

Kubernetes时代的监控

监控对于跟踪Kubernetes集群可以支持的许多节点至关重要。 Jean-Mathieu SaponaroDatadog博客上撰写了出色的Kubernetes监控系列。如您所料,他们有一个使用其商业产品的演示,但这只是该系列的最后一篇文章。该系列探讨了Kubernetes如何更改监视方式,监视的关键指标和警报。并且它提供了使用Heapster的具体用例。

Logz.io在其博客上有一个类似的教程,其中讨论了诸如Heapster,InfluxDB,Prometheus,ELK堆栈和Grafana之类的工具。Kubernetes博客还提供了有用的监视指南,该指南比其他两个指南更为简洁。

用Prometheus在15分钟内监控Kubernetes

想要更快地开始您的Kubernetes监控之旅?本文承诺将在15分钟之内使您开始使用流行的开源监视框架Prometheus。 吉安卡洛·卢比奥(Giancarlo Rubio) 利用本文前面提到的功能强大的Kubernetes运营商之一,使Prometheus可以在短短几分钟内监控Kubernetes集群。

应用程序日志中Kubernetes与fluentd

Rosemary Wang 使用流行的开源数据收集工具深入研究了Kubernetes日志记录。她逐步执行了收集,隔离和清理日志的步骤。您可以在GitHub上找到她的完整示例配置

nginx应用程序的流利日志输出

nginx应用程序的流利日志输出

Kubernetes网络

运行Kubernetes网络

如果您正在研究网络这一主题,那么对于Julia Evans的博客,您将获得一些出色的,直接的想法和建议来管理这一棘手的基本主题。她在这篇文章中指出,关于如何建立Kubernetes网络的资源很多,但是关于如何操作该网络的资源却很少。Evans分享了她从运行Kubernetes网络中学到的技巧。

了解Kubernetes网络

Mark Betz在三篇涉及Pod,服务和入口的文章中介绍了Kubernetes网络。每篇文章都是详细而实用的,并带有一些图表和代码示例。

“我之所以写这些文章,是因为我认为一旦您了解了每个部分的工作原理,一切都将以一种非常优雅的方式变得有意义。” —马克·贝茨

Kubernetes网络策略食谱

通过GitHub上的Ahmet Alp Balkan很棒的教程,了解如何丢弃/限制对Kubernetes上运行的应用程序的访问量。本文包含了一些实施中的Kubernetes网络策略的示例。它还包括示例YAML文件,可在您的设置中利用。如果您不熟悉Kubernetes的网络政策,那么Balkan建议阅读有关安全Kubernetes集群网络的博客文章 。

Kubernetes安全

Kubernetes安全性-最佳实践指南

Kubernetes是一个功能强大的平台,如果由于配置不当而被黑客入侵,也可能是一个大问题。只是问特斯拉。这就是为什么 Simon Pirschel的 Kubernetes安全最佳实践GitHub存储库是必不可少的页面。在指南中,有针对云提供商,安装人员和一般用户的提示。每个最佳做法都带有一个有用的表情符号标签,该标签指示威胁级别是严重,高,中还是低。

在Kubernetes上安全地构建容器映像

Jessie Frazelle 是一名Linux内核和容器专家,他对大多数Kubernetes用户发布有关容器安全性思想的文章。本文展示了她在Kubernetes中构建容器映像的方法,而无需在docker套接字中挂载或进行任何损害其群集安全性的操作。您可以在GitHub上找到无特权的容器映像构建器。

在另一篇文章中,她探讨了“硬多租户”的概念,这意味着在同一集群中有多个租户,这些租户无法访问其他租户的任何内容。如果您想提高自己的Kubernetes知识,一定要跟着她。

Kubernetes ConfigMap和秘密

工程团队还有许多其他方式可以将其秘密(诸如API密钥,SSH密钥,密码,OAuth 2等)暴露给黑客。要了解有关现代机密管理的更多信息,您应该查看有关该主题的另一篇列表文章 并阅读此文章,该文章采用具有硬编码配置的应用程序,并将其修改为从环境变量中读取。然后作者 Sandeep Dinesh设置Kubernetes来为您管理配置。

在第二 部分中,他使用配置文件代替环境变量。请注意, 在涉及秘密管理时,一些专家建议使用Kubernetes进行繁重的工作。为此,您应该研究秘密管理工具

Kubernetes安全黑客指南

Rory McCune在确保Kubernetes的安全方面有四个出色的战略课程,其中包括一些有关监视端口以及不让任何容器受到损害的提示。在阅读了McCune的文章之后,请确保检查出 8种增强Kubernetes安全性的方法5条Kubernetes必须做的安全性步骤,以获取更多提示。

获得认证

Heptio工程师如何通过Kubernetes认证管理员考试

如果您真的很想证明自己是一名Kubernetes专业运营商的勇气,则应考虑参加Kubernetes认证管理员(CKE)考试。我之前共享了此链接,但是在这里值得重复。建议包括对文档非常熟悉,并进行大量练习。之后,他们提供了一些有用的技巧,帮助您参加考试和准备实用部分。

Kubernetes认证管理

Walid Shaari 收集了一系列在线资源,这些资源将帮助您为CKE考试做准备。它涵盖了所有考试主题,从安装到联网,安全性,ALM,存储和监视。他甚至在每个部分上都给您一个百分比,以指示该主题中有多少考试。

Kubernetes食谱

如果您正在寻找一本书先进Kubernetes主题以供参考,请查阅Kubernetes食谱迈克尔Hausenblas 塞巴斯蒂安Goasguen。它包含80多种成熟的食谱,涵盖了每个主要的Kubernetes子主题。

制作自己的教程

这些教程旨在使您入门一些高级主题,但是您可以尝试自己的独特用例。

我们鼓励建立尽可能接近生产环境的练习环境,但也提供了一些工具,包括 Kubernetes游乐场Let’s with Kubernetes,它们提供了用于设置和试验的沙箱实例。 Kubernetes集群

如果您知道任何真正帮助过您的中间或高级Kubernetes教程,但不在本列表中,请在评论中分享它们。

保持学习