
实践环境升级基于K8s和ArgoCD

任何使用过 Kubernetes 的人都会欣赏其命令行工具kubectl的强大功能。无论您是运行小型项目还是管理大型企业级集群,Kubectl 都是任何 Kubernetes 设置的重要组成部分。
Kubectl 允许您针对 Kubernetes 集群运行命令。它是与 Kubernetes 集群交互的主要方法,使开发人员和管理员能够有效地管理其资源。Kubectl 使用 Kubernetes API 与集群交互,提供了用于与 Kubernetes 资源交互和管理的多功能工具集。
使用 kubectl,您可以部署应用程序、检查和管理集群资源以及查看日志。对于任何与 Kubernetes 交互的人来说,无论他们是开发人员、系统管理员还是 DevOps 专业人员,它都是不可或缺的工具。Kubectl 的强大之处在于它的多功能性。它提供了多种创建、更新和管理 Kubernetes 资源的方法。一个核心命令是kubectl apply。
该kubectl apply命令用于将配置更改应用于资源。语法很简单:最常见的用法是:
kubectl apply -f app.yaml这里,该-f标志表示资源配置在名为app.yaml的文件中提供。
该kubectl apply命令基于声明性配置工作。声明性配置是一种在文件中提供资源所需状态的方法,Kubernetes 会进行必要的更改来实现该状态。这与命令式相反,命令式命令是需要指定更改资源状态的每个步骤。
该kubectl apply命令还通过将先前应用的配置写入资源的注释来维护该记录。此信息用于计算下一次调用的差异,使其能够准确地知道要应用做哪些更改。
kubectl apply 的惊人之处在于,它可以用于在几乎任何环境中部署计算资源 - 本地或任何云中,无论 Kubernetes 集群在何处运行。这使得 Kubernetes 能够支持复杂的混合 IT场景。
在 Kubernetes 中,您可以使用kubectl apply来创建 Pod、服务和部署等资源。您只需在 .yaml 或 .json 文件中定义资源的配置,然后用于kubectl apply创建它。
kubectl apply不仅用于创建资源,还用于更新资源。当您想要对资源进行更改时,您可以更新配置文件,然后使用kubectl apply. 最后,Kubernetes 将计算当前状态与所需状态之间的差异并应用必要的更改。
有时,您可能需要更改资源的实时配置。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!