|
|
51CTO旗下网站
|
|
移动端

使用Kubernetes不得不知道的四大神器!

想要精通Kubernetes,你最好学习一些基本类型的Kubernetes构建的应用程序,学习最简单的原语集,你可以通过它们学习如何实现生产级的应用程序部署(即高可用性 [HA]、多容器、多应用程序)。

作者:开源最前线来源:开源最前线|2019-07-17 10:55

开源最前线编译

编译自:https://opensource.com/article/19/6/tools-drive-kubernetes

想要精通Kubernetes,你***学习一些基本类型的Kubernetes构建的应用程序,学习最简单的原语集,你可以通过它们学习如何实现生产级的应用程序部署(即高可用性 [HA]、多容器、多应用程序)。

本文,猿妹将和大家分享4个有助于你快速灵活使用Kubernetes的工具

1、Katacoda

Katacoda无疑是测试Kubernetes集群最简单的方法。只需单击鼠标,就可以将基于web的终端直接插入到正在运行的Kubernetes集群。Katacoda不仅可以用于学习,娱乐也是可以的,我甚至用它来演示和测试新想法,它提供了一个完整的临时环境,用完还能回收

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

如今,你已经有了一些可运行的作Kubernetes YAML,你可以通过它来学习练习等,-s 标志可以为你创造一项服务。布伦特•博德(Brent Baude)依然在不断添加新功能。想要更深入地了解,请查看他的博客文章

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

这样做的好处是,你可以删除pod,观察复制控制器重新创建它们等。你还可以使用该模板将其用于更改其他应用程序。

4、Visual Studio Code

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

首先,安装Kubernetes和YAML插件,如上图所示。

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

当你使用autocomplete并选择服务资源时,它将填充对象的一些模板。当你***次学习使用Kubernetes时,这种体验是非常好的。你可以构建pod、服务、复制控制器、部署等等。当你从头构建这些文件,甚至修改Podman generate kube创建的文件时,这是一个非常好的功能特性。(Github地址:https://github.com/microsoft/vscode)

【编辑推荐】

  1. 未来的Kubernetes将效仿Facebook的做法
  2. 快速安装与配置kubernetes集群搭建
  3. 18张儿童插画让你秒懂Kubernetes
  4. 微服务架构在Kubernetes上的实现
  5. 现代化传统应用软件的那些Docker工具
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

16招轻松掌握PPT技巧

16招轻松掌握PPT技巧

GET职场加薪技能
共16章 | 晒书包

292人订阅学习

20个局域网建设改造案例

20个局域网建设改造案例

网络搭建技巧
共20章 | 捷哥CCIE

649人订阅学习

WOT2019全球人工智能技术峰会

WOT2019全球人工智能技术峰会

通用技术、应用领域、企业赋能三大章节,13大技术专场,60+国内外一线人工智能精英大咖站台,分享人工智能的平台工具、算法模型、语音视觉等技术主题,助力人工智能落地。
共50章 | WOT峰会

0人订阅学习

读 书 +更多

网络渗透测试——保护网络安全的技术、工具和过程

网络和计算机安全问题已经成为政府、企业必须面对的现实问题。应对安全威胁的途径之一就是采用渗透测试的方法模拟黑客的攻击,找出网络和计...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客