Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Deployment 关于kubernetes部署的问题 我们希望归档以下内容: 谷歌Kubernetes上运行的Magento商店 通过配置文件部署,如stage.yaml、live.yaml等。 PHP7.2 MySQL 5.6/MariaDB 雷迪斯 阿尔卑斯山 https Magento和MySQL的持久卷声明_Deployment_Kubernetes_Google Kubernetes Engine - Fatal编程技术网

Deployment 关于kubernetes部署的问题 我们希望归档以下内容: 谷歌Kubernetes上运行的Magento商店 通过配置文件部署,如stage.yaml、live.yaml等。 PHP7.2 MySQL 5.6/MariaDB 雷迪斯 阿尔卑斯山 https Magento和MySQL的持久卷声明

Deployment 关于kubernetes部署的问题 我们希望归档以下内容: 谷歌Kubernetes上运行的Magento商店 通过配置文件部署,如stage.yaml、live.yaml等。 PHP7.2 MySQL 5.6/MariaDB 雷迪斯 阿尔卑斯山 https Magento和MySQL的持久卷声明,deployment,kubernetes,google-kubernetes-engine,Deployment,Kubernetes,Google Kubernetes Engine,我现在学习kubernetes已经有几个星期了,但我正在为一些设计概念和一些基本问题而挣扎 我第一次尝试docker compose,而不是通过Dockerfiles创建docker图像,但我被helm和kubectl绊倒了。现在我遇到了构建吊舱和构建部署。现在我知道很多不同的事情,但如果能提供一个真实的例子或一些最佳实践知识,我将不胜感激。谷歌很棒。。但似乎不止一种方法 1.关于豆荚 我明白,吊舱应该能够很容易地被替换/销毁/重建 像这样的吊舱配置更好吗 -nginx容器 -php容器 -my

我现在学习kubernetes已经有几个星期了,但我正在为一些设计概念和一些基本问题而挣扎

我第一次尝试docker compose,而不是通过Dockerfiles创建docker图像,但我被helm和kubectl绊倒了。现在我遇到了构建吊舱和构建部署。现在我知道很多不同的事情,但如果能提供一个真实的例子或一些最佳实践知识,我将不胜感激。谷歌很棒。。但似乎不止一种方法

1.关于豆荚 我明白,吊舱应该能够很容易地被替换/销毁/重建

像这样的吊舱配置更好吗 -nginx容器 -php容器 -mysql容器 -redis容器 编辑:正如我刚刚读到的,POD共享一个IP地址,所以在这里插入mysql或redis是没有意义的,对吗

或者最好是一个带有 -mysql容器 还有一个装有集装箱的吊舱 -nginx -php

还有一个有一个 -redis容器

2.在本地装载持久卷声明或远程webroot(如/var/www/html)以进行工作。 本地webroot的内容来自git repo

3.类型:吊舱与类型:部署的处理 我可以创建一个yaml文件来定义我的pod类型中的容器:pod。但是我也可以定义一个部署。yaml类型:部署

我是否必须在deployment.yaml中引用我的pod.yaml,或者部署是否包括所有pod配置并替换pod.yaml?

关于pod。 你可以用你需要的任何东西创建一个吊舱。但那将是一个非常肥的豆荚。请记住,pod仅在一个节点上运行,不可能在一个节点上部分运行一个pod,而在另一个节点上部分运行一个pod。一个pod仅在一个节点上运行。这意味着从可伸缩性的角度来看,许多小吊舱比一个大吊舱好。许多小型POD通常也在节点之间提供更均匀的资源和负载分布

此外,当您更新pod中的一个容器时,整个pod将重新启动。所以,如果应用程序和数据库在同一个pod中—如果更新应用程序代码—数据库也将重新启动。不酷,嗯

但在某些情况下,在一个吊舱中运行多个容器可能是合理的。记住,pod中的所有容器都共享网络地址和本地主机。因此pod中的容器具有非常低的网络延迟

此外,pod内的容器可以彼此共享卷。这在某些情况下也很重要

持久卷 您不能将Git回购装载到pod中。至少你不该这么做。您应该将webroot打包到Docker映像中,并在Kubernetes中运行它。这应该由Jenkins来完成,它可以建立在commit的基础上

