4种工具帮助你驱动Kubernetes

笔者一直强调你应该学习驱动Kubernetes,而不是构建它。在Kubernetes中,有一组最小的原语需要学习以对应用程序建模。你需要学习的原语集是最简单的原语集,你可以用它来实现生产质量的应用程序部署(即高可用性、多个容器、多个应用程序)。学习构建在kubernetes中的一组原语比学习集群软件、集群文件系统、负载均衡器、疯狂的Apache配置、疯狂的nginx配置、路由器、交换机、防火墙和存储后端更容易,而所有这些都是在传统IT环境中建模一个简单的HA应用程序(用于虚拟机或裸机)所必需的。

 

在这篇文章中,笔者将分享一些工具,这些工具将帮助你学习如何快速驱动Kubernetes。

 

Katacoda

 

Katacoda是测试Kubernetes集群最简单的方法。只需点击一次,5秒钟的时间,就可以将一个基于网络的终端直接插入运行中的Kubernetes集群。这是很了不起的。笔者甚至把它用于演示和测试新想法。Katacoda提供了一个完全暂态的环境,当你使用完后,它会被回收利用。

 

 

4种工具帮助你驱动Kubernetes_第1张图片

 

4种工具帮助你驱动Kubernetes_第2张图片

 

Katacoda提供暂态的“游乐场”和更深层次的实验室环境。例如,Linux Container Internal Lab是在katacoda中构建的,笔者已经运行了三到四年。

            

Katacoda在其主站点上维护了一系列kubernetes和cloud教程,并与红帽合作以支持Openshift专用的学习门户。

 

podman generate 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 flag为你创建了一个服务。Brent Baude甚至正在研究添加卷/持久卷声明等新功能。

 

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          8080/TCP   4m
service/mysql                   ClusterIP   172.30.13.195            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                     None

 

 

这样做的好处是,你可以删除pod、观察复制控制器重新创建pod、向上扩展和向下缩小pod。你可以使用该模板并为其他应用程序更改它。

 

Visual Studio Code

 

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

 

4种工具帮助你驱动Kubernetes_第3张图片

 

首先,在上图所示的页面中安装Kubernetes和Yaml Plugins。

 

4种工具帮助你驱动Kubernetes_第4张图片

 

然后,你可以从头创建一个新的YAML文件,并自动完成kubernetes资源。上面的示例显示了一个Service。

 

4种工具帮助你驱动Kubernetes_第5张图片

 

当使用autocomplete并选择Service资源时,它会为对象填充一些样板文件。当你第一次学习驱动Kubernetes时,这是非常美妙的。你可以构建pod、service、Replication Controllers、Deployment等。当你从头构建这些文件,甚至修改用podman generate kube创建的文件时,这是一个非常好的功能。             

 

 

原文链接:

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

你可能感兴趣的:(4种工具帮助你驱动Kubernetes)