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

开源最前线(ID:OpenSourceTop) 编译

编译自: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惊人地相似:


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?????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)依然在不断添加新功能。想要更深入地了解,请查看他的博客文章



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???????????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,观察复制控制器重新创建它们等。你还可以使用该模板将其用于更改其他应用程序。



4、Visual Studio Code


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



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



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



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

推荐↓↓↓
运维
上一篇:Docker,一个傲娇的男人