4种工具来帮助您推动Kubernetes

在本系列的第三篇文章中, Kubernetes的基础知识:学习如何首先驱动 ,我强调您应该学习驱动Kubernetes,而不是构建它。 我还解释了,在Kubernetes中为应用程序建模必须学习的基本元素最少。 我要强调这一点:您需要学习的原语集是可以学习以实现生产质量的应用程序部署(即高可用性[HA],多个容器,多个应用程序)的最简单的原语集。 换句话说,学习Kubernetes内置的一组原语比学习集群软件,集群文件系统,负载均衡器,疯狂的Apache配置,疯狂的Nginx配置,路由器,交换机,防火墙和存储后端要容易得多,这一切您将需要在传统IT环境(用于虚拟机或裸机)中为简单的HA应用程序建模。

在第四篇文章中,我将分享一些工具,这些工具将帮助您学习快速驱动Kubernetes。

1. Katacoda

Katacoda是最轻松地测试驱动Kubernetes集群的最简单方法。 一键五秒的时间,您将拥有一个基于Web的终端,直接进入正在运行的Kubernetes集群。 它对玩耍和学习很有帮助。 我什至将其用于演示和测试新想法。 Katacoda提供了一个完全短暂的环境,在您使用完该环境后便可以将其回收。

Katacoda提供了临时性的操场和更深的实验室环境。 例如,我在过去的三,四年里一直在运行的Linux Container Internals Lab是在Katacoda建立的。

Katacoda在其主站点上维护了大量Kubernetes和云教程 ,并与Red Hat合作以支持OpenShift专用的学习门户 。 两者都可以探索-它们都是出色的学习资源。

当您第一次学习驾驶自卸车时,最好总是先看别人如何驾驶。

2. Podman生成kube

podman generate kube命令是一个出色的小子命令,它可以帮助用户自然地从运行简单容器的简单容器引擎过渡到运行许多容器的集群用例(如我在上一篇文章中所述 )。 为此,Podman允许您启动一些容器,然后导出可用的Kube YAML,然后在Kubernetes中启动它们。 检查一下(pssst,您可以在此Katacoda实验室中运行它,该实验室已经具有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.1
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2019-06-07T08:08:12Z"
  labels:
    app: two-pizza
  name: two-pizza
spec:
  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: v1
kind: Service
metadata:
  creationTimestamp: "2019-06-07T08:08:12Z"
  labels:
    app: two-pizza
  name: two-pizza
spec:
  selector:
    app: two-pizza
  type: NodePort
status:
  loadBalancer: { }

现在,您有了一些可以正常工作的Kubernetes YAML,您可以将其用作捣乱和学习,调整等的起点。- s标志为您创建了一个服务。 布伦特·鲍德Brent Baude )甚至还在研究新功能,例如添加卷/持久卷声明 。 要进行更深入的研究,请在他的博客文章“ Podman现在可以简化向Kubernetes和CRI-O的过渡 ”中查看Brent的出色工作。

3. oc new-app

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


   
   
oc new-project -n example
oc 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   AGE
pod/cakephp-mysql-example-1-build   0/1       Completed   0          4m
pod/cakephp-mysql-example-1-gz65l   1/1       Running     0          1m
pod/mysql-1-nkhqn                   1/1       Running     0          4m

NAME                                            DESIRED   CURRENT   READY     AGE
replicationcontroller/cakephp-mysql-example-1   1         1         1         1m
replicationcontroller/mysql-1                   1         1         1         4m

NAME                            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
service/cakephp-mysql-example   ClusterIP   172.30.234.135   <none>        8080/TCP   4m
service/mysql                   ClusterIP   172.30.13.195    <none>        3306/TCP   4m

NAME                                                       REVISION   DESIRED   CURRENT   TRIGGERED BY
deploymentconfig.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      LATEST
buildconfig.build.openshift.io/cakephp-mysql-example   Source    Git       1

NAME                                               TYPE      FROM          STATUS     STARTED         DURATION
build.build.openshift.io/cakephp-mysql-example-1   Source    Git@47a951e   Complete   4 minutes ago   2m27s

NAME                                                   DOCKER REPO                                                      TAGS      UPDATED
imagestream.image.openshift.io/cakephp-mysql-example   docker-registry.default.svc:5000/example/cakephp-mysql-example   latest    About aminute ago

NAME                                             HOST/PORT                                                                         PATH   SERVICES                PORT      TERMINATION   WILDCARD
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代码

