Kubectl apply 语法、使用示例、最佳实践
什么是 kubectl?
任何使用过 Kubernetes
的人都会欣赏其命令行工具kubectl
的强大功能。无论您是运行小型项目还是管理大型企业级集群,Kubectl
都是任何 Kubernetes
设置的重要组成部分。
Kubectl
允许您针对 Kubernetes
集群运行命令。它是与 Kubernetes
集群交互的主要方法,使开发人员和管理员能够有效地管理其资源。Kubectl
使用 Kubernetes API
与集群交互,提供了用于与 Kubernetes 资源
交互和管理的多功能工具集。
使用 kubectl
,您可以部署应用程序、检查和管理集群资源以及查看日志。对于任何与 Kubernetes
交互的人来说,无论他们是开发人员、系统管理员还是 DevOps 专业人员,它都是不可或缺的工具。Kubectl
的强大之处在于它的多功能性。它提供了多种创建、更新和管理 Kubernetes 资源的方法。一个核心命令是kubectl apply
。
kubectl apply 的语法
该kubectl apply
命令用于将配置更改应用于资源。语法很简单:最常见的用法是:
kubectl apply -f app.yaml
这里,该-f
标志表示资源配置在名为app.yaml
的文件中提供。
该kubectl apply
命令基于声明性配置工作。声明性配置是一种在文件中提供资源所需状态的方法,Kubernetes 会进行必要的更改来实现该状态。这与命令式相反,命令式命令是需要指定更改资源状态的每个步骤。
该kubectl apply
命令还通过将先前应用的配置写入资源的注释来维护该记录。此信息用于计算下一次调用的差异,使其能够准确地知道要应用做哪些更改。
kubectl apply
的惊人之处在于,它可以用于在几乎任何环境中部署计算资源 - 本地或任何云中,无论 Kubernetes 集群在何处运行。这使得 Kubernetes 能够支持复杂的混合 IT
场景。
Kubectl 应用:主要用例
创建资源
在 Kubernetes 中,您可以使用kubectl apply
来创建 Pod、服务和部署等资源。您只需在 .yaml
或 .json
文件中定义资源的配置,然后用于kubectl apply
创建它。
更新资源
kubectl apply
不仅用于创建资源,还用于更新资源。当您想要对资源进行更改时,您可以更新配置文件,然后使用kubectl apply
. 最后,Kubernetes 将计算当前状态与所需状态之间的差异并应用必要的更改。
处理实时配置的更改
有时,您可能需要更改资源的实时配置。kubectl apply
也允许您执行此操作。但是,请务必注意,这些更改将在您下次应用配置文件时被覆盖。因此,建议始终在配置文件中进行更改,然后应用它们。
使用“kubectl apply”的最佳实践
使用版本控制系统
使用时的最佳实践之一kubectl apply
是利用版本控制系统(VCS)。VCS 允许您跟踪代码随时间的变化。如果您需要恢复到以前版本的代码,或者您在团队中工作并且需要合并来自不同开发人员的更改,这将非常有用。
使用 VCS 意味着kubectl apply
将所有 Kubernetes 配置文件存储在像 Git 这样的 VCS 中。这样,对配置所做的每项更改都会被跟踪,从而提供有关所做更改、更改时间以及更改者的清晰历史记录
。这种做法不仅提高了可追溯性
,而且还允许团队成员之间更好的协作
。
此外,使用 VCS 允许您利用持续集成/持续部署 (CI/CD) 管道
。这些管道可以自动将 VCS 中的更改应用到 Kubernetes
集群,从而进一步简化您的部署流程。
清理未使用的资源
使用kubectl apply
清理未使用的资源非常重要。这对于管理云成本
非常重要。如果您从配置文件中删除资源然后使用kubectl apply
,Kubernetes 不会自动删除相应的资源。相反,您需要使用命令kubectl delete
手动删除资源。
清理未使用的资源对于维护干净高效的系统非常重要。未使用的资源可能会消耗系统资源,并使您的配置更难以理解和管理。
整体管理资源
另一个最佳使用实践是将资源作为一个整体
而不是单独管理。这意味着将应用程序所需的所有资源视为一个单元。Kubernetes 允许您通过称为标签的功能
来做到这一点。
标签是可以附加到 Kubernetes 对象的键值对。您可以使用标签将相关资源分组在一起。例如,与特定应用程序相关的所有资源都可以有一个标签,其中键为“app”,应用程序的名称作为值。
使用标签对资源进行分组后,您可以将kubectl apply
更改应用到具有特定标签
的所有资源。这使您可以将与应用程序相关的所有资源作为一个单元进行管理,从而使您的工作更加高效。
了解合并策略
了解所使用的合并策略
至关重要。当您应用kubectl apply
更改时,Kubernetes 不会简单地覆盖现有配置。相反,它使用一种称为three-way merge patch
的策略。
在three-way merge patch
,Kubernetes 会查看对象的当前状态
、正在应用的配置文件中的对象状态
以及应用时对象的最后状态
。然后它合并这三个状态以确定对象的最终状态。
这意味着直接对对象所做的更改(例如,通过kubectl edit命令)将被保留,除非它们被配置文件中的更改覆盖。了解这种合并策略可以帮助您在使用时避免意外结果。
注意声明性命令和命令式命令
Kubernetes 命令大致可分为两类:声明式命令
和命令式命令
。声明性命令指定系统所需的状态,然后 Kubernetes 找出如何实现该状态。另一方面,命令式命令指定要在系统上执行的操作。
kubectl apply是一个声明性命令。您提供一个配置文件来指定系统所需的状态,然后 Kubernetes 找出如何实现该状态。这种方法比命令式命令更灵活、更强大,但也可能更复杂。
对于掌握kubectl来说,需要了解声明性命令和命令式命令之间的区别以及何时使用它们。
结论
掌握kubectl对于任何使用 Kubernetes 的人来说都是至关重要的。通过遵循本指南中概述的最佳实践,您可以更有效地使用kubectl apply
。记住使用版本控制系统,整体管理资源,了解合并策略,了解声明性和命令性命令,并清理未使用的资源。
Happy Kube-controlling!
文章转载自公众号:DevOps云学堂