kubernetes - 我可以在一个节点(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)
任何建议都非常受欢迎。
提前致谢!
解决方案
如果您打算在单个节点上运行容器化应用程序,则最好从GCE 实例开始。
迁移到 GKE 时,请查看此GCP 指南,在任何工作负载和 kube-system pod 之前解释每种机器类型的资源分配。您仍然需要估计每个应用程序组件或容器的资源使用情况,可能来自监控您的开发或 GCE 环境。
如果您想为您的应用探索 GCP 上的其他替代方案(例如 App Engine 支持.NET),这里有一个包含决策树的帖子,可能会对您有所帮助。我还发现了这篇关于在 App Engine 和 GKE 上运行容器的文章/教程,并将两者与负载测试进行了比较。
推荐阅读
- python-3.x - Yodlee:如何在单个 API 调用中删除每个用户的关联帐户
- python - 列出测试数据中的错误预测!- Python
- gitlab - GitLab 运行器需要访问私有用户/客户端证书
- c++ - SFML 错误 1 2 2,CMake 未能构建 windows CLion
- python - 使用 Python 的 FLIR C2 相机连接错误
- prolog - 有没有更简洁的方法可以在序言中明确评估某些内容?
- javascript - Chrome 扩展 - 存储在对象中设置特定键而不覆盖对象的其余部分?
- crystal-reports - Crystal Reports - 如果组有超过 1 个“详细信息”,则运行总计会重复
- javascript - 如何在 handleMouseEnter 事件上使用效果暂停 setTimeout。在 handleMouseLeaveEvent 上继续 setTimeOout?
- r - 如何使用 cat() 编写标头向量和数据帧