博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
帮助你驾驭 Kubernetes 的 4 个工具 | Linux 中国
阅读量:2493 次
发布时间:2019-05-11

本文共 4605 字,大约阅读时间需要 15 分钟。

640?wx_fmt=jpeg学习如何驾驭 Kubernetes 比如何建造它更重要,这些工具可以帮助你更快上路。-- Scott Mccarty

译者|Xinyu Wang
来源
|
Linux中国

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

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

1、Katacoda

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

640?wx_fmt=png

640?wx_fmt=png

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

Katacoda 在其主站点上维护了若干 并与 Red Hat 合作以支持了一个 。了解一下,它们是极好的学习资源。

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

2、Podman generate kube

podman generate kube 命令是一个很棒的子命令,可以帮助用户自然地从运行简单容器的简单容器引擎转换到运行许多容器的集群用例(正如我在中所描述的那样)。 通过让你启动一个新的容器,然后导出这个可工作的 Kube YAML,并在 Kubernetes 中启动它来实现这一点。看看这个(你可以在  中运行它,它已经有了 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 的博客文章《》中了解他的工作。

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

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

640?wx_fmt=png

VS Code plugins UI

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

640?wx_fmt=png

Autocomplete in VS Code

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

640?wx_fmt=png

VS Code autocomplete filling in boilerplate for an object

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

总结

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

640?wx_fmt=png

福利

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

640?wx_fmt=jpeg

推荐阅读:

真香,朕在看了!

转载地址:http://raxrb.baihongyu.com/

你可能感兴趣的文章
设计模式10_桥接
查看>>
设计模式11_装饰器
查看>>
设计模式12_外观模式
查看>>
设计模式13_享元模式
查看>>
设计模式14_组合结构
查看>>
设计模式15_模板
查看>>
海龟交易法则01_玩风险的交易者
查看>>
CTA策略02_boll
查看>>
vnpy通过jqdatasdk初始化实时数据及历史数据下载
查看>>
设计模式19_状态
查看>>
设计模式20_观察者
查看>>
vnpy学习10_常见坑02
查看>>
用时三个月,终于把所有的Python库全部整理了!拿去别客气!
查看>>
pd.stats.ols.MovingOLS以及替代
查看>>
vnpy学习11_增加测试评估指标
查看>>
资金流入流出计算方法
查看>>
海龟交易法则07_如何衡量风险
查看>>
海龟交易法则08_风险与资金管理
查看>>
海龟交易法则09_海龟式积木
查看>>
海龟交易法则10_通用积木
查看>>