【问题标题】:How to configure DNS_PING work with kubernetes StatefulSet如何使用 kubernetes StatefulSet 配置 DNS_PING
【发布时间】:2022-05-13 18:59:45
【问题描述】:

我想在 kubernetes 环境中设置一个 inifinispan 集群。

DNS_PING 是发现协议。它适用于使用 DeploymentConfig 设置部署的 pod。但是,当我们将设置从 DeploymentConfig 切换到 StatefulSet 时,它就不起作用了。

这是因为我们不能直接用名字(pod name)查询一个pod的IP,而是用(pod name).(headless service created)模式。

jgroups 对我来说是新的。感谢是否有人可以建议我们如何为这种情况正确配置 DNS_PING。非常感谢。

【问题讨论】:

  • 嗯,不要以为我有为此准备好的示例。我最近写了 (infinispan-kubernetes)[github.com/infinispan-demos/infinispan-kubernetes] 示例,但我认为它使用了需要集群角色绑定的KUBE_PING。应该可以将该示例切换到 DNS_PING,但我还没有开始这样做......
  • 我也许可以在接下来的几天内尝试一下。您能说出您使用的是哪个 Kubernetes 发行版吗?是 OpenShift 吗?迷你库?还是其他?
  • 嗨@GalderZamarreño,是的,我用 OpenShift 试过了。
  • 抱歉没有时间。模板 here 用于专用 OpenShift 服务。他们使用有状态集和 DNS ping,你可能会在那里找到你想要的。
  • 嗨@GalderZamarreño,感谢您的帮助。集群可以使用有状态集启动并运行。但是,当其中一个节点消失时,我们会遇到这样的错误消息。似乎 FD 试图通过使用 pod 名称 (oauth2-1) 03:43:37,097 WARN [org.jgroups.protocols.TCP] (TQ-Bundler-7,ejb,oauth2) 直接连接到主机来恢复连接-2) JGRP000032: oauth2-2: oauth2-1 没有物理地址,丢弃消息

标签: dns kubernetes infinispan jgroups


【解决方案1】:

我正在做类似的事情,希望对您有所帮助:

当您在 statefulset 上启动 pod 时,您可以使用内部 shell 检索本地 DNS 并显示主机文件,如下所示:

% kubectl exec custom-infinispan-0 -it -- sh
sh-4.4$ cat /etc/hosts
# Kubernetes-managed hosts file.
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
fe00::0 ip6-mcastprefix
fe00::1 ip6-allnodes
fe00::2 ip6-allrouters
10.xxx.xx.xx    stafulset-0.<your-service>.default.svc.cluster.local    statefulset-0

如果是 infinispan,您需要使用 JAVA_OPTS 将正确的查询加载为 -D 参数。

可以使用类似下面的东西:

apiVersion: v1
kind: ConfigMap
metadata:
  name: <your-thingie>-infinispan
data:
  INFINISPAN_CACHE_STATISTICS: "true"
  USER: "admin"
  DB_ADDR: "mariadb"
  DB_PORT: "3306"
  DB_USER: "<>"
  DB_DATABASE: "<>"
  JAVA_OPTIONS: "-Dinfinispan.cluster.stack=k8s -Djgroups.dns.query=<your-thingie>-infinispan.default.svc.cluster.local"

最重要的是您需要生成自定义容器,因为 infinispan 并不总是包含集群堆栈的配置。你可以在https://github.com/infinispan/infinispan/tree/main/core/src/main/resources/default-configs找到他们

如果您需要有关您的分辨率的更多信息,您还可以执行以下操作:

% kubectl describe svc <your-service-name>

【讨论】:

    猜你喜欢
    • 2021-01-12
    • 1970-01-01
    • 2019-10-24
    • 2020-04-05
    • 1970-01-01
    • 2018-06-24
    • 2021-02-07
    • 2021-07-02
    • 1970-01-01
    相关资源
    最近更新 更多