学习如何驾驭 Kubernetes 比如何建造它更主要,这些工具可以帮助你更快上路。
-- Scott Mccarty(作者)
在本系列的第三篇文章中, Kubernetes 根本:首先学习如何利用 ,我强调你该当学会利用 Kubernetes,而不是建造它。我还阐明说,在 Kubernetes 中,你必须学习最小的一组原语来建模运用程序。我想强调这一点:你须要学习的这组原语是最大略的原语集,你可以通过它们学习如何实现生产级的运用程序支配(即高可用性 [HA]、多容器、多运用程序)。换句话说,学习 Kubernetes 内置的原语集比学习集群软件、集群文件系统、负载平衡器、让人发疯的 Apache 和 Nginx 的配置、路由器、交流机、防火墙和存储后端更随意马虎 —— 这些是你在传统的 IT 环境(虚拟机或裸机)中建模大略的 HA 运用程序所须要的东西。

在这第四篇文章中,我将分享一些有助于你学习快速驾驭 Kubernetes 的工具。
1、Katacoda无疑, Katacoda 是试驾 Kubernetes 集群的最大略方法。只需单击一下,五秒钟后就可以将基于 Web 的终端直接连接到正在运行的 Kubernetes 集群中。这对付利用和学习来说非常棒。我乃至将它用于演示和测试新想法。Katacoda 供应了一个完全的临时环境,在你利用完毕后可以回收利用。
OpenShift Playground
Kubernetes Playground
Katacoda 供应了一个临时的环境和更深入的实验室环境。例如,我最近三四年主讲的 Linux Container Internals Lab 是在 Katacoda 中构建的。
Katacoda 在其主站点上掩护了多少 Kubernetes 和云教程 并与 Red Hat 互助以支持了一个 OpenShift 的专用学习门户 。理解一下,它们是极好的学习资源。
当你第一次学习驾驶翻斗车时,最好先不雅观察一下其他人的驾驶办法。
2、Podman generate kubepodman generate kube 命令是一个很棒的子命令,可以帮助用户自然地从运行大略容器的大略容器引擎转换到运行许多容器的集群用例(正如我在 上篇文章 中所描述的那样)。 Podman 通过让你启动一个新的容器,然后导出这个可事情的 Kube YAML,并在 Kubernetes 中启动它来实现这一点。看看这个(你可以在 Katacoda lab 中运行它,它已经有了 Podman 和 OpenShift)。
首先,请把稳运行容器的语法与 Docker 非常相似:
podman run -dtn two-pizza quay.io/fatherlinux/two-pizza
不过这个是其它容器引擎所没有的:
podman generate kube two-pizza
输出:
# Generation of Kubernetes YAML is still under development!## Save the output of this file and use kubectl create -f to import# it into Kubernetes.## Created with podman-1.3.1apiVersion: v1kind: Podmetadata: creationTimestamp: \"大众2019-06-07T08:08:12Z\"大众 labels: app: two-pizza name: two-pizzaspec: containers: - command: - /bin/sh - -c - bash -c 'while true; do /usr/bin/nc -l -p 3306 < /srv/hello.txt; done' env: - name: PATH value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - name: TERM value: xterm - name: HOSTNAME - name: container value: oci image: quay.io/fatherlinux/two-pizza:latest name: two-pizza resources: {} securityContext: allowPrivilegeEscalation: true capabilities: {} privileged: false readOnlyRootFilesystem: false tty: true workingDir: /status: {}---apiVersion: v1kind: Servicemetadata: creationTimestamp: \"大众2019-06-07T08:08:12Z\"大众 labels: app: two-pizza name: two-pizzaspec: selector: app: two-pizza type: NodePortstatus: loadBalancer: {}
你现在有了一些可以的事情 Kubernetes YAML,你可以用它作为练习的出发点来学习、调度等等。-s 标志可以为你创造一项做事。 Brent Baude 乃至致力于 添加卷/持久卷断言 等新功能。如果想进一步深入,请在 Brent 的博客文章《 Podman 现在可以轻松过渡到 Kubernetes 和 CRI-O 》中理解他的事情。
3、oc new-appoc new-app 命令非常强大。它是特定于 OpenShift 的,以是它在默认的 Kubernetes 中不可用,但是当你开始学习 Kubernetes 时它非常有用。让我们从快速命令开始创建一个相称繁芜的运用程序:
oc new-project -n exampleoc new-app -f https://raw.githubusercontent.com/openshift/origin/master/examples/quickstarts/cakephp-mysql.json
利用 oc new-app,你可以从 OpenShift 开拓职员那里窃取模板,并在开拓原语来描述你自己的运用程序时拥有一个已知良好的出发点。运行上述命令后,你的 Kubernetes 命名空间(在 OpenShift 中)将由多少新的已定义资源添补。
oc get all
输出:
NAME READY STATUS RESTARTS AGEpod/cakephp-mysql-example-1-build 0/1 Completed 0 4mpod/cakephp-mysql-example-1-gz65l 1/1 Running 0 1mpod/mysql-1-nkhqn 1/1 Running 0 4mNAME DESIRED CURRENT READY AGEreplicationcontroller/cakephp-mysql-example-1 1 1 1 1mreplicationcontroller/mysql-1 1 1 1 4mNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/cakephp-mysql-example ClusterIP 172.30.234.135 <none> 8080/TCP 4mservice/mysql ClusterIP 172.30.13.195 <none> 3306/TCP 4mNAME REVISION DESIRED CURRENT TRIGGERED BYdeploymentconfig.apps.openshift.io/cakephp-mysql-example 1 1 1 config,image(cakephp-mysql-example:latest)deploymentconfig.apps.openshift.io/mysql 1 1 1 config,image(mysql:5.7)NAME TYPE FROM LATESTbuildconfig.build.openshift.io/cakephp-mysql-example Source Git 1NAME TYPE FROM STATUS STARTED DURATIONbuild.build.openshift.io/cakephp-mysql-example-1 Source Git@47a951e Complete 4 minutes ago 2m27sNAME DOCKER REPO TAGS UPDATEDimagestream.image.openshift.io/cakephp-mysql-example docker-registry.default.svc:5000/example/cakephp-mysql-example latest About aminute agoNAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARDroute.route.openshift.io/cakephp-mysql-example cakephp-mysql-example-example.2886795271-80-rhsummit1.environments.katacoda.com cakephp-mysql-example <all> None
这样做的好处是你可以删除 Pod,不雅观察复制掌握器如何重新创建它们,缩放 Pod 等等。你可以利用模板并将其变动为其他运用程序(这是我第一次启动时所做的)。
4、Visual Studio Code我把我最喜好的放在末了。我的大部分事情都利用 vi ,但我从来没有为 Kubernetes 找到一个好的语法高亮器和代码补完插件(如果有的话,请见告我)。相反,我创造微软的 VS Code 有一套杀手级的插件,可以完成 Kubernetes 资源的创建并供应样板。
VS Code plugins UI
首先,安装上图中显示的 Kubernetes 和 YAML 插件。
Autocomplete in VS Code
然后,你可以从头开始创建新的 YAML 文件,并自动补完 Kubernetes 资源。上面的示例显示了一个做事。
VS Code autocomplete filling in boilerplate for a
当你利用自动补完并选择做事资源时,它会添补该工具的一些模板。当你第一次学习利用 Kubernetes 时,这非常棒。你可以构建 Pod、做事、复制掌握器、支配等。当你从头开始构建这些文件乃至修正你利用 podman generate kube 创建的文件时,这是一个非常好的功能。
总结这四个工具(如果算上两个插件,则为六个)将帮助你学习驾驭 Kubernetes,而不是布局或装备它。在本系列的末了一篇文章中,我将谈论为什么 Kubernetes 如此适宜运行这么多不同的事情负载。
via: https://opensource.com/article/19/6/tools-drive-kubernetes
作者: Scott McCarty 选题: lujun9972 译者: wxy 校正: wxy
本文由 LCTT 原创编译, Linux中国 名誉推出
点击“理解更多”可访问文内链接