我在kubernet构建了一个redis集群。redis集群在kubernetes内部被恶意访问,但是当我在kubernetes外尝试访问redis集群时,出现了以下问题,Redis只能读写当前连接的redis.When,我使用cluster nodes查看redis集群信息,可以正确显示。
这是我的statefulset.yaml
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: redis-cluster-node
spec:
serviceName: "redis-cluster-svc"
replicas: 6
template:
metadata:
labels:
name: redis-cluster-node
app: redis
spec:
hostNetwork: false
dnsPolicy: ClusterFirstWithHostNet
terminationGracePeriodSeconds: 10
imagePullSecrets:
- name: registrykey
containers:
- name: redis-cluster-node
image: redis-cluster:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 6380
env:
- name: MODE
value: "cluster"
- name: REDIS_CLUSTER_REPLICAS
value: 6
- name: LOG_LEVEL
value: 0
- name: REDIS_PORT
value: 6380
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace这是我的服务
apiVersion: v1
kind: Service
metadata:
name: redis-cluster-svc-np
labels:
name: redis-cluster-svc-np
app: redis
spec:
ports:
- port: 6380
targetPort: 6380
nodePort: 30079
type: NodePort
selector:
name: redis-cluster-node


那么,如何让kuberbetes外部也可以访问redis集群呢?
发布于 2018-08-25 15:35:56
在您的服务清单中,将type更改为LoadBalancer,并添加loadBalancerSourceRanges字段以限制对特定IP集的访问。CIDR表示法用于列出IP地址范围。
apiVersion: v1
kind: Service
metadata:
name: redis-cluster-svc-np
labels:
name: redis-cluster-svc-np
app: redis
spec:
ports:
- port: 6380
targetPort: 6380
nodePort: 30079
type: LoadBalancer
selector:
name: redis-cluster-node
loadBalancerSourceRanges:
- 100.100.100.100/32
- 10.1.1.1/24请确保添加集群网段以允许从集群内部访问Redis。
https://stackoverflow.com/questions/51998518
复制相似问题