或者,如果要在部署副本之间共享文件,可以将文件放置到共享的永久卷上。这也是可能的,您必须找到可以在多个POD之间共享的所谓读写万用卷,如NFS或GlusterFS。

关于POD。 你可以用你需要的任何东西创建一个吊舱。但那将是一个非常肥的豆荚。请记住,pod仅在一个节点上运行,不可能在一个节点上部分运行一个pod,而在另一个节点上部分运行一个pod。一个pod仅在一个节点上运行。这意味着从可伸缩性的角度来看,许多小吊舱比一个大吊舱好。许多小型POD通常也在节点之间提供更均匀的资源和负载分布

此外,当您更新pod中的一个容器时,整个pod将重新启动。所以,如果应用程序和数据库在同一个pod中—如果更新应用程序代码—数据库也将重新启动。不酷,嗯

但在某些情况下,在一个吊舱中运行多个容器可能是合理的。记住,pod中的所有容器都共享网络地址和本地主机。因此pod中的容器具有非常低的网络延迟

此外,pod内的容器可以彼此共享卷。这在某些情况下也很重要

持久卷 您不能将Git回购装载到pod中。至少你不该这么做。您应该将webroot打包到Docker映像中,并在Kubernetes中运行它。这应该由Jenkins来完成,它可以建立在commit的基础上

或者,如果要在部署副本之间共享文件,可以将文件放置到共享的永久卷上。这也是可能的,您必须找到所谓的ReadWriteMany卷,如NFS或GlusterFS,它们可以在多个POD之间共享

通过配置文件部署,如stage.yaml、live.yaml等

我发现这很管用。可以在YAML文件中使用一组相应的值部署头盔图表,这些值可用于配置总体部署的各个部分

掌舵的一个有用的部分是有。 如果你说你需要MySQL,你可以安装stable/MySQL并获得一个预打包的安装,而不用担心有状态集、持久卷等的具体细节

您可以将这里建议的所有内容打包到一个图表中,其中包含多个针对不同Kubernetes部件的模板化YAML文件

类型:吊舱与类型:部署的处理

部署将创建一些可配置数量的pod相同副本。部署规范中的pod规范包含它需要的所有细节。这个 部署YAML替换现有的pod YAML

通常不会直接创建豆荚。尤其是升级生命周期,手工操作可能有点棘手,而部署可以为您完成所有繁重的工作

有一个像…这样的吊舱配置更好吗

记住,一般情况下,部署会创建一定数量的pod副本。当您拥有软件的更新版本时,您可以将其推送到Docker映像存储库,并更改部署规范中的映像标记。Kubernetes将使用新的pod规范启动pod的其他副本,然后销毁旧的副本

这里有两条基本规则:

如果组件的生命周期不同,则它们需要处于不同的部署中。例如,您不希望在更新代码时破坏数据库,因此这些数据库需要在单独的部署中

如果复制副本的数量不同,则它们需要处于不同的部署中。您的主服务可能需要3或5个副本,具体取决于负载;nginx只是路由HTTP消息,可能只需要1或3条;数据库无法复制,只能使用1

在您展示的设置中,我有四个独立的部署,分别用于MySQL、Redis、nginx代理和主应用程序

webroot的内容来自git repo

最简单的方法是将其构建到映像中,可能是nginx映像

如果它的大小是巨大的千兆字节,那么您可能会发现将这个静态内容完全托管在Kubernetes之外的某个地方会更有用。任何有静态文件托管的东西都可以正常工作

据我所知,没有一种简单的方法可以将任意内容复制到一个持久性卷中,而无需编写容器

你的问题根本没有提到Kubernetes服务。这些都是核心,你应该仔细阅读。特别是当您的应用程序与两个数据存储对话时,它将直接引用服务而不是MySQL pod

根据您的环境,也考虑在Kubernetes之外托管数据库的可能性。它们的生命周期与您的应用程序容器非常不同:您永远不希望停止数据库,也不希望数据库的托管存储被意外删除。您可能会发现使用裸机数据库设置或使用托管数据库设置更容易、更安全。我个人的经验主要是使用AWS,您可以将RDS用于MySQL实例,将Elasticache用于Redis,将S3用于上面讨论的静态文件托管

