如何配置DNS_PING与Kubernetes StatefulSet一起工作

7
我希望在 Kubernetes 环境中建立一个 Infinispan 集群。
DNS_PING 是发现协议。它与使用 DeploymentConfig 设置的 Pod 一起工作。但是,当我们将设置从 DeploymentConfig 切换到 StatefulSet 时,它不起作用。
这是因为我们不能直接使用 Pod 名称查询其 IP,而是需要使用 (Pod 名称).(创建的无头服务) 模式。
对于 jgroups,我不是很熟悉。如果有人能够建议我们如何针对这种情况正确配置 DNS_PING,那就非常感谢了。

嗯,我想我没有准备好那方面的例子。最近我写了一个(infinispan-kubernetes)[https://github.com/infinispan-demos/infinispan-kubernetes] 的例子,但我认为它使用了 KUBE_PING,这需要集群角色绑定。将该示例切换到 DNS_PING 应该是可能的,但我还没有开始做... - Galder Zamarreño
我可能在接下来的几天里尝试着去做这个。您能告诉我您正在使用哪个Kubernetes发行版吗?是OpenShift?Minikube?还是其他的? - Galder Zamarreño
嗨@GalderZamarreño,是的,我在OpenShift上尝试过那个。 - William Wong
抱歉,我没有时间处理这个。这里的模板(https://github.com/jboss-container-images/jboss-datagrid-7-openshift-image/blob/datagrid73-dev/services/cache-service-template.yaml)用于专用的OpenShift服务。它们使用有状态集和DNS ping,您可能会在其中找到所需的内容。 - Galder Zamarreño
这些人通过DNS_PING使StatefulSet工作 https://github.com/codecentric/helm-charts/tree/master/charts/keycloak - Max Lobur
显示剩余2条评论
1个回答

0

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

当您在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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接