如何在一个 Kubernetes 集群中的命名空间之间隔离 Keycloak Infinispan,以防止 KC pod 相互发现和同步

     2023-02-19     136

关键词:

【中文标题】如何在一个 Kubernetes 集群中的命名空间之间隔离 Keycloak Infinispan,以防止 KC pod 相互发现和同步【英文标题】:How can isolate Keycloak Infinispan between namespaces in one Kubernetes cluster to prevent KC pod from discovering and synchronizing from one other 【发布时间】:2022-01-15 07:16:51 【问题描述】:

目前,我有一个具有 2 个命名空间的 Kubernetes:NS1 和 NS2。我正在使用jboss/keycloak Docker 镜像。

我在这 2 个命名空间中运行 2 个 Keycloak 实例,我希望它们能够独立运行。 但对于 Keycloak 中的 Infinispan 缓存,情况并非如此。我遇到了一个问题,当 NS2 中的 KC pod 被声明为“Crash Loopback”时,NS1 中的所有 KC 会话都会多次失效。

每当 NS2 中的“Crash Loopback”KC pod 尝试重新启动时,日志如下所示:

15:14:46,784 INFO [org.infinispan.CLUSTER] (remote-thread--p10-t412) [Context=clientSessions] ISPN100002: Starting rebalance with members [keycloak-abcdef, keycloak-qwerty], phase READ_OLD_WRITE_ALL, topology id 498

keycloak-abcdef 是 NS1 中的 KC pod,keycloak-qwerty 是 NS2 中的 KC pod。因此,NS1 中的 KC pod 可以看到 NS2 中的 KC pod 并受到其影响。

经过研究,我看到 Keycloak 使用 Infinispan 缓存来管理会话数据,而 Infinispan 使用 JGroups 使用默认方法 PING 发现节点。我假设这种机制是“无效会话”问题的根本原因,因为它会尝试联系同一个集群(甚至不同的命名空间)中的其他 KC pod 来执行诸如同步之类的操作。

有没有什么方法可以在命名空间之间隔离 Infinispan 在 Keycloak 中的工作?

谢谢!

【问题讨论】:

我会使用 JDBC_PING 进行发现,因此只有使用相同数据库的节点才能发现彼此。 谢谢@JanGaraj。它对我有用。 【参考方案1】:

发布评论作为社区 wiki 答案以获得更好的可见性


我会使用JDBC_PING 进行发现,因此只有使用相同数据库的节点才能相互发现

【讨论】:

你好@bkl。如果可以解决您的问题,请考虑 accepting the answer。

在 Kubernetes 中拥有多个命名空间和多个集群有啥区别

】在Kubernetes中拥有多个命名空间和多个集群有啥区别【英文标题】:WhatisthedifferencebetweenhavingmultiplenamespaceandmultipleclusterinKubernetes在Kubernetes中拥有多个命名空间和多个集群有什么区别【发布时间】:2020-10-1813:22:21【问题描述】:... 查看详情

Kubernetes 如何从另一个命名空间访问服务

】Kubernetes如何从另一个命名空间访问服务【英文标题】:Kuberneteshowtoaccessaservicefromanothernamespace【发布时间】:2018-12-1118:06:28【问题描述】:我正在使用https://github.com/Yolean/kubernetes-kafka在minikube上运行Kubernetes我暴露了一个外部端... 查看详情

无法在 Kubernetes 集群中执行 GitLab Runner:无法在命名空间“gitlab”中的 API 组“”中创建资源“秘密”

】无法在Kubernetes集群中执行GitLabRunner:无法在命名空间“gitlab”中的API组“”中创建资源“秘密”【英文标题】:NotabletoexecuteGitLabRunnerinKubernetescluster:cannotcreateresource"secrets"inAPIgroup""inthenamespace"gitlab"【发... 查看详情

防止 Kubernetes 中的命名空间间通信

】防止Kubernetes中的命名空间间通信【英文标题】:Preventinter-namespacecommunicationinKubernetes【发布时间】:2018-07-3109:06:09【问题描述】:我是Kubernetes网络的新手。我们将Kubernetes集群分成一组命名空间(例如namespace-a、namespace-b)。每... 查看详情

如何从默认 kops 命令更改 kubernetes 上下文中的默认命名空间?

】如何从默认kops命令更改kubernetes上下文中的默认命名空间?【英文标题】:Howtochangedefaultnamespaceinkubernetes\'contextfromdefaultkopscommand?【发布时间】:2021-11-2608:17:00【问题描述】:我使用kopsexportkubecfg$NAME为kubectl创建上下文,但是,... 查看详情

Kubernetes 命名空间默认服务帐户