通过配置文件部署,如stage.yaml、live.yaml等

我发现这很管用。可以在YAML文件中使用一组相应的值部署头盔图表,这些值可用于配置总体部署的各个部分

掌舵的一个有用的部分是有。如果你说你需要MySQL,你可以安装stable/MySQL并获得一个预打包的安装,而不用担心有状态集、持久卷等的具体细节

您可以将这里建议的所有内容打包到一个图表中,其中包含多个针对不同Kubernetes部件的模板化YAML文件

类型:吊舱与类型:部署的处理

部署将创建一些可配置数量的pod相同副本。部署规范中的pod规范包含它需要的所有细节。这个 部署YAML替换现有的pod YAML

通常不会直接创建豆荚。尤其是升级生命周期,手工操作可能有点棘手,而部署可以为您完成所有繁重的工作

有一个像…这样的吊舱配置更好吗

记住,一般情况下,部署会创建一定数量的pod副本。当您拥有软件的更新版本时,您可以将其推送到Docker映像存储库,并更改部署规范中的映像标记。Kubernetes将使用新的pod规范启动pod的其他副本,然后销毁旧的副本

这里有两条基本规则:

如果组件的生命周期不同,则它们需要处于不同的部署中。例如,您不希望在更新代码时破坏数据库,因此这些数据库需要在单独的部署中

如果复制副本的数量不同,则需要 在不同的部署中。您的主服务可能需要3或5个副本,具体取决于负载;nginx只是路由HTTP消息,可能只需要1或3条;数据库无法复制,只能使用1

在您展示的设置中,我有四个独立的部署,分别用于MySQL、Redis、nginx代理和主应用程序

webroot的内容来自git repo

最简单的方法是将其构建到映像中,可能是nginx映像

如果它的大小是巨大的千兆字节,那么您可能会发现将这个静态内容完全托管在Kubernetes之外的某个地方会更有用。任何有静态文件托管的东西都可以正常工作

据我所知,没有一种简单的方法可以将任意内容复制到一个持久性卷中,而无需编写容器

你的问题根本没有提到Kubernetes服务。这些都是核心,你应该仔细阅读。特别是当您的应用程序与两个数据存储对话时,它将直接引用服务而不是MySQL pod


根据您的环境,也考虑在Kubernetes之外托管数据库的可能性。它们的生命周期与您的应用程序容器非常不同:您永远不希望停止数据库,也不希望数据库的托管存储被意外删除。您可能会发现使用裸机数据库设置或使用托管数据库设置更容易、更安全。我个人的经验主要是使用AWS,你可以使用RDS作为MySQL实例,使用Elasticache作为Redis实例,使用S3作为上面讨论的静态文件宿主。

好的,我现在得到了pod结构。kubernetes文档在本地主机、ipadress等方面也很有用。使用php/nginx/redis构建一个pod有意义吗?或者最好使用一个单独的redis容器来构建一个pod?我已经将我的本地文件夹复制到docker映像中,但是我如何才能在本地mac上挂载此文件夹?我不知道如何在本地挂载远程卷,顺便说一句,您可能会看到-这是一个在本地处理远程Kube群集的工具。关于php/nginx/redis,redis应该是单独的pod。关于nginx/php,我会在生产中将它们分开,以便您可以独立地扩展nginx和php。但是在开发过程中没有太大区别。好的,我现在得到了豆荚结构。kubernetes文档在本地主机、ipadress等方面也很有用。使用php/nginx/redis构建一个pod有意义吗?或者最好使用一个单独的redis容器来构建一个pod?我已经将我的本地文件夹复制到docker映像中,但是我如何才能在本地mac上挂载此文件夹?我不知道如何在本地挂载远程卷,顺便说一句,您可能会看到-这是一个在本地处理远程Kube群集的工具。关于php/nginx/redis,redis应该是单独的pod。关于nginx/php,我会在生产中将它们分开,以便您可以独立地扩展nginx和php。但在发展中,这并没有多大区别。