Loki Operator 兼容性指南支持的 Kubernetes 与 Loki 版本全解析【免费下载链接】lokiLike Prometheus, but for logs.项目地址: https://gitcode.com/GitHub_Trending/lok/lokiLoki OperatorGrafana Loki 展开结合 operator/go.mod、operator/config/crd/bases/loki.grafana.com_lokistacks.yaml 等源码与清单文件帮助你准确判断当前集群能否运行该 Operator该 Operator 能部署哪个版本的 Loki并为升级路径提供可验证的依据。兼容性总览两个独立的版本维度Loki Operator 的兼容性声明围绕两个维度展开Kubernetes 集群版本决定 Operator 能否在目标集群上安装、运行主要由 Operator 依赖的client-go库版本与所用 CRD API 版本决定Loki 发行版本决定 Operator 能够以何种镜像版本部署和接管 Loki 组件由 Operator 内置的版本支持列表与默认镜像决定。官方文档给出的结论是The Loki Operator supports a number of Kubernetes and Loki releases.Loki Operator 支持一系列 Kubernetes 与 Loki 发行版本。下面分别展开。Kubernetes 集群版本兼容性client-go 决定兼容边界Loki Operator 通过client-goKubernetes 官方 Go 客户端库与 Kubernetes API Server 通信因此集群版本支持范围本质上由client-go的兼容矩阵决定——即client-go 声明支持的 Kubernetes 版本区间就是 Operator 可以正常工作的区间。文档特别强调除此之外的额外兼容性例如在更老或更新的集群上偶然可用仅属尽力而为best effort官方不做承诺。这意味着若集群版本在client-go支持范围内可视为官方支持若不在范围内但恰好能运行属于碰巧可用不受保证。当前仓库实际使用的 client-go 版本文档撰写时记录的client-go版本为v0.23.5但以当前仓库实际依赖为准在 operator/go.mod 中k8s.io/client-go已锁定为v0.35.3同时配套依赖k8s.io/api v0.35.3k8s.io/apimachinery v0.35.3k8s.io/apiserver v0.35.3k8s.io/component-base v0.35.3sigs.k8s.io/controller-runtime v0.23.3也就是说当前主线代码的集群兼容边界由client-go v0.35.3及 controller-runtime v0.23.3对应的官方兼容矩阵决定。在规划集群版本时应以你将要部署的 Operator 版本所对应的go.mod实际依赖为准而不是依赖过时的文档快照。这也是以仓库实际内容为准的典型场景。CRD API 版本带来的两个硬性门槛除了client-goCRD 的 API 版本还设置了两个明确的最低集群版本门槛约束来源最低要求原因使用 CustomResourceDefinitionsKubernetes v1.7.0使用 CRD 本身的前提使用apiextensions.k8s.io/v1CRDKubernetes v1.21.0apiextensions.k8s.io/v1于 v1.21 才正式提供其中第二条是当前的实际硬约束。可以在仓库中直接验证Operator 生成的 CRD 清单头部即为apiVersion: apiextensions.k8s.io/v1例如 operator/config/crd/bases/loki.grafana.com_lokistacks.yaml 第 2 行以及 operator/bundle/community/manifests/loki.grafana.com_lokistacks.yaml 等 bundle 清单Operator 定义的 API 组为loki.grafana.com其类型文档可在 operator/docs/operator/api.md 中查阅该页面由gen-crd-api-reference-docs自动生成。结论实际部署时集群版本应同时满足client-go兼容区间与 v1.21.0两条约束前者决定了能跑得多稳后者决定了能不能装。Loki 版本兼容矩阵完整支持列表Loki Operator 明确声明可与之配合运行的 Loki 版本如下来自 operator/docs/operator/compatibility.md均为 v3.x 系列v3.1.0v3.1.1v3.2.0v3.2.1v3.3.2v3.4.2v3.4.3v3.5.4v3.5.5v3.6.5v3.7.2v3.7.3v3.7.7该列表覆盖了从 v3.1 到 v3.7 的主要补丁版本。列表语义是这些版本的 Loki 可以被 Operator运行The versions of Loki compatible to be run with the Loki Operator are因此选择列表内版本官方保证的兼容区间选择列表外版本不属于声明范围需自行验证或等待 Operator 后续版本更新支持。默认镜像与支持列表的对应关系支持列表并非孤立的文字声明而是落地在 Operator 的发布产物中。在 Operator 的 ClusterServiceVersionCSV清单里可以找到与支持列表一致的默认 Loki 镜像operator/bundle/community/manifests/loki-operator.clusterserviceversion.yaml 中默认镜像为docker.io/grafana/loki:3.7.7operator/bundle/openshift/manifests/loki-operator.clusterserviceversion.yaml 中默认镜像为quay.io/openshift-logging/loki:v3.7.7对应各 overlay 的镜像补丁例如 operator/config/overlays/community/manager_related_image_patch.yaml。可见当前发布线把v3.7.7作为默认部署的 Loki 版本与兼容列表的最新条目保持一致。这也给出一个实用提示若要运行列表内较旧版本如 v3.1.0需要显式指定对应的 Loki 镜像Operator 不会默认回退到旧版本。兼容性如何落地从依赖到产物理解兼容性声明后可以顺着仓库把文档 - 依赖 - 清单产物的链路串起来方便你在实际排障或升级时定位证据。1. 依赖层operator/go.modoperator/go.mod 是整个兼容性声明的根k8s.io/client-go v0.35.3决定 Kubernetes 集群兼容区间见上文github.com/grafana/loki/v3 v3.7.1Operator 以 Go 模块方式依赖 Loki v3.7.1作为版本支持的代码级锚点sigs.k8s.io/controller-runtime v0.23.3Operator 的控制器框架其版本与client-go版本联动。2. CRD 层config/crd 与 bundle/manifestsOperator 的四个 CRD 均使用apiextensions.k8s.io/v1loki.grafana.com_lokistacks.yaml核心的 LokiStack 自定义资源loki.grafana.com_alertingrules.yamlloki.grafana.com_recordingrules.yamlloki.grafana.com_rulerconfigs.yaml它们同时存在于 operator/config/crd/bases/kustomize 源与 operator/bundle/community/manifests/OLM bundle 产物中二者应保持同步。3. 发布层bundle 生成与版本管理Operator 的发布流程详见 operator/docs/operator/release.md包括更新 Operator 版本号并执行make bundle-all重新生成 bundle 清单、更新CHANGELOG.md、打 release 标签以及向社区 OperatorHub 仓库提交 bundle。这意味着每次支持新的 Loki 版本都会同步反映到 CSV 的默认镜像与支持文档中——因此判断当前 Operator 支持哪个 Loki 版本时把 compatibility.md 与 CSV 清单对照阅读是最可靠的姿势。使用建议与注意事项综合文档与源码落地到实际运维时有几点值得留意集群版本评估顺序先确认集群 v1.21.0apiextensions.k8s.io/v1硬门槛再对照所部署 Operator 版本的go.mod中client-go版本的官方兼容矩阵确认区间。文档中记录的v0.23.5属历史快照当前仓库主线已升级到v0.35.3务必以实际部署版本为准。Loki 版本选择优先选择兼容列表内的版本默认部署为 v3.7.7如需旧版本须显式指定镜像且旧版本属于声明区间内方可视为受支持。尽力而为的边界不在声明区间内的组合并非一定不可用但官方不做承诺生产环境应避免依赖这种偶然兼容。升级前对照三处compatibility.md的支持列表、CSV 中的默认镜像、go.mod中的依赖版本三者一致时兼容性声明才完整成立。通过本文梳理的文档 go.mod CRD CSV四方证据链你可以准确回答两个最核心的问题我的集群能不能装这个 Operator它能管哪个版本的 Loki【免费下载链接】lokiLike Prometheus, but for logs.项目地址: https://gitcode.com/GitHub_Trending/lok/loki创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考