https://linux.cn/article-12007-1.htmlhtml
去杂货店“采购”这些命令,你须要用这些 Kubernetes 工具来入门。node
最近,我丈夫告诉我他即将要去参加一个工做面试,面试时他须要在计算机上运行一些基本命令。他对这场面试感到焦虑,可是对于他来讲,学习和记住事情的最好方法是将不了解的事物比喻为很是熟悉的事物。由于咱们的谈话是在我逛杂货店试图决定当晚要烹饪的食物以后进行的,因此这启发我用一次去杂货店的行程来介绍 kubectl
和 helm
命令。linux
Helm(“舵轮”)是在 Kubernetes(来自希腊语,意思是“舵手” 或 “领航员”)中管理应用程序的工具。你能够轻松地使用你的应用程序信息来部署“海图chart”,从而能够在你的 Kubernetes 环境中几分钟以内让它们就绪并预配置好。在学习新知识时,查看示例的“海图”以了解其用法老是颇有帮助的,所以,若是有时间,请查看这些成型的“海图”。(LCTT 译注:Kubernetes 生态中大量使用了和航海有关的比喻,所以本文在翻译时也采用了这些比喻)git
kubectl 是与 Kubernetes 环境交互的命令行界面,容许你配置和管理集群。它须要一些配置才能在环境中工做,所以请仔细阅读其文档以了解你须要作什么。github
我会在示例中使用命名空间,你能够在个人文章《Kubernetes 命名空间入门》中了解它。面试
如今咱们已经准备好了,让咱们开始 kubectl
和 helm
基本命令的购物之旅!小程序
你去商店以前要作的第一件事是什么?好吧,若是你作事有条理,会建立一个“清单”。一样,这是我将解释的第一个基本的 Helm 命令。服务器
在一个用 Helm 部署的应用程序中,list
命令提供有关应用程序当前版本的详细信息。在此示例中,我有一个已部署的应用程序:Jenkins CI/CD 应用程序。运行基本的 list
命令老是会显示默认的命名空间。因为我没有在默认的命名空间中部署任何内容,所以不会显示任何内容:工具
$helm list NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
可是,若是运行带有额外标志的命令,则会显示个人应用程序和信息:学习
$helm list --all-namespaces NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION jenkins jenkins 1 2020-01-18 16:18:07 EST deployed jenkins-1.9.4 lts
最后,我能够指示 list
命令只检查我想从中获取信息的命名空间:
$helm list --namespace jenkins NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION jenkins jenkins 1 2020-01-18 16:18:07 EST deployed jenkins-1.9.4 lts
如今我有了一个清单,而且知道该清单上有什么,我可使用 get
命令来“获取”个人物品!我会从 Kubernetes 集群开始,看看我能从中获取到什么?
kubectl get
命令提供了有关 Kubernetes 中许多事物的信息,包括“吊舱Pod”、节点和命名空间。一样,若是没有指定命名空间标志,就会使用默认的命名空间。首先,我获取集群中的命名空间以查看正在运行的命名空间:
$kubectl get namespaces NAME STATUS AGE default Active 53m jenkins Active 44m kube-node-lease Active 53m kube-public Active 53m kube-system Active 53m
如今我已经知道了在个人环境中运行的有哪些命名空间了,接下来获取节点并查看有多少个节点正在运行:
$kubectl get nodes NAME STATUS ROLES AGE VERSION minikube Ready master 55m v1.16.2
我有一个节点正在运行,这主要是由于个人 Minikube 运行在一台小型服务器上。要获得在个人这一个节点上运行的“吊舱”能够这样:
$kubectl get pods No resources found in default namespace.
啊哦,它是空的。我将经过如下方式获取 Jenkins 命名空间中的内容:
$kubectl get pods --namespace jenkins NAME READY STATUS RESTARTS AGE jenkins-7fc688c874-mh7gv 1/1 Running 0 40m
好消息!这里发现了一个“吊舱”,它尚未从新启动过,已运行了 40 分钟了。好的,现在我知道“吊舱”已经装好,因此我想看看用 Helm 命令能够获得什么。
helm get
命令稍微复杂一点,由于这个“获取”命令所须要的不只仅是一个应用程序名称,并且你能够从应用程序中请求多个内容。我会从获取用于制做该应用程序的值开始,而后展现“获取所有”的操做结果的片断,该操做将提供与该应用程序相关的全部数据。
$helm get values jenkins -n jenkins USER-SUPPLIED VALUES: null
因为我只安装了最小限度的稳定版,所以配置没有更改。若是我运行“获取所有”命令,我将获得全部的“海图”:
$helm get all jenkins -n jenkins
这会产生大量数据,所以我始终建议保留一份 Helm “海图”的副本,以便你能够查看“海图”中的模板。我还建立本身的值来了解本身所拥有的。
如今,我把全部的商品都放在购物车中了,我会检查一下“描述”它们包含什么的标签。这些示例仅与 kubectl
命令有关,它们描述了我经过 Helm 部署的内容。
正如我使用“获取”命令(该命令能够描述 Kubernetes 中的几乎全部内容)所作的那样,我将示例限定到命名空间、“吊舱”和节点上。因为我知道它们每个是什么,所以这很容易。
$kubectl describe ns jenkins Name: jenkins Labels: <none> Annotations: <none> Status: Active No resource quota. No resource limits.
我能够看到个人命名空间的名称,而且它是活动的,没有资源或限额限制。
describe pods
命令会产生大量信息,所以我这里提供的是一小段输出。若是你在不使用“吊舱”名称的状况下运行该命令,它将返回名称空间中全部“吊舱”的信息,这可能会很麻烦。所以,请确保在此命令中始终包含“吊舱”名称。例如:
$kubectl describe pods jenkins-7fc688c874-mh7gv --namespace jenkins
这会提供容器的状态、管理方式、标签以及“吊舱”中所使用的镜像(还有不少其它信息)。没有在这个简化过的输出中包括的数据有:在 Helm 配置值文件中应用的各类条件下的资源请求和限制、初始化容器和存储卷信息。若是你的应用程序因为资源不足而崩溃,或者是一个须要运行前置脚本进行配置的初始配置容器,或者生成不该该存储于纯文本 YAML 文件中的隐藏密码,则此数据颇有用。
最后,我将使用 describe node
命令,固然,它是用来描述节点的。因为本示例只有一个名为 Minikube 的示例,所以我将使用这个名字。若是你的环境中有多个节点,则必须包含你想查找的的节点名称。
与“吊舱”同样,这个节点的命令会产生大量数据,所以我将仅包括输出片断。
$kubectl describe node minikube
注意,describe node
是更重要的基本命令之一。如此图所示,该命令返回统计信息,该信息指示节点什么时候资源用尽,而且该数据很是适合在须要扩展时(若是你的环境中没有自动扩展)向你发出警报。此输出片断中未包含的其它内容包括:对全部资源和限制的请求所占的百分比,以及资源的使用期限和分配(例如,对于个人应用程序而言)。
使用这些命令,我完成了“购物”并获得了我想要的一切。但愿这些基本命令也能在你使用 Kubernetes 的平常工做中提供帮助。
我鼓励你常用命令行并学习“帮助”部分中的速记标志,你能够经过运行如下命令来查看这些标志:
$helm --help
或
$kubectl -h
有些东西像花生酱和果冻同样混在一块儿。Helm 和 kubectl
就有点像那样交错在一块儿。
我常常在本身的环境中使用这些工具。由于它们在不少地方都有不少类似之处,因此在使用其中一个以后,我一般须要跟进另外一个。例如,我能够进行 Helm 部署,并使用 kubectl
观察它是否失败。一块儿试试它们,看看它们能为你作什么。
via: https://opensource.com/article/20/2/kubectl-helm-commands
做者:Jessica Cherry 选题:lujun9972 译者:wxy 校对:wxy
订阅“Linux 中国”官方小程序来查看