】Kubernetes命名空间默认服务帐户【英文标题】:Kubernetesnamespacedefaultserviceaccount【发布时间】:2019-03-3011:03:34【问题描述】:如果未指定,Pod将在默认服务帐户下运行。如何查看默认服务帐号的权限?我们是否需要将它与每个pod... 查看详情

kubernetes配置pod和容器(五)应用资源配额和限制

...面的资源:Namespace,ResourceQuota,和LimitRange。你必须有一个Kubernetes集群,并且kubectl命令行工具能够和你的集群沟通。如果你还没有集群,可以使用Minikube创建一个集群。集群管理员操作多用户团队的集群,集群管理员希望可以控制... 查看详情

命名空间的 kubernetes 集群信息

】命名空间的kubernetes集群信息【英文标题】:kubernetescluster-infoforanamespace【发布时间】:2018-08-0503:54:59【问题描述】:我将这两个服务部署到我的集群下命名空间prisma:kubectlgetservices-nprismaNAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGEdatabaseClust... 查看详情

如何在 Kubernetes 中执行清单策略?

】如何在Kubernetes中执行清单策略?【英文标题】:HowtoenforcepoliciesformanifestsinKubernetes?【发布时间】:2020-03-0712:40:20【问题描述】:我已经建立了一个基于Kubernetes的自助服务平台,我们为每个团队创建命名空间并允许他们“在命... 查看详情

限制 Kubernetes 服务帐户访问特定命名空间

】限制Kubernetes服务帐户访问特定命名空间【英文标题】:LimittheKubernetesserviceaccountaccessspecificnamespace【发布时间】:2018-10-0313:20:58【问题描述】:我创建了一个包含默认集群角色“view”的服务帐户,这使得它可以通过查看权限访... 查看详情

kubernetes集群命名空间(namespace)(代码片段)

Kubernetes集群命名空间(Namespace)一、命名空间(namespace)作用二、查看namespace三、查看namespace里的资源四、创建namespace4.1命令创建4.2YAML文件创建五、删除namespace5.1命令删除5.2YAML文件删除一、命名空间(namespace)作用Namespace是... 查看详情

kubernetes集群命名空间(namespace)(代码片段)

Kubernetes集群命名空间(Namespace)一、命名空间(namespace)作用二、查看namespace三、查看namespace里的资源四、创建namespace4.1命令创建4.2YAML文件创建五、删除namespace5.1命令删除5.2YAML文件删除一、命名空间(namespace)作用Namespace是... 查看详情

如何使用基本身份验证创建具有适当权限的用户以列出 kubernetes v1.13 中的命名空间

】如何使用基本身份验证创建具有适当权限的用户以列出kubernetesv1.13中的命名空间【英文标题】:Howtocreateanuserwhichhasappropriatepermissiontolistnamespacesinkubernetesv1.13usingBasicAuth【发布时间】:2019-07-1812:53:16【问题描述】:我正在开发一... 查看详情

Kubernetes 中的网络策略问题

】Kubernetes中的网络策略问题【英文标题】:Issuewithnetworkpoliciesinkubernetes【发布时间】:2020-08-2400:56:22【问题描述】:创建一个命名空间取证取证命名空间内的所有pod都不能与外界通信(出口隔离)在默认命名空间中创建一个名... 查看详情

新的 Kubernetes 服务帐户似乎具有集群管理员权限

】新的Kubernetes服务帐户似乎具有集群管理员权限【英文标题】:NewKubernetesserviceaccountappearstohaveclusteradminpermissions【发布时间】:2020-06-1913:36:45【问题描述】:我遇到了新创建的Kubernetes服务帐户的奇怪行为。看来他们的令牌在我... 查看详情

如何在 Kubernetes 中切换命名空间

】如何在Kubernetes中切换命名空间【英文标题】:Howtoswitchnamespaceinkubernetes【发布时间】:2019-08-1719:30:06【问题描述】:说,我有两个命名空间k8s-app1和k8s-app2我可以使用以下命令列出来自特定命名空间的所有podkubectlgetpods-n<namesp... 查看详情

Kubernetes根据命名空间设置部署副本数

】Kubernetes根据命名空间设置部署副本数【英文标题】:Kubernetessetdeplomentnumberofreplicasbasedonnamespace【发布时间】:2018-09-0813:22:32【问题描述】:我已将Kubernetes集群拆分为两个不同的命名空间;staging和production,目标是让生产部署... 查看详情

删除所有 kubernetes 命名空间中的所有 pod 的命令

】删除所有kubernetes命名空间中的所有pod的命令【英文标题】:Commandtodeleteallpodsinallkubernetesnamespaces【发布时间】:2016-02-0404:48:17【问题描述】:在查看文档时,有一个API调用来删除单个pod,但是有没有办法删除所有命名空间中的... 查看详情