本文共 4237 字,大约阅读时间需要 14 分钟。
helm 和kubectl
最近,我丈夫告诉我即将进行的工作面试,他将不得不通过计算机上的一些基本命令进行操作。 他对面试感到焦虑,但是学习和记住事情的最好方法一直是将他不知道的事情等同于他非常熟悉的事情。 因为我们的谈话是在我逛杂货店试图决定当晚要烹饪的食物之后发生的,所以启发了我写kubectl和Helm命令,相当于将它们等同于一次去杂货店的行程。
是在Kubernetes中管理应用程序的工具。 您可以轻松地使用您的应用程序信息来部署图表,从而允许它们在您的Kubernetes环境中在几分钟之内完成设置和预配置。 在学习新知识时,查看图表示例以了解其用法总是有帮助的,因此,如果有时间,请查看这些稳定的 。
是与Kubernetes环境连接的命令行,允许您配置和管理集群。 它确实需要一些配置才能在环境中工作,因此请仔细阅读以了解您需要做什么。
。现在我们已经解决了,让我们开始购买基本的kubectl和Helm命令!
您去商店之前要做的第一件事是什么? 好吧,如果您有条理,就列出一个清单 。 同样,这是我将解释的第一个基本Helm命令。
在部署了Helm的应用程序中, 列表提供了有关应用程序当前版本的详细信息。 在此示例中,我有一个已部署的应用程序-Jenkins CI / CD应用程序。 运行基本列表命令始终会显示默认名称空间。 由于我没有在默认名称空间中部署任何内容,因此不会显示任何内容:
$ 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在一台小型服务器上运行。 要使Pod在我的一个节点上运行:
$ 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
好消息! 有一个Pod,它尚未重新启动,并且已运行40分钟。 好吧,因为我知道吊舱已经打开,所以我想看看从Helm可以得到什么。
Helm get有点复杂,因为此get命令需要的不只是应用程序名称,而且您可以从应用程序中请求多个内容。 我将从获取用于制作应用程序的值开始,然后展示“ 获取全部”操作的片段,该操作将提供与该应用程序相关的所有数据。
$ helm get values jenkins -n jenkins USER-SUPPLIED VALUES: null
由于我只进行了最小限度的仅稳定安装,因此配置没有更改。 如果我运行all命令,那么我将得到所有图表:
$ helm get all jenkins -n jenkins
这会产生大量数据,因此我始终建议保留一份Helm图表的副本,以便您可以查看图表中的模板。 我还创建自己的价值观来了解自己所拥有的。
现在,我所有的好东西都放在购物车中,接下来我将检查描述其中所含物品的标签。 这些示例仅与kubectl有关,它们描述了我通过Helm部署的内容。
正如我使用get命令所做的那样,该命令可以描述Kubernetes中的几乎所有内容,我将示例限制在名称空间,pod和节点上。 由于我知道我正在与每个人一起工作,因此这很容易。
$ kubectl describe ns jenkins Name: jenkins Labels: < none > Annotations: < none > Status: Active No resource quota. No resource limits.
我可以看到我的名称空间的名称,并且它是活动的,没有资源或引用限制。
describe pods命令会产生大量信息,因此我将提供一小段输出。 如果您在不使用Pod名称的情况下运行该命令,它将返回名称空间中所有Pod的信息,这可能会很麻烦。 因此,请确保在此命令中始终包含容器名称。 例如:
$ kubectl describe pods jenkins-7fc688c874-mh7gv --namespace jenkins
这将提供(除其他事项外)容器的状态,容器的管理方式,标签以及吊舱中使用的图像。 不在此缩写输出中的数据包括资源请求和限制以及在Helm值文件中应用的任何条件,初始化容器和存储量信息。 如果您的应用程序由于资源不足而崩溃,配置的初始化容器运行用于配置的规范,或者生成的隐藏密码不应该存在于纯文本YAML文件中,则此数据很有用。
最后,我将使用describe node ,(当然)将描述节点。 由于本示例只有一个名为Minikube的示例,因此我将使用它。 如果您的环境中有多个节点,则必须包含感兴趣的节点名称。
与pod一样,node命令会产生大量数据,因此我将仅包含输出片段。
$ kubectl describe node minikube
请注意, describe节点是更重要的基本命令之一。 如该图所示,该命令返回统计信息,该统计信息指示节点何时资源用尽,并且该数据非常适合在需要扩展时(如果您的环境中没有自动扩展)向您发出警报。 此输出摘要中未包含的其他内容包括对所有资源和限制的请求百分比,以及资源的使用期限和分配(例如,对于我的应用程序)。
使用这些命令,我完成了购物并得到了我想要的一切。 希望这些基本命令在使用Kubernetes的日常工作中也能为您提供帮助。
我敦促您经常使用命令行并学习“帮助”部分中的速记标志,您可以通过运行以下命令来访问这些标志:
$ helm --help
和
$ kubectl -h
有些东西像花生酱和果冻一样混在一起。 Helm和kubectl有点像那样。
我经常在自己的环境中使用这些工具。 因为它们在很多地方都有很多相似之处,所以在使用其中一个之后,我通常需要跟进另一个。 例如,我可以进行Helm部署,并使用kubectl观察它是否失败。 一起尝试,看看他们能为您做什么。
翻译自:
helm 和kubectl
转载地址:http://eiszd.baihongyu.com/