一、ConfigMap的redis-conf.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: redis-conf
data:
master.conf: |
bind 0.0.0.0
port 6379
requirepass 123456
appendonly yes
cluster-config-file nodes-6379.conf
pidfile /redis/log/redis-6379.pid
cluster-config-file /redis/conf/redis.conf
dir /data/
cluster-node-timeout 5000
protected-mode no
slave.conf: |
bind 0.0.0.0
port 6379
slaveof redis-master.lhhb.svc.cluster.local 6379
masterauth Ecidiecidi@redis
requirepass Ecidiecidi@redis
appendonly yes
cluster-config-file nodes-6379.conf
pidfile /redis/log/redis-6379.pid
cluster-config-file /redis/conf/redis.conf
dir /data/
cluster-node-timeout 5000
protected-mode no
二、pv的yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: redis-pv-master
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 20Gi
nfs:
path: /data/nfs/redis
readOnly: false
server: 192.168.xx.xxx
三、pvc的yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-pvc-master
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
volumeName: redis-pv-master
四、service的yaml文件
apiVersion: v1
kind: Service
metadata:
name: redis-master
spec:
selector:
name: redis-master
clusterIP: None
ports:
- port: 6379
targetPort: 6379
name: redis
---
apiVersion: v1
kind: Service
metadata:
labels:
name: redis
name: redis-node
spec:
type: NodePort
ports:
- name: redis-node
port: 6379
targetPort: 6379
nodePort: 6379
selector:
name: redis-master
五、StatefulSet的yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis-master
spec:
replicas: 1
serviceName: redis-master
selector:
matchLabels:
name: redis-master
template:
metadata:
labels:
name: redis-master
spec:
containers:
- name: xxx-redis-master
image: lxxx:5.0.9
imagePullPolicy: IfNotPresent
command:
- sh
- -c
- "exec redis-server /redis/conf/redis.conf"
ports:
- containerPort: 6379
name: redis
protocol: TCP
volumeMounts:
- name: data
mountPath: /data
- name: redis-config
mountPath: /redis/conf/
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
app: redis-master
topologyKey: kubernetes.io/hostname
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- preference:
matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- "192.168.xxxx.xxxx"
weight: 50
volumes:
- name: data
persistentVolumeClaim:
claimName: redis-pvc-master
- name: redis-config
configMap:
name: redis-conf
items:
- key: master.conf
path: redis.conf