我最后保存了我的最爱之一。 我的大部分工作都使用vi ,但是我从未为Kubernetes找到一个好的语法突出显示和代码完成插件(如果有,请告诉我)。 相反,我发现微软的VS Code有一套杀手er的插件,可以完成Kubernetes资源的创建并提供样板。

VS Code plugins UI

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

Autocomplete in VS Code

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

VS Code autocomplete filling in boilerplate for an object

当您使用自动完成功能并选择“服务”资源时,它将为对象填充一些样板。 当您初次学习驱动Kubernetes时,这非常了不起。 您可以构建Pod,Services,Replication Controller,Deployment等。当您从头开始构建这些文件,甚至修改使用Podman generate kube创建的文件时,这是一个非常不错的功能。

结论

这四个工具(如果算上两个插件,则为六个)将帮助您学习驱动Kubernetes,而不是构建或装备它。 在本系列的最后一篇文章中,我将讨论为什么Kubernetes对于运行这么多不同的工作负载如此令人兴奋。

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

vscode 最新插件集合,更新到20180815,共4part,需要全部下载后解压,包含一下插件: batisteo.vscode-django-0.17.0 bibhasdn.django-html-1.2.0 bibhasdn.django-snippets-1.1.0 bitlang.cobol-3.4.2 christian-kohler.npm-intellisense-1.3.0 christian-kohler.path-intellisense-1.4.2 chrmarti.regex-0.2.0 coenraads.bracket-pair-colorizer-1.0.59 daltonjorge.scala-0.0.5 danields761.dracula-theme-from-intellij-pythoned-0.1.4 davidanson.vscode-markdownlint-0.19.0 dbaeumer.vscode-eslint-1.4.12 donjayamanne.jupyter-1.1.4 donjayamanne.python-extension-pack-1.4.0 dotjoshjohnson.xml-2.3.1 eg2.vscode-npm-script-0.3.5 eriklynd.json-tools-1.0.2 fisheva.eva-theme-0.4.0 formulahendry.code-runner-0.9.4 formulahendry.terminal-0.0.10 fwcd.kotlin-0.1.8 gerane.theme-druid-0.0.2 grapecity.gc-excelviewer-2.1.25 humao.rest-client-0.19.1 humy2833.ftp-simple-0.6.7 ikuyadeu.r-0.6.0 Ikuyadeu.r-lsp-0.0.7 itryapitsin.scala-0.1.7 itryapitsin.scalasnippets-0.1.7 jasonnutter.search-node-modules-1.3.0 jithurjacob.nbpreviewer-1.0.0 josephtbradley.hive-sql-0.0.2 julialang.language-julia-0.10.3 kalitaalexey.vscode-rust-0.4.2 kondratiev.sshextension-0.3.0 luqimin.forgive-green-0.2.1 magicstack.magicpython-1.0.12 mohsen1.prettify-json-0.0.3 mooman219.rust-assist-0.2.2 ms-ceintl.vscode-language-pack-zh-hans-1.25.3 ms-ceintl.vscode-language-pack-zh-hans-1.26.3 ms-kubernetes-tools.vscode-kubernetes-tools-0.1.12 ms-python.anaconda-extension-pack-1.0.0 ms-python.python-2018.7.1 ms-toolsai.vscode-ai-0.1.9 ms-vscode.cpptools-0.17.7 ms-vscode.go-0.6.86 ms-vscode.go-0.6.87 ms-vsliveshare.vsliveshare-0.3.535 mtxr.sqltools-0.15.0 peterjausovec.vscode-docker-0.1.0 pkief.material-icon-theme-3.5.2 qub.qub-xml-vscode-1.2.8 redhat.java-0.29.0 redhat.vscode-yaml-0.0.14 rogalmic.bash-debug-0.2.1 rust-lang.rust-0.4.9 scala-lang.scala-0.1.2 sensourceinc.vscode-sql-beautify-0.0.4 truman.autocomplate-shell-0.1.1 vahidk.tensorflow-snippets-0.3.3 visualstudioexptteam.vscodeintellicode-1.0.3 vscjava.vscode-java-debug-0.11.0 vscjava.vscode-java-pack-0.3.0 vscjava.vscode-java-test-0.8.0 vscjava.vscode-maven-0.10.0 waderyan.nodejs-extension-pack-0.1.9 wholroyd.jinja-0.0.8 xabikos.javascriptsnippets-1.7.0 yzhang.markdown-all-in-one-1.6.0 ZakCodes.rust-snippets-0.0.1 zhuangtongfa.material-theme-2.15.4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值