gpt4 book ai didi

c++ - 将 C++ 应用程序部署到 Google Cloud Platform Kubernetes 引擎

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:27 26 4
gpt4 key购买 nike

就我的理解而言,Kubernetes 引擎旨在部署可以负载平衡的应用程序,例如,拥有一个对字符串进行 unhash 的应用程序。如果 pod-a 处于高负载,它将被卸载到 pod-b。如果我在这里错了,请纠正我,因为如果这是错误的,我接下来的问题就没有意义了。


探索了几个小时后,我似乎无法弄清楚如何将 C++ 应用程序部署到 Kubernetes 集群。我该怎么做?

我尝试过的:

我尝试按照指南进行操作: Interactive Tutorial - Deploying an App ,但是,我无法理解如何将我的 C++ 应用程序作为可以部署的镜像。

什么是 C++ 应用程序:

目前它代理 TCP 流量到另一个由客户的主机名指定的主机。它几乎是一个反向代理,但是,这不是一个 HTTP 应用程序。

最佳答案

Kubernetes 是正确的选择吗?

-

Kubernetes is really useful负载平衡工作负载,在出现故障时提供高可用性以加快测试过程,并通过不同的策略在生产推出期间提高安全性,并通过隔离提高安全性。

但是,并非所有类型的工作负载都能利用 Kubernetes 引入的所有功能

  • 例如,如果您的应用程序以需要稳定数量的 RAM 和 CPU 的方式构建,代码也非常稳定并且您只需要一个拷贝,那么 Kubernetes 和容器可能不是最佳选择(即使您可以完美地使用它们),您也应该在大型单体服务器/虚拟机上实现所有内容。

但如果您需要将它部署在不同的云提供商上,并且它应该每天只运行几个小时,那么也许它也可以利用这些功能。 如果您愿意添加一个层,请确保您需要它引入的功能,否则它只是一种开销

请注意,Kubernetes 无法单独拆分您的工作负载。因此,我不知道您所说的“如果 pod-a 处于高负载状态,它将被卸载到 pod-b”是什么意思,可能是的,但您必须指示它这样做所以。

Kubernetes 负责运行您的 POD,确保已安排在有足够内存和 CPU 可用的节点上 according to your specification , 你可以设置 autoscaling procedures以及支持高工作负载期间或scale even the cluster本身。您的应用程序应该以支持分而治之模式的方式创建,否则您可能会有三个节点,一个 pod 在一个节点上运行,两个空闲和一个您本可以避免的开销。

  • 如果您的 C++ 应用程序 POD 取消哈希字符串并且单个请求可能消耗节点的所有资源Kubernetes 将不会“吐出”初始工作负载,也不会为您创建更多 PODS 以跨集群调度它们! 当然你可以实现类似的东西,但它不是免费的,你可能需要修改你的 C++ 代码。

当然,您可以利用 Kubernetes,在其上运行您的应用程序非常简单,但您可能需要修改架构中的某些内容才能充分利用这些功能。


部署C++应用

在 Kubernetes 中部署应用程序的过程非常标准。在本地开发它,创建一个包含您需要的所有库和组件的 Docker 镜像,在本地测试它,将它推送到注册表,然后在 Kubernetes 中创建部署。

假设您在本地文件夹中拥有运行应用程序和可执行文件所需的所有资源。创建 Docker 文件。

Example , 修改以实现您的应用程序,我已将其作为示例报告以显示语法:

# Download base image, Ubuntu 16.04 (Xenial Xerus)
FROM ubuntu:16.04

# Update software repository
RUN apt-get update

# Install nginx, php-fpm and supervisord from the Ubuntu repository
RUN apt-get install -y nginx php7.0-fpm supervisor

# Define the environment variable
ENV nginx_vhost /etc/nginx/sites-available/default
[...]

# Enable php-fpm on the nginx virtualhost configuration
COPY default ${nginx_vhost}
[...]
RUN chown -R www-data:www-data /var/www/html

# Volume configuration
VOLUME ["/etc/nginx/sites-enabled", "/etc/nginx/certs", "/etc/nginx/conf.d", "/var/log/nginx", "/var/www/html"]

# Configure services and port
COPY start.sh /start.sh
CMD ["./start.sh"]
EXPOSE 80 443

构建它运行:

export PROJECT_ID="$(gcloud config get-value project -q)"
docker build -t gcr.io/${PROJECT_ID}/hello-app:v1 .
gcloud docker -- push gcr.io/${PROJECT_ID}/hello-app:v1
kubectl run hello --image=gcr.io/${PROJECT_ID}/hello-app:v1 --port [port number if needed]

More information is here .

关于c++ - 将 C++ 应用程序部署到 Google Cloud Platform Kubernetes 引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49351299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com