我可以在带有一个节点(g1-small)的GCP上使用Kubernetes运行一个小型项目吗?

时间:2019-01-12 00:36:02

标签: kubernetes google-cloud-platform google-compute-engine

我自愿运行(开发和托管)社区项目。意思是时间和金钱很紧。当前,它在AWS的裸机上运行(t2.micro,(1 vCPU,1 GB内存))。 出于学习目的,我想将我的应用程序容器化。现在,我正在寻找托管。 Google Cloud Plattform对我而言似乎是最便宜的。 我设置了一个具有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)

任何建议都值得欢迎。

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您打算在单个节点上运行容器化的应用程序,那么开始时最好使用GCE instance

进入GKE时,请查看此GCP's guide,以解释每种机器类型在任何工作负载和kube系统pod之前的资源分配。您仍然需要估计每个应用程序组件或容器的资源使用情况,可能是通过监视Dev或GCE环境来实现的。

如果您想在GCP上探索适用于您的应用的其他替代方案(例如App Engine支持.NET),那么这里的post带有决策树可能会对您有所帮助。我还发现了article/tutorial的有关在App Engine和GKE上运行容器的信息,并与负载测试进行了比较。