学习如何驾驭 Kubernetes 比如何建造它更重要,这些工具可以帮助你更快上路。-- Scott Mccarty
译者|Xinyu Wang来源|Linux中国

在本系列的第三篇文章中,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 kube

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

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

  1. podman run -dtn two-pizza quay.io/fatherlinux/two-pizza

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

  1. podman generate kube two-pizza

输出:

  1. # Generation of Kubernetes YAML is still under development!
  2. #
  3. # Save the output of this file and use kubectl create -f to import
  4. # it into Kubernetes.
  5. #
  6. # Created with podman-1.3.1
  7. apiVersion: v1
  8. kind: Pod
  9. metadata:
  10. creationTimestamp: "2019-06-07T08:08:12Z"
  11. labels:
  12. app: two-pizza
  13. name: two-pizza
  14. spec:
  15. containers:
  16. - command:
  17. - /bin/sh
  18. - -c
  19. - bash -c 'while true; do /usr/bin/nc -l -p 3306 < /srv/hello.txt; done'
  20. env:
  21. - name: PATH
  22. value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  23. - name: TERM
  24. value: xterm
  25. - name: HOSTNAME
  26. - name: container
  27. value: oci
  28. image: quay.io/fatherlinux/two-pizza:latest
  29. name: two-pizza
  30. resources: {}
  31. securityContext:
  32. allowPrivilegeEscalation: true
  33. capabilities: {}
  34. privileged: false
  35. readOnlyRootFilesystem: false
  36. tty: true
  37. workingDir: /
  38. status: {}
  39. ---
  40. apiVersion: v1
  41. kind: Service
  42. metadata:
  43. creationTimestamp: "2019-06-07T08:08:12Z"
  44. labels:
  45. app: two-pizza
  46. name: two-pizza
  47. spec:
  48. selector:
  49. app: two-pizza
  50. type: NodePort
  51. status:
  52. loadBalancer: {}

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

3、oc new-app

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

  1. oc new-project -n example
  2. oc new-app -f https://raw.githubusercontent.com/openshift/origin/master/examples/quickstarts/cakephp-mysql.json

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

  1. oc get all

输出:

  1. NAME READY STATUS RESTARTS AGE
  2. pod/cakephp-mysql-example-1-build 0/1 Completed 0 4m
  3. pod/cakephp-mysql-example-1-gz65l 1/1 Running 0 1m
  4. pod/mysql-1-nkhqn 1/1 Running 0 4m
  5. NAME DESIRED CURRENT READY AGE
  6. replicationcontroller/cakephp-mysql-example-1 1 1 1 1m
  7. replicationcontroller/mysql-1 1 1 1 4m
  8. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  9. service/cakephp-mysql-example ClusterIP 172.30.234.135 <none> 8080/TCP 4m
  10. service/mysql ClusterIP 172.30.13.195 <none> 3306/TCP 4m
  11. NAME REVISION DESIRED CURRENT TRIGGERED BY
  12. deploymentconfig.apps.openshift.io/cakephp-mysql-example 1 1 1 config,image(cakephp-mysql-example:latest)
  13. deploymentconfig.apps.openshift.io/mysql 1 1 1 config,image(mysql:5.7)
  14. NAME TYPE FROM LATEST
  15. buildconfig.build.openshift.io/cakephp-mysql-example Source Git 1
  16. NAME TYPE FROM STATUS STARTED DURATION
  17. build.build.openshift.io/cakephp-mysql-example-1 Source Git@47a951e Complete 4 minutes ago 2m27s
  18. NAME DOCKER REPO TAGS UPDATED
  19. imagestream.image.openshift.io/cakephp-mysql-example docker-registry.default.svc:5000/example/cakephp-mysql-example latest About aminute ago
  20. NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
  21. route.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 an object

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

总结

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

福利

扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!

推荐阅读:

  • 如何高效地准备技术面试?

  • 漫画:有趣的“帽子问题”

  • 我为什么放弃了 Chrome?

  • 5天破10亿的哪吒,为啥这么火,Python来分析

  • 通俗易懂:图解10大CNN网络架构

  • 互联网公司上演反腐风暴;GitHub CEO 对断供表示无能为力;程序员面试锦集| 开发者周刊

  • 在其他国家被揭穿骗子又盯上非洲? 这几个骗子公司可把非洲人民坑苦了……

真香,朕在看了!

