目錄
參考網址:https://docs.redis.com/latest/ri/installing/install-k8s/
Create the RedisInsight deployment and service
沒有持久化數據,也就是POD重起,設定數據就會消失
Below is an annotated YAML file that will create a RedisInsight deployment and a service in a k8s cluster.
- Create a new file redisinsight.yaml with the content below
# RedisInsight service with name 'redisinsight-service'
apiVersion: v1
kind: Service
metadata:
name: redisinsight-service # name should not be 'redisinsight'
# since the service creates
# environment variables that
# conflicts with redisinsight
# application's environment
# variables `REDISINSIGHT_HOST` and
# `REDISINSIGHT_PORT`
spec:
type: NodePort
ports:
- port: 80
targetPort: 8001
selector:
app: redisinsight
---
# RedisInsight deployment with name 'redisinsight'
apiVersion: apps/v1
kind: Deployment
metadata:
name: redisinsight #deployment name
labels:
app: redisinsight #deployment label
spec:
replicas: 1 #a single replica pod
selector:
matchLabels:
app: redisinsight #which pods is the deployment managing, as defined by the pod template
template: #pod template
metadata:
labels:
app: redisinsight #label for pod/s
spec:
containers:
- name: redisinsight #Container name (DNS_LABEL, unique)
image: redislabs/redisinsight:latest #repo/image
imagePullPolicy: IfNotPresent #Always pull image
volumeMounts:
- name: db #Pod volumes to mount into the container's filesystem. Cannot be updated.
mountPath: /db
ports:
- containerPort: 8001 #exposed container port and protocol
protocol: TCP
volumes:
- name: db
emptyDir: {} # node-ephemeral volume https://kubernetes.io/docs/concepts/storage/volumes/#emptydir
- Create the RedisInsight deployment and service
kubectl apply -f redisinsight.yaml
- Once the deployment and service are successfully applied and complete, access RedisInsight. This can be accomplished by listing the using the
<external-ip>of the service we created to reach redisinsight.
root@k8s-master71u:~# kubectl get svc,pod
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/redisinsight-service NodePort 10.202.52.175 <none> 80:31785/TCP 8s
NAME READY STATUS RESTARTS AGE
pod/redisinsight-cf7f6847b-s2zgg 1/1 Running 0 8s
Or Create the RedisInsight deployment with persistant storage
持久化數據,也就是POD重起,設定數據也不會消失
Below is an annotated YAML file that will create a RedisInsight deployment in a K8s cluster. It will assign a peristent volume created from a volume claim template. Write access to the container is configured in an init container. When using deployments with persistent writeable volumes, it’s best to set the strategy to Recreate. Otherwise you may find yourself with two pods trying to use the same volume.
- Create a new file
redisinsight.yamlwith the content below.
# RedisInsight service with name 'redisinsight-service'
apiVersion: v1
kind: Service
metadata:
name: redisinsight-service # name should not be 'redisinsight'
# since the service creates
# environment variables that
# conflicts with redisinsight
# application's environment
# variables `REDISINSIGHT_HOST` and
# `REDISINSIGHT_PORT`
spec:
type: NodePort
ports:
- port: 80
targetPort: 8001
selector:
app: redisinsight
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redisinsight-pv-claim
labels:
app: redisinsight
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
storageClassName: "rook-cephfs"
---
# RedisInsight deployment with name 'redisinsight'
apiVersion: apps/v1
kind: Deployment
metadata:
name: redisinsight #deployment name
labels:
app: redisinsight #deployment label
spec:
replicas: 1 #a single replica pod
strategy:
type: Recreate
selector:
matchLabels:
app: redisinsight #which pods is the deployment managing, as defined by the pod template
template: #pod template
metadata:
labels:
app: redisinsight #label for pod/s
spec:
volumes:
- name: db
persistentVolumeClaim:
claimName: redisinsight-pv-claim
initContainers:
- name: init
image: busybox
command:
- /bin/sh
- '-c'
- |
chown -R 1001 /db
resources: {}
volumeMounts:
- name: db
mountPath: /db
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
containers:
- name: redisinsight #Container name (DNS_LABEL, unique)
image: redislabs/redisinsight:latest #repo/image
imagePullPolicy: IfNotPresent #Always pull image
volumeMounts:
- name: db #Pod volumes to mount into the container's filesystem. Cannot be updated.
mountPath: /db
ports:
- containerPort: 8001 #exposed container port and protocol
protocol: TCP
- Create the RedisInsight deployment and service.
kubectl apply -f redisinsight.yaml
開網頁測試
http://192.168.1.71:31785/
Redis Cluster主機IP表
| 主機名稱 | 主機IP | 角色 | 主機IP | 角色 | 跟隨 |
| redis01 | 192.168.1.11:6379 | master | 192.168.1.11:6380 | slave | 192.168.1.12:6380 |
| redis02 | 192.168.1.12:6379 | master | 192.168.1.12:6380 | slave | 192.168.1.13:6380 |
| redis03 | 192.168.1.13:6379 | master | 192.168.1.13:6380 | slave | 192.168.1.11:6380 |
| redis04 | 192.168.1.14:6379 | master | 192.168.1.14:6380 | slave | 192.168.1.18:6380 |
| redis05 | 192.168.1.18:6379 | master | 192.168.1.18:6380 | slave | 192.168.1.14:6380 |
登入畫面

點選ADD REDIS DATABASE

填寫其中一台redis cluster資訊

偵測到為Cluster,就會幫我一同找到其他節點IP

ALL MASTER、REPLICA NODES SUMMARY
可以看到MASTER 節點,彙整總結資訊

也可以看到REPLICA 節點,彙整總結資訊

Browser(SCAN Key)
可以透過此,查詢所有key及其value,也可以添加KEY

CLI(COMMAND)
可以針對節點下REDIS指令

這裡針對所有MASTER下scan 0 count 50指令

就會針對每一台MASTER幫你下指令,並統一顯示於視窗


ANALYSE(Memory Analysis)
可以選擇使用離線分析,也就是提供他rdb file,
或者線上分析,他會對所有redis下bgsave指令,在遠端的redis就會存下目前所有的key資訊為dump.rdb檔。

Memory Overview


Keyspace Summary

Recommendations

Memory Analyzer

ANALYSE Profiler(Monitor)
記錄當下指令執行


ANALYSE Slowlog
查看目前有沒有slowlog慢日誌產生

Bulk Actions

DATEBASE Configuration
可以查看,並設定REDIS

DATEBASE Cluster Management
可以管理Cluster

DATEBASE Client List
可以看到目前連接的客戶端資訊
