我正在尝试设置部署在Openshift集群上的JCS分布式缓存(根据FT的最佳实践,有3个节点)。这3个缓存实例中的任何一个都可以接收一个事件,并且通过TCP连接将该事件分发给其他实例(以同步状态)。JCS的配置如下(假设集群中有3个节点A、B、C)
- jcs.auxiliary.attributes.TcpListenerPort=Node-B-Host:2002 - jcs.auxiliary.attributes.TcpListenerPort=Node-C-Host:2003
)
的列表)
我现在面临的问题是,
。
只是想知道在Openshift/K8s平台上是否有可靠的方法来解决这个问题。谢谢。
发布于 2020-08-19 22:56:46
你在找StatefulSet。
现在无法设置tcpServers列表的原因是Pods主机名是不可预测的,当Deployments、ReplicaSets、.
考虑以下示例:
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: openldap-kube
namespace: ci
spec:
podManagementPolicy: OrderedReady
replicas: 3
selector:
matchLabels:
name: openldap-kube
serviceName: openldap-kube
template:
metadata:
labels:
name: openldap-kube
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: name
operator: In
values:
- openldap-kube
topologyKey: kubernetes.io/hostname
containers:
[ ... ]
volumeMounts:
- mountPath: /etc/ldap
name: data
subPath: config
- mountPath: /var/lib/ldap
name: data
subPath: db
- mountPath: /run
name: run
volumes:
- emptyDir: {}
name: run
updateStrategy:
type: RollingUpdate
volumeClaimTemplates:
- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
---
apiVersion: v1
kind: Service
metadata:
name: openldap-kube
namespace: ci
spec:
clusterIP: None
ports:
- name: tcp-1389
port: 1389
- name: tcp-1636
port: 1636
selector:
name: openldap-kube
type: ClusterIP在这种情况下(StatefulSet,带有spec.serviceName,Service有spec.type=ClusterIP和spec.clusterIP=None),每个Pod都会有自己的DNS记录。命名了我的服务openldap-kube,命名空间ci后,可以在SDN中获得以下DNS记录:
$ getent hosts openldap-kube-0.openldap-kube.ci.svc.cluster.local
10.233.99.125 openldap-kube-0.openldap-kube.ci.svc.cluster.local
$ getent hosts openldap-kube-1.openldap-kube.ci.svc.cluster.local
10.233.114.206 openldap-kube-1.openldap-kube.ci.svc.cluster.local openldap-kube-1
$ getent hosts openldap-kube.ci.svc.cluster.local
10.233.114.206 openldap-kube.ci.svc.cluster.local
10.233.99.125 openldap-kube.ci.svc.cluster.local
$ getent hosts openldap-kube
10.233.114.206 openldap-kube.ci.svc.cluster.local
10.233.99.125 openldap-kube.ci.svc.cluster.local
$ getent hosts openldap-kube-1.openldap-kube
10.233.114.206 openldap-kube-1.openldap-kube.ci.svc.cluster.local关于一些详尽无遗的样本,请参见:
https://gitlab.com/synacksynack/opsperator/docker-openldap/-/tree/master/deploy/kubernetes https://gitlab.com/synacksynack/opsperator/docker-percona/-/tree/master/deploy/kubernetes https://gitlab.com/synacksynack/opsperator/docker-mongodb/-/tree/master/deploy/kubernetes
https://stackoverflow.com/questions/63476903
复制相似问题