🏗️ Kyverno架构:为何称之为“Kubernetes Native”?

大家好!今天,我们将深入探讨Kyverno的架构及其核心组件,它们是Kubernetes运营的必备项,也是KCA考试的核心主题。🕵️‍♂️

在运营Kubernetes时,您可能会遇到这样的困惑:“谁在我的集群中部署了一个没有安全设置的Pod?”这时,Kyverno就会作为救星出现。了解它内部如何运作,将使运营和故障排除变得更加容易。

在描述Kyverno时,最常出现的词是“Kubernetes Native”。这是因为Kyverno直接利用了Kubernetes的现有机制。

最重要的概念是Admission Webhooks。当资源创建/修改请求到达Kubernetes API服务器时,API服务器在处理该请求之前会询问Kyverno:“这可以吗?”Kyverno会根据配置的策略(Policy)来批准、拒绝或建议修改。

https://kyverno.io/docs/introduction/how-kyverno-works/


🧩 Kyverno的3大核心组件 (Core Components)

让我们以Kyverno安装时创建的主要Pod为中心,详细了解每个控制器所扮演的角色。

1. Admission Controller (守门员) 🛡️

这是Kyverno的核心。它直接处理所有MutatingWebhook和ValidatingWebhook请求。

  • Mutation (变异): 当请求到来时,它会根据配置的策略自动修改资源的内容。例如,它可以为所有Pod添加特定标签或注入Sidecar容器。
  • Validation (验证): 它检查资源是否符合安全规则。如果配置了“不允许特权模式!”,那么它会立即阻止(Enforce)或记录(Audit)违反此规则的请求。
  • Generation (生成): 当创建新命名空间时,它会自动创建默认的NetworkPolicy或Role等。

2. Background Controller (审计员) 📋

如果说Admission Controller专注于“当前传入的请求”,那么Background Controller则负责监控“集群中已存在的资源”

  • 策略应用检查: 如果策略是后来创建的,它会扫描现有正在运行的Pod,检查它们是否符合新策略。
  • 报告生成: 它会定期扫描集群,整理策略违规事项,并生成PolicyReport。这使得管理员不仅可以实时阻止请求,还可以检查集群的整体健康状况。

3. Cleanup Controller (清洁工) 🧹

这是Kyverno 1.9版本引入的组件,专门负责清理集群中冗余的资源

  • 有效期设置: 如果为特定资源设置了“1小时后删除”的策略,此控制器将检查时间并将其删除。
  • 临时资源管理: 它会自动清理为测试创建的资源或已过期的证书等,从而节省集群资源。

🔄 策略处理流程:从请求到执行

让我们按顺序了解在创建资源时Kyverno内部发生的事情。

  1. API请求发送: 用户发出`kubectl apply -f pod.yaml`命令。
  2. Mutating Webhook: API服务器将请求发送给Kyverno。Kyverno注入(Mutate)必要的配置并返回结果。
  3. Object Schema Validation: API服务器自行验证修改后的资源格式是否正确。
  4. Validating Webhook: 再次询问Kyverno:“现在真的可以创建了吗?”Kyverno进行最终审查(Validate),然后决定批准或拒绝。
  5. Persistence: 如果通过所有关卡,数据将存储在etcd中,并创建资源。

🛠️ 运维人员小贴士:故障排除要点

如果Kyverno突然停止工作,请首先检查以下三点!

  • Webhook证书检查: Kyverno通过TLS与API服务器通信。如果证书过期或配置混乱,所有API请求都可能停止。建议使用cert-manager。
  • Resource Filters: 有时您可能会想:“为什么这个Pod不受策略影响?”请检查Kyverno的默认设置中是否过滤掉了某些命名空间(例如kube-system等)。
  • Admission Report: 策略未生效的原因详细记录在PolicyReport自定义资源中。请积极使用`kubectl get polr`命令。

🌟 总结

Kyverno不仅仅是一个安全工具;它是一个强大的框架,推动Kubernetes运营的自动化和标准化。理解其架构是充分利用其强大功能的第一步。

如果您能在大脑中描绘出我们今天解释的Admission、Background和Cleanup这三位管理员如何保护您的集群,那么您不仅能在Kyverno考试(KCA)中,也能在实际工作中展现出专家级的风采! 🚀


Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注