帮助你驾驭 Kubernetes 的 4 个工具 | Linux 中国相关推荐

  1. linux终端使用python3,3 个 Python 命令行工具 | Linux 中国

    原标题:3 个 Python 命令行工具 | Linux 中国 用 Click.Docopt 和 Fire 库写你自己的命令行应用. -- Jeff Triplett, Lacey Williams ...

  2. linux ip brd不一致_3 个方便的命令行网速度测试工具 | Linux 中国

    用这三个开源工具检查你的互联网和局域网速度.-- Ben Nuttall 能够验证网络连接速度使您可以控制计算机.使您可以在命令行中检查互联网和网络速度的三个开源工具是 Speedtest.Fast ...

  3. 分段显示 linux_ArchAudit:一款在 Arch Linux 上检查易受攻击的软件包的工具 | Linux 中国...

    Arch-audit 是一个类似于 Arch Linux 的 pkg-audit 工具.它使用了令人称赞的 Arch 安全小组收集的数据.-- Prakash Subramanian 我们必须经常更新 ...

  4. 比较文本差异的工具_Linux 开发的五大必备工具 | Linux 中国

    Linux 已经成为工作.娱乐和个人生活等多个领域的支柱,人们已经越来越离不开它.在 Linux 的帮助下,技术的变革速度超出了人们的想象,Linux 开发的速度也以指数规模增长.因此,越来越多的开发 ...

  5. linux 下qt 终端隐藏在后台_20 个 Linux 终端下的生产力工具 | Linux 中国

    来试下这些开源工具.你的效率一定会提升. 来源:https://linux.cn/article-12274-1.html 作者:Alan Smithee 译者:Xiaobin.Liu 诚然,很多人使 ...

  6. 4、kubernetes 集群管理工具 kubectl

    文章目录 kubectl概述 K8s kubectl 命令自动补全 kubectl的常用子命令(command) kubernetes资源对象类型(type) kubectl 常用命令总结 kubec ...

  7. Kubernetes — Helm 软件包管理工具

    目录 文章目录 目录 Helm Helm 所解决的问题 Helm 的三大概念 Helm 的软件架构 安装 Helm Client 安装 Tiller server 配置 Repository 安装 H ...

  8. 排名前15位的Kubernetes监控和安全工具

    Kubernetes推动了竞争力的提升.如今,作为一项成熟的技术,全球各地的企业都在迅速采用基于微服务的,容器驱动的方法来交付软件.Kubernetes是行业标准.行业领导者正在帮助它如雨后春笋般发展 ...

  9. kubernetes怎么读_每个 Kubernetes 应聘者应该知道的 5 个面试题 | Linux 中国

    如果你是要面试 Kubernetes 相关职位的应聘者,这里给出了要提问的问题以及这些问题的重要性.-- Jessica Repka 面试对面试官及候选人来说都很不容易.最近,我发现面试 Kubern ...

最新文章

  1. TeaseR++:快速鲁棒的C++点云配准库介绍+英文版视频教程
  2. CVPR2020夜间行人检测挑战赛两冠一亚:DeepBlueAI获胜方案解读
  3. 纽约时报:华为大举挺进美国市场
  4. Centos DHCP服务搭建及测试
  5. 阿里云容器网络文件系统 CNFS 1.0 发布,体验云原生时代的容器共享存储
  6. dz自动开起html,discuz论坛开启markdown 允许html代码嵌入js
  7. 360浏览器登录_浏览器发展历史介绍及当今主流浏览器的详细对比
  8. python和pycharm怎么安装_Python3和PyCharm安装与环境配置【图文教程】
  9. 更新k8s镜像版本的三种方式
  10. opencv 图像旋转_图像数据集增强方式总结和实现【数字图像处理系列四】
  11. (day 52 - 递归 and 短路逻辑运算符的用法 ) 剑指 Offer 64. 求1+2+…+n
  12. Tomcat无法启动:Server Tomcat v8.5 Server at localhost failed to start
  13. 智能告警——企业IT系统神经中枢
  14. 暴风影音使用技巧十则
  15. 计算机网络数据通信基础题,数据通信基础练习题(含答案)
  16. MySQL数据备份与IDE工具介绍
  17. 这才是全规格样式车牌识别,秒杀各种“不服”
  18. Raspberry Pi 3 -- Respeaker 4-mic的基本使用
  19. Unity中实现高级相机操作——Cinemachine插件
  20. 前端开发调试之代理配置

热门文章

  1. 识别波峰波谷算法_马丁普林格:波峰-波谷演进法
  2. python爬虫的技能_关于 Python 爬虫可能涉及到的技能点
  3. power iso linux启动盘,Power ISO Maker/ISO燃烧到磁盘工具 V3.0版
  4. python字典遍历 没有顺序_Python中字典的顺序问题(为什么实践发现字典的遍历和方法popitem并不是随机的?)...
  5. 成都女孩弃港大全额奖学金,将去北大读马克思,“我对党史和马克思很有感情”!...
  6. 学术界女性有孩子后论文发表率下降约20%,男性则不会
  7. 改善代码可读性的5种方法
  8. 著名数学大师丘成桐:我们为什么要读数学科普书
  9. 岳阳鸿蒙数学培优阶梯训练,鸿蒙应用-呼吸训练app部分练习展示(开始)
  10. ngnix 作用(通俗易懂)【转载】