使用主动/被动冗余模型的应用程序应如何使用 Kubernetes 进行容器化?

2023-11-29

我有一个在虚拟机上运行的分布式应用程序,其中有一个以主动/被动模式运行的服务。主用虚拟机通过公网IP提供服务。如果主动虚拟机发生故障,公共 IP 将移至被动虚拟机,被动虚拟机将变为主动虚拟机并开始提供服务。

这种模式如何适合 kubernetes 管理的容器化应用程序?

如果我使用副本数=1的复制控制器,在节点/minion发生故障的情况下,复制控制器将在另一个minion中重新安排pod(=我当前应用程序中的VM),但这可能会导致与我当前的解决方案相比较长的停机时间其中仅移动 IP 资源。

如果我使用副本 = 2 的复制控制器,那么我需要对两个 Pod(一个具有公共 IP,另一个没有)进行不同的配置,这是反模式吗?此外,kubernetes 中没有设计方法来支持虚拟 IP(在 Pod 周围移动)?

或者我应该使用replicas = 2并自己实现一些东西来管理IP(或者也许使用pacemaker?这会引入另一个问题:我的应用程序,kubernetes和pacemaker/corosync中将有集群管理)

那么,这应该怎么做呢?


听起来您的应用程序正在充当负载均衡器的两个虚拟机之间使用自己的主选举方案,并且您在内部知道哪一个当前是主虚拟机。

如今,在 Kubernetes 中,可以使用跨 pod(主节点和备用节点)的服务和只为当前活动的主节点返回成功的就绪探针来实现这一点。就绪性探测失败会将 Pod 从端点列表中删除,因此不会将任何流量定向到非主节点。当您需要进行故障转移时,备用数据库将向就绪探针报告健康状况(主数据库将报告不健康或无法访问),此时服务的流量将仅落在备用数据库(现在充当主数据库)上。

