使用OpenCost控制 Kubernetes 成本

Korifi 简化 Kubernetes 部署,再用 OpenCost 精准掌握成本!本文教你如何在 KiND 上安装 KorifiOpenCost,实现云原生应用成本可视化,优化资源分配,提升 DevOps 效率,告别云支出超标!

译自:Harness Kubernetes Costs With OpenCost

作者:Ram Iyengar

我参加的每次活动中,大家讨论(或者说抱怨)最多的就是如何管理 Kubernetes 的复杂性和成本。最近的一项调查发现,近一半的公司发现 Kubernetes 增加了云支出。Kubernetes 的普遍性日益明显,并且每天对更好地管理它的需求都在增长。

为了管理 Kubernetes 的复杂性,我们可以选择一个用于抽象它的底层。为此,让我们使用开源 Cloud Foundry Korifi,它是一个构建在 Kubernetes 上的抽象层,可以简化应用程序的部署和管理。为了管理成本,让我们采用 Cloud Native Computing Foundation (CNCF) 的孵化项目 OpenCost,它提供全面的成本可见性和优化功能。

Korifi 和 OpenCost 简介

以下教程的先决条件是需要了解这些工具。Cloud Foundry Korifi 旨在将 Cloud Foundry 的最佳体验带到 Kubernetes。它在 Kubernetes 上提供了一个更高级别的抽象,简化了开发人员的应用程序部署和管理

以下是其主要功能的细分:

  • 简化应用程序部署:Korifi 允许开发人员使用熟悉的 Cloud Foundry 命令(例如 cf push)将应用程序部署到 Kubernetes。这抽象了Kubernetes YAML 配置的复杂性,使部署更容易、更快捷。
  • 语言和框架无关:开发人员可以使用各种语言和框架构建的应用程序,而无需担心底层的 Kubernetes 配置。
  • 自动化网络和安全:Korifi 自动化网络和安全任务,例如服务发现、路由和安全策略,从而增强应用程序的可靠性和安全性。
  • 增强的开发人员体验:通过提供精简且用户友好的体验,Korifi 使开发人员能够专注于构建应用程序,而不是与复杂的 Kubernetes 配置作斗争。

什么是 OpenCost?

OpenCost 是一个开源平台,可提供跨整个云基础设施的全面成本可见性。对于任何希望控制其云成本的 DevOps 团队来说,OpenCost 都是一个强大的工具。通过提供精细的可见性、深刻的分析和灵活的平台,OpenCost 使您能够优化云支出并最大程度地提高云投资的回报。

在当今的云原生世界中,了解和优化云支出对于任何组织(无论规模大小)都至关重要。以下是 OpenCost 众多优势的简短列表。

  • 开源且可定制:OpenCost 基于开源原则构建,具有灵活性,能够根据您的特定需求进行定制,并能够将其无缝集成到您现有的基础设施中。
  • 支持多个云提供商:无论您使用 AWS、Azure、GCP 还是它们的组合,OpenCost 都可以提供跨所有平台的统一云支出视图。
  • 数据驱动的决策:OpenCost 提供了大量数据和可视化效果,可帮助您深入了解云成本,并就云战略做出明智的决策。
  • 社区驱动的开发:受益于活跃的开发人员和用户社区,他们为平台的持续开发和改进做出贡献。

如何安装 Cloud Foundry Korifi 和 OpenCost

本指南将演示如何在本地 Kubernetes 集群 (KiND) 上安装 Cloud Foundry Korifi 和 OpenCost。

先决条件:

  • 确保您已在系统上安装并配置了 Helm 3。
  • 使用官方说明安装 KiND。
  • 安装 kubectl 以管理您的集群。

安装 Korifi:

  • 通过内联应用以下配置,使用 KiND 创建 Kubernetes 集群:
cat <<EOF | kind create cluster --name korifi --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
containerdConfigPatches:
  - |-
    [plugins."io.containerd.grpc.v1.cri".registry]
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."localregistry-docker-registry.default.svc.cluster.local:30050"]
          endpoint = ["http://127.0.0.1:30050"]
      [plugins."io.containerd.grpc.v1.cri".registry.configs]
        [plugins."io.containerd.grpc.v1.cri".registry.configs."127.0.0.1:30050".tls]
          insecure_skip_verify = true
nodes:
  - role: control-plane
    extraPortMappings:
      - containerPort: 32080
        hostPort: 80
        protocol: TCP
      - containerPort: 32443
        hostPort: 443
        protocol: TCP
      - containerPort: 30050
        hostPort: 30050
        protocol: TCP
EOF
  • 使用以下安装程序安装 Korifi 基础:
kubectl apply -f https://github.com/cloudfoundry/korifi/releases/latest/download/install-korifi-kind.yaml
  • 接下来,使用 Helm 安装 OpenCost:
helm repo add opencost https://charts.opencost.io
  • 确保更新 Helm:
helm repo update
  • 接下来,使用 Helm 安装:
helm install opencost opencost/opencost
  • 使用以下命令验证安装:
kubectl get pods -n opencost
  • OpenCost 完成安装后,等待所有 OpenCost pod 达到“Ready”状态。然后,使用以下命令建立本地端口转发连接:
kubectl port-forward --namespace opencost service/opencost 9003 9090
  • 通过访问 localhost:9090 从浏览器访问 OpenCost UI。

下图显示了 OpenCost 如何提供每个 pod 的有用信息。对于 Korifi,pod 代表一个构建。因此,我们现在可以看到每个构建的成本,否则这些成本将永远无法获得。

检查每个命名空间的成本对于推导责任、推动优化和识别异常非常有用。以下是使用 OpenCost 的可视化效果示例。

总结

现在你已经了解了。现在,你可以了解和优化你的成本——最重要的是,通过利用开源软件。

与 Korifi 一起部署的 OpenCost 可以监控“构建”、“部署”以及构成整个集群的其他原语的成本。OpenCost 可以将成本分解为原子组件,这有助于以全新的维度综合理解 Kubernetes 集群。

但为什么要首先这样做呢?为了最大限度地利用云计算,工程团队必须开始了解所涉及的基础设施成本。这并不意味着要密切关注 AWS 账单。这也意味着要扩大应用程序部署、CI/CD 成本、可观测性成本等的透明度。有了这些信息,工程团队可以就为其堆栈分配正确的资源做出更具变革性的决策。

发表回复

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