k8s中部署redis主从集群
在k8s中用于部署redis主的节点打上污点,如果redis不用单独节点部署不需要执行次步
kubectl taint node nodename node=redis-master:NoSchedule在k8s中用于部署redis从的节点打上污点,如果redis不用单独节点部署不需要执行次步
kubectl taint node nodename node=redis-slave:NoScheduleredis主configmap
apiVersion: v1
data:
redis.conf: |
bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 1024
timeout 0
logfile "/data/redis.log"
requirepass 'SXDOi-%HcEBJZ89'
rename-command CONFIG REDIS-CONFIG
rename-command FLUSHDB REDIS-FLUSHDB
rename-command FLUSHALL REDIS-FLUSHALL
save 900 1
save 300 10
save 120 300000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
maxmemory 28gb
maxmemory-policy volatile-lru
maxmemory-samples 5
lazyfree-lazy-eviction yes
maxclients 6000000
io-threads 8
io-threads-do-reads yes
repl-backlog-size 1gb
repl-diskless-sync yes
activerehashing yes
hz 10
tcp-keepalive 300
kind: ConfigMap
metadata:
name: redis-master-cmredis主headless svc
apiVersion: v1
kind: Service
metadata:
name: redis-master-headless
labels:
app: redis-master-headless
spec:
ports:
- name: redis-master1
port: 6379
protocol: TCP
targetPort: 6379
selector:
name: redis-master
type: ClusterIP
clusterIP: Noneredis主deployment,其中nodeName: n01指定n01节点部署redis主,根据自己业务配置
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
name: redis-master
name: redis-master
spec:
replicas: 1
selector:
matchLabels:
name: redis-master
serviceName: redis-master-headless
template:
metadata:
labels:
name: redis-master
spec:
tolerations:
- key: "node"
operator: "Equal"
value: "redis-master"
effect: "NoSchedule"
nodeName: n01
containers:
- args:
- /usr/local/bin/redis-server
- /etc/redis.conf
image: redis:7.4.2
imagePullPolicy: IfNotPresent
name: redis-master
ports:
- containerPort: 6379
name: redis-master
protocol: TCP
volumeMounts:
- mountPath: /etc/redis.conf
name: redis-master-cm
subPath: redis.conf
- mountPath: /data
name: redis-master-data
restartPolicy: Always
volumes:
- configMap:
defaultMode: 420
name: redis-master-cm
name: redis-master-cm
- name: redis-master-data
hostPath:
type: DirectoryOrCreate
path: /data/redisredis主svc,用于外部访问,内部访问用headless svc
apiVersion: v1
kind: Service
metadata:
name: redis-master-svc
labels:
app: redis-master-svc
spec:
ports:
- name: redis-master2
nodePort: 30679
port: 6379
protocol: TCP
targetPort: 6379
selector:
name: redis-master
type: NodePortredis从configmap,masterauth指定主库的密码,requirepass 指定从库密码
apiVersion: v1
data:
redis.conf: |
bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 1024
timeout 0
logfile "/data/redis.log"
replicaof redis-master-headless 6379
replica-read-only yes
masterauth 'SXDOi-%HcEBJZ89'
requirepass 'SXDOi-%HcEBJZ89'
rename-command CONFIG REDIS-CONFIG
rename-command FLUSHDB REDIS-FLUSHDB
rename-command FLUSHALL REDIS-FLUSHALL
save 900 1
save 300 10
save 120 300000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
maxmemory 28gb
maxmemory-policy volatile-lru
maxmemory-samples 5
lazyfree-lazy-eviction yes
maxclients 6000000
io-threads 8
io-threads-do-reads yes
repl-backlog-size 1gb
repl-diskless-sync yes
activerehashing yes
hz 10
tcp-keepalive 300
kind: ConfigMap
metadata:
name: redis-slave-cmredis从headless svc
apiVersion: v1
kind: Service
metadata:
name: redis-slave-headless
labels:
app: redis-slave-headless
spec:
ports:
- name: redis-slave1
port: 6379
protocol: TCP
targetPort: 6379
selector:
name: redis-slave
type: ClusterIP
clusterIP: Noneredis从deployment,其中nodeName: n02指定n02节点部署redis从,根据自己业务配置
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
name: redis-slave
name: redis-slave
spec:
replicas: 1
selector:
matchLabels:
name: redis-slave
serviceName: redis-slave-headless
template:
metadata:
labels:
name: redis-slave
spec:
tolerations:
- key: "node"
operator: "Equal"
value: "redis-slave"
effect: "NoSchedule"
nodeName: n02
containers:
- args:
- /usr/local/bin/redis-server
- /etc/redis.conf
image: redis:7.4.2
imagePullPolicy: IfNotPresent
name: redis-slave
ports:
- containerPort: 6379
name: redis-slave
protocol: TCP
volumeMounts:
- mountPath: /etc/redis.conf
name: redis-slave-cm
subPath: redis.conf
- mountPath: /data
name: redis-slave-data
restartPolicy: Always
volumes:
- configMap:
defaultMode: 420
name: redis-slave-cm
name: redis-slave-cm
- name: redis-slave-data
hostPath:
type: DirectoryOrCreate
path: /data/redisredis从svc,用于外部访问,内部访问用headless svc
apiVersion: v1
kind: Service
metadata:
name: redis-slave-svc
labels:
app: redis-salve-svc
spec:
ports:
- name: redis-slave2
nodePort: 30679
port: 6379
protocol: TCP
targetPort: 6379
selector:
name: redis-slave
type: NodePort
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 运维小白
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