您可以使用外部 IP 创建跨两个 Pod 的服务,以便可以从集群外部访问该服务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用主动/被动冗余模型的应用程序应如何使用 Kubernetes 进行容器化? 的相关文章

  • 无法在 Istio 代理后面的 k8s 中建立与 VerneMQ 集群的 mqtt 连接

    我正在设置 k8s 本地 k8s 集群 对于测试 我在使用 kubeadm 设置的虚拟机上使用单节点集群 我的要求包括在 k8s 中运行 MQTT 集群 vernemq 并通过 Ingress istio 进行外部访问 无需部署 ingre
  • GKE 集群无法从同一项目(GitLab Kubernetes 集成)中的 GCR 注册表中提取 (ErrImagePull):为什么?

    因此 在谷歌搜索了一下之后 被那些在 Pull Secrets 方面遇到麻烦的人污染了 我将其发布在这里 以及 GCP 支持 据我所知将更新 我通过 GitLab Kubernetes 集成创建了一个集群 文档 https about gi
  • Istio 直接 Pod 到 Pod 通信

    我在使用 Istio 部署的 Pod 与 Pod 进行通信时遇到问题 我实际上需要它与 Istio 合作进行 Hazelcast 发现 https github com hazelcast hazelcast kubernetes issu
  • Prometheus - 监控容器中的命令输出

    我需要监控 eks 集群中具有 nfs 挂载路径的许多旧容器 使用 nfs client helm 图表映射容器 i 中的 nfs 目录 我需要监视我的安装路径何时由于某种原因丢失 而我发现做到这一点的唯一方法是在容器中执行命令 bin b
  • kubectl:描述与获取 -o <格式>

    在 kubectl 中 两者describe and get o
  • 跨命名空间共享秘密

    有没有办法在 Kubernetes 中跨命名空间共享秘密 我的用例是 我的所有命名空间都有相同的私有注册表 并且我想避免为每个命名空间创建相同的秘密 秘密 API 对象驻留在命名空间中 它们只能由同一命名空间中的 pod 引用 基本上 您必
  • 如何找出 Kubernetes 中可用的端口?

    我想在 kubernetes 集群中的不同端口上运行多个服务 并且想知道如何检查哪些端口可用并且不会与我的服务产生任何冲突 我还想知道每个端口上的服务名称 以便我可以更好地理解我的配置 有类似的问题涉及验证哪个NodePorts已经在使用中
  • 如何从 Next.js 应用程序访问 Kubernetes 容器环境变量?

    在我的 next config js 中 我有一个如下所示的部分 module exports serverRuntimeConfig Will only be available on the server side mySecret s
  • Kubernetes:无法创建存储库

    我正在跟进Kubernetes 入门指南 http kubernetes io docs hellonode 一切都很顺利 直到我跑步 gcloud docker push gcr io
  • 在 Kubernetes API 中启用 CORS

    有没有办法在 Kubernetes API 上启用 CORS 以便我可以使用不同的域向 Kubernetes API 发送 ajax 请求 通过将 cors allowed origins http 参数添加到 etc default ku
  • Kubernetes 中的暂停镜像有什么用?

    看来在 Windows 上 Kubernetes 启动了一个pause创建的每个 Pod 的图像 这个暂停图像的目的是什么 我在哪里可以找到更多有关它的文档 The pause容器是保存 Pod 网络命名空间的容器 Kubernetes 创
  • 如何使用 hostPath 将单个文件映射到 kubernetes pod 中?

    我有一个自己的 nginx 配置 home ubuntu workspace web conf由脚本生成 我更喜欢把它放在下面 etc nginx conf d除了default conf 下面是nginx yaml apiVersion
  • 运行 istio-proxy 后启动容器/pod

    我正在尝试使用 Istio 和 Envoy 通过 Kubernetes 实现服务网格 我能够设置服务和 istio proxy 但无法控制容器和 istio proxy 的启动顺序 我的容器是第一个启动的 并尝试通过 TCP 访问外部资源
  • kubectl 运行本地 docker 镜像 - ImagePullBackOff 状态

    我在本地计算机上构建 docker 映像 并尝试使用 kubectl 拉取 docker 映像 但它没有启动 docker 容器 图像以 docker 命令开头 REPOSITORY TAG IMAGE ID CREATED SIZE to
  • 如何为容器设置正确的 cpu 毫核?

    我想要优化配置 CPU 核心 而不会分配过多或不足 如何测量给定容器所需的 CPU 毫核 它还带来了一个问题 即代理将根据 CPU 消耗将多少流量发送到任何给定的 Pod 以便我们可以最佳地使用计算 目前我发送请求并进行监控 kubectl
  • kubernetes/openshift 中的请求与限制 cpu

    我在为 Openshift 中的 pod 选择正确的请求和限制设置时遇到一些困境 一些数据 在启动期间 应用程序需要至少 600 毫核才能在 150 秒内完成就绪检查 启动后 200 毫核应该足以让应用程序保持空闲状态 所以我从文档中的理解
  • 各种 Istio 端口是如何使用的?

    Question 我正在尝试学习 Istio 并且正在设置我的 Istio Ingress Gateway 当我设置它时 有以下端口选项 如此处所示 https istio io latest docs reference config i
  • 如何将新的 Kubernetes Minion 添加到当前集群

    我有一个运行在 3 台服务器上的 Kubernetes 集群 一台主服务器和 2 台服务器 我想添加另一个小黄人 是否可以添加 Minion 而无需再次进行完整安装 到目前为止 在寻找执行此操作的指南时 我只能找到有关建立整个集群的优秀指南
  • 如何将 configmap 附加到 Kubernetes 中的部署?

    根据此处找到的说明 https kubernetes io docs tasks access application cluster connecting frontend backend https kubernetes io docs
  • Kubernetes WatchConnectionManager:执行失败:HTTP 403

    我遇到错误Expected HTTP 101 response but was 403 Forbidden 在我使用以下命令设置新的 Kubernetes 集群之后Kubeadm当我提交下面遇到的 pyspark 示例应用程序时 只有一个主

随机推荐