工控智汇

工控智汇

帮助你驾驭 Kubernetes 的 4 个工具

admin 169 189


在本系列的第三篇文章中,Kubernetes基础:首先学习如何使用,我强调你应该学会使用Kubernetes,而不是建造它。我还解释说,在Kubernetes中,你必须学习最小的一组原语来建模应用程序。我想强调这一点:你需要学习的这组原语是最简单的原语集,你可以通过它们学习如何实现生产级的应用程序部署(即高可用性[HA]、多容器、多应用程序)。换句话说,学习Kubernetes内置的原语集比学习集群软件、集群文件系统、负载平衡器、让人发疯的Apache和Nginx的配置、路由器、交换机、防火墙和存储后端更容易——这些是你在传统的IT环境(虚拟机或裸机)中建模简单的HA应用程序所需要的东西。

在这第四篇文章中,我将分享一些有助于你学习快速驾驭Kubernetes的工具。

1、Katacoda

无疑,Katacoda是试驾Kubernetes集群的最简单方法。只需单击一下,五秒钟后就可以将基于Web的终端直接连接到正在运行的Kubernetes集群中。这对于使用和学习来说非常棒。我甚至将它用于演示和测试新想法。Katacoda提供了一个完整的临时环境,在你使用完毕后可以回收利用。


OpenShiftPlayground


KubernetesPlayground

Katacoda提供了一个临时的环境和更深入的实验室环境。例如,我最近三四年主讲的LinuxContainerInternalsLab是在Katacoda中构建的。

Katacoda在其主站点上维护了若干Kubernetes和云教程并与RedHat合作以支持了一个OpenShift的专用学习门户。了解一下,它们是极好的学习资源。

当你第一次学习驾驶翻斗车时,最好先观察一下其他人的驾驶方式。

2、Podmangeneratekube

podmangeneratekube命令是一个很棒的子命令,可以帮助用户自然地从运行简单容器的简单容器引擎转换到运行许多容器的集群用例(正如我在上篇文章中所描述的那样)。Podman通过让你启动一个新的容器,然后导出这个可工作的KubeYAML,并在Kubernetes中启动它来实现这一点。看看这个(你可以在Katacodalab中运行它,它已经有了Podman和OpenShift)。

首先,请注意运行容器的语法与Docker非常相似:

/fatherlinux/two-pizza

不过这个是其它容器引擎所没有的:

podmangeneratekubetwo-pizza

输出:

:v1kind:Podmetadata:creationTimestamp:"2019-06-07T08:08:12Z"labels:app:two-pizzaname:two-pizzaspec:containers:-command:-/bin/sh--c-bash-c'whiletrue;do/usr/bin/nc-l-p3306/srv/;done'env:-name:PATHvalue:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin-name:TERMvalue:xterm-name:HOSTNAME-name:containervalue:ociimage:/fatherlinux/two-pizza:latestname:two-pizzaresources:{}securityContext:allowPrivilegeEscalation:truecapabilities:{}privileged:falsereadOnlyRootFilesystem:falsetty:trueworkingDir:/status:{}---apiVersion:v1kind:Servicemetadata:creationTimestamp:"2019-06-07T08:08:12Z"labels:app:two-pizzaname:two-pizzaspec:selector:app:two-pizzatype:NodePortstatus:loadBalancer:{}

你现在有了一些可以的工作KubernetesYAML,你可以用它作为练习的起点来学习、调整等等。-s标志可以为你创造一项服务。BrentBaude甚至致力于添加卷/持久卷断言等新功能。如果想进一步深入,请在Brent的博客文章《Podman现在可以轻松过渡到Kubernetes和CRI-O》中了解他的工作。

3、ocnew-app

ocnew-app命令非常强大。它是特定于OpenShift的,所以它在默认的Kubernetes中不可用,但是当你开始学习Kubernetes时它非常有用。让我们从快速命令开始创建一个相当复杂的应用程序:

ocnew-project-nexampleocnew-app-f

使用ocnew-app,你可以从OpenShift开发人员那里偷取模板,并在开发原语来描述你自己的应用程序时拥有一个已知良好的起点。运行上述命令后,你的Kubernetes命名空间(在OpenShift中)将由若干新的已定义资源填充。

ocgetall

输出:

NAMEREADYSTATUSRESTARTSAGEpod/cakephp-mysql-example-1-build0/1Completed04mpod/cakephp-mysql-example-1-gz65l1/1Running01mpod/mysql-1-nkhqn1/1Running04mNAMEDESIREDCURRENTREADYAGEreplicationcontroller/cakephp-mysql-example-11111mreplicationcontroller/mysql-11114mNAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGEservice//TCP4mservice///cakephp-mysql-example111config,image(cakephp-mysql-example:latest)/mysql111config,image(mysql:5.7)/cakeph/cakephp-mysql-example-1SourceGit@47a951/:5000/example/cakephp-mysql-examplelatestAboutaminuteagoNAMEHOST//

这样做的好处是你可以删除Pod,观察复制控制器如何重新创建它们,缩放Pod等等。你可以使用模板并将其更改为其他应用程序(这是我第一次启动时所做的)。

4、VisualStudioCode

我把我最喜欢的放在最后。我的大部分工作都使用vi,但我从来没有为Kubernetes找到一个好的语法高亮器和代码补完插件(如果有的话,请告诉我)。相反,我发现微软的VSCode有一套杀手级的插件,可以完成Kubernetes资源的创建并提供样板。


VSCodepluginsUI

首先,安装上图中显示的Kubernetes和YAML插件。


AutocompleteinVSCode

然后,你可以从头开始创建新的YAML文件,并自动补完Kubernetes资源。上面的示例显示了一个服务。


VSCodeautocompletefillinginboilerplatefora

当你使用自动补完并选择服务资源时,它会填充该对象的一些模板。当你第一次学习使用Kubernetes时,这非常棒。你可以构建Pod、服务、复制控制器、部署等。当你从头开始构建这些文件甚至修改你使用podmangeneratekube创建的文件时,这是一个非常好的功能。

总结

这四个工具(如果算上两个插件,则为六个)将帮助你学习驾驭Kubernetes,而不是构造或装备它。在本系列的最后一篇文章中,我将讨论为什么Kubernetes如此适合运行这么多不同的工作负载。

via:

作者:ScottMcCarty选题:lujun9972译者:wxy校对:wxy

本文由LCTT原创编译,Linux中国荣誉推出