- k8s界面使用kuboard
- 部署使用1主1备1哨兵
- 使用思路为master节点部署后,slave节点使用master的serviceip与master节点进行互通,哨兵进程与master、slave使用service ip互通
- 参考链接 [bitnami/redis-sentinel - Docker Image | Docker Hub](https://hub.docker.com/r/bitnami/redis-sentinel)
- 连接中是有docker-compose启动的配置文件,未指明在k8s上如何使用,因此写了本操作指导【yaml文件内容在kuboard界面生成】
部署master节点
---
apiVersion: apps/v1
kind: Deployment
metadata:
annotations: {}
labels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: test-master
name: test-master
namespace: company-sdwan
resourceVersion: '91595697'
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: test-master
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: test-master
spec:
containers:
- env:
- name: REDIS_REPLICATION_MODE
value: master
- name: REDIS_PASSWORD
value: redis@123
image: 'bitnami/redis:6.2.6'
imagePullPolicy: IfNotPresent
name: test-master
ports:
- containerPort: 6379
name: master
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
annotations: {}
labels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: test-master
name: test-master
namespace: company-sdwan
resourceVersion: '91595685'
spec:
clusterIP: 10.107.118.111
ports:
- name: master
port: 6379
protocol: TCP
targetPort: 6379
selector:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: test-master
sessionAffinity: None
type: ClusterIP
# 部署完成master后需要记录service地址,用于slave和sentinel访问
部署slave节点
---
apiVersion: apps/v1
kind: Deployment
metadata:
annotations: {}
labels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: test-slave
name: test-slave
namespace: company-sdwan
resourceVersion: '91596734'
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: test-slave
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: test-slave
spec:
containers:
- env:
- name: REDIS_REPLICATION_MODE
value: slave
- name: REDIS_MASTER_HOST
value: 10.107.118.111
- name: REDIS_MASTER_PASSWORD
value: redis@123
- name: REDIS_PASSWORD
value: redis@123
image: 'bitnami/redis:6.2.6'
imagePullPolicy: IfNotPresent
name: test-slave
ports:
- containerPort: 6379
name: slave
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
annotations: {}
labels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: test-slave
name: test-slave
namespace: company-sdwan
resourceVersion: '91596719'
spec:
clusterIP: 10.101.145.203
ports:
- name: slave
port: 6379
protocol: TCP
targetPort: 6379
selector:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: test-slave
sessionAffinity: None
type: ClusterIP
部署哨兵节点
---
apiVersion: apps/v1
kind: Deployment
metadata:
annotations: {}
labels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: test-sentinel
name: test-sentinel
namespace: company-sdwan
resourceVersion: '91598109'
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: test-sentinel
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: test-sentinel
spec:
containers:
- env:
- name: REDIS_MASTER_HOST
value: 10.107.118.111
- name: REDIS_MASTER_PORT_NUMBER
value: '6379'
- name: REDIS_MASTER_PASSWORD
value: redis@123
- name: REDIS_SENTINEL_PORT_NUMBER
value: '26379'
- name: REDIS_SENTINEL_QUORUM
value: '1'
image: 'bitnami/redis-sentinel:6.2.6'
imagePullPolicy: IfNotPresent
name: test-sentinel
ports:
- containerPort: 26379
name: sentinel
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
annotations: {}
labels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: test-sentinel
name: test-sentinel
namespace: company-sdwan
resourceVersion: '91598112'
spec:
clusterIP: 10.97.199.238
ports:
- name: sentinel
port: 26379
protocol: TCP
targetPort: 26379
selector:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: test-sentinel
sessionAffinity: None
type: ClusterIP