当前位置: 首页 > 知识库问答 >
问题:

kubernetes中每个部署的命名空间

杜焕
2023-03-14

我需要在K8S中管理部署的建议。我需要使用gitops进行蓝色/绿色部署,这基本上给我留下了两个选择:

这将需要使用helm来管理删除资源等等,并通过helm通过代理管理blue/green,而这又将需要创建重复的部署模板(用于green和blue)。

优点:由掌舵人管理,会删除已删除的资源;似乎是一般的做法。

缺点:由helm管理,可能会搞砸一些东西,特别是在多个失败的部署中;可以创建雪花命名空间,如果有人快速修复/添加一些资源,并且不会提交回购;

只需将每个版本部署到它的名称空间,如web-front-2142,检查,升级到ingress,然后删除所有其他web-front-[\d]我仍然可以使用helm模板引擎,但不使用tiller。不需要依赖管理资源的分蘖--生产命名空间提升后,命名空间将被删除。

缺点:为单数资源(如Ingress)分离名称空间;似乎不是k8s当初的设计方式,能够导致不可预见的后果;包括spinnaker在内的所有部署工具都围绕单名称空间部署。

需要一些建议和最佳实践!:)

共有1个答案

梁浩涆
2023-03-14

正式文件提到以下内容:

命名空间是为了在许多用户分布在多个团队或项目中的环境中使用。对于有几到几十个用户的集群,您应该根本不需要创建或考虑名称空间。在需要名称空间提供的功能时开始使用它们。

没有必要仅仅为了分离稍微不同的资源,例如同一软件的不同版本而使用多个名称空间:使用标签来区分同一名称空间内的资源。

其他资源(例如GCPB)描述了命名空间的使用,主要用于为不同的阶段、团队、项目和客户机分离Kubernetes对象。
因此您可以假设为蓝绿部署或canary部署使用单独的命名空间并不是一种很常见的方法。

 类似资料:
  • 我现在正在使用Kubernetes测试在不同名称空间中的部署。在这里,我使用了Kubernetes的掌舵图。在我的图表中,我有deployment.yaml和service.yaml。 当我使用Helm命令定义“namespace”参数时,它不起作用。当我读到这篇文章时,我发现-“helm2 is not overwrite by the--namespace parameter”这个语句。 我尝

  • 我有一个库伯内特斯集群,同一个应用程序运行几次,但名称空间不同。想象一下 现在我需要在所有这些 Pod 中每 10 分钟执行一次 cronjob。路径每次都是一样的。 有没有“最佳方法”来实现这一目标? 我在想一个以“CronJob”类型运行的 kubectl 图像,如下所示: 但我很确定这不是解决问题的正确方法。

  • 官方文档中有bug吗?我看错了吗?

  • 部署为Pod的Apache ignite节点使用TcpDiscoveryKubernetesIpFinder发现彼此,但无法通信,因此不加入同一个集群。 我希望Pod能够通信,并最终得到以下拓扑拓扑快照:

  • Im使用jaxb生成XML请求。下面是所有的代码细节。我也尝试过包信息的东西,但它不适合我。就像我想在每个对象XML标记上添加命名空间一样。 希望你们明白我的意思。我是做错了什么还是遗漏了什么?或者这种事情在JAXB Java中是可能的。 所需输出 我得到了什么 下面是我的JAXB父Java对象类 下面是我的内部JAXB对象Java类 下面是我的AcctChgRecType JAXB对象类

  • 我在默认命名空间中创建了一个serviceaccount(dm sa),并在clusterRole(绑定到PodSecurityPolicy)和clusterRoleBinding中使用了这个serviceaccount。接下来,在部署yaml(将在名称空间“dm”中运行)中,我在模板:spec下指定了serviceAccount:dm和serviceAccountName:default。这样,