首页 > 解决方案 > 我可以在一个节点(g1-small)的 GCP 上使用 Kubernetes 运行一个小项目吗?

问题描述

我自愿运营(开发和托管)一个社区项目。意味着时间和金钱都很紧。目前它在 AWS 的裸机上运行(t2.micro,(1 vCPU,1 GB 内存))。出于学习目的,我想将我的应用程序容器化。现在我正在寻找托管。谷歌云平台对我来说似乎是最便宜的。我设置了一个具有 1 个节点(1.10.9-gke.5,g1-small(1 个 vCPU 共享,1.7 GB 内存))的 Kubernetes 集群。

在我设置了一个节点的 Kubernetes 集群后,我检查了 Kubernetes 系统已经使用了多少内存和 CPU。(请参阅 kubectl 描述节点)。

我想知道是否可以在节点上剩余 30% CPU 和 30% 内存的情况下运行以下应用程序。不幸的是,我没有经验了解我的示例中的容器在资源方面需要多少。但是对于我这种应用程序来说,只剩下 30% 的 CPU 和 30% 的内存似乎并不多。

kubectl 描述节点

Non-terminated Pods:         (9 in total)
  Namespace                  Name                                                           CPU Requests  CPU Limits  Memory Requests  Memory Limits
  ---------                  ----                                                           ------------  ----------  ---------------  -------------
  kube-system                event-exporter-v0.2.3-54f94754f4-bznpk                         0 (0%)        0 (0%)      0 (0%)           0 (0%)
  kube-system                fluentd-gcp-scaler-6d7bbc67c5-pbrq4                            0 (0%)        0 (0%)      0 (0%)           0 (0%)
  kube-system                fluentd-gcp-v3.1.0-fjbz6                                       100m (10%)    0 (0%)      200Mi (17%)      300Mi (25%)
  kube-system                heapster-v1.5.3-66b7745959-4zbcl                               138m (14%)    138m (14%)  301456Ki (25%)   301456Ki (25%)
  kube-system                kube-dns-788979dc8f-krrtt                                      260m (27%)    0 (0%)      110Mi (9%)       170Mi (14%)
  kube-system                kube-dns-autoscaler-79b4b844b9-vl4mw                           20m (2%)      0 (0%)      10Mi (0%)        0 (0%)
  kube-system                kube-proxy-gke-spokesman-cluster-default-pool-d70d068f-wjtk    100m (10%)    0 (0%)      0 (0%)           0 (0%)
  kube-system                l7-default-backend-5d5b9874d5-cgczj                            10m (1%)      10m (1%)    20Mi (1%)        20Mi (1%)
  kube-system                metrics-server-v0.2.1-7486f5bd67-ctbr2                         53m (5%)      148m (15%)  154Mi (13%)      404Mi (34%)
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  CPU Requests  CPU Limits  Memory Requests  Memory Limits
  ------------  ----------  ---------------  -------------
  681m (72%)    296m (31%)  807312Ki (67%)   1216912Ki (102%)

这是我的应用程序

PROD:
API:        ASP.NET core 1.1 (microsoft/dotnet:1.1-runtime-stretch)
Frontend:   Angular app (nginx:1.15-alpine)
Admin:      Angular app (nginx:1.15-alpine)

TEST:
API:        ASP.NET core 1.1 (microsoft/dotnet:1.1-runtime-stretch)
Frontend:   Angular app (nginx:1.15-alpine)
Admin:      Angular app (nginx:1.15-alpine)

SHARDED
Database:   Postgres (postgres:11-alpine)

任何建议都非常受欢迎。

提前致谢!

标签: kubernetesgoogle-cloud-platformgoogle-compute-engine

解决方案


如果您打算在单个节点上运行容器化应用程序,则最好从GCE 实例开始。

迁移到 GKE 时,请查看此GCP 指南,在任何工作负载和 kube-system pod 之前解释每种机器类型的资源分配。您仍然需要估计每个应用程序组件或容器的资源使用情况,可能来自监控您的开发或 GCE 环境。

如果您想为您的应用探索 GCP 上的其他替代方案(例如 App Engine 支持.NET),这里有一个包含决策树的帖子,可能会对您有所帮助。我还发现了这篇关于在 App Engine 和 GKE 上运行容器的文章/教程,并将两者与负载测试进行了比较。


推荐阅读