yangxg 4 vuotta sitten
vanhempi
commit
e24d56e230
2 muutettua tiedostoa jossa 109 lisäystä ja 0 poistoa
  1. 106 0
      k8s-redis-cluster/deploy-redis-cluster.yaml
  2. 3 0
      k8s-redis-cluster/readme.txt

+ 106 - 0
k8s-redis-cluster/deploy-redis-cluster.yaml

@@ -0,0 +1,106 @@
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: redis-cluster
+  namespace: qa
+data:
+  update.sh: |
+    #!/bin/sh
+    REDIS_NODES="/data/nodes.conf"
+    sed -i -e "/myself/ s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/${POD_IP}/" ${REDIS_NODES}
+    exec "$@"
+  redis.conf: |+
+    bind 0.0.0.0
+    cluster-enabled yes
+    cluster-require-full-coverage no
+    cluster-node-timeout 30000
+    cluster-config-file /data/nodes.conf
+    cluster-migration-barrier 1
+    appendonly yes
+    protected-mode no
+---
+apiVersion: apps.kruise.io/v1beta1
+# apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: redis-cluster
+  namespace: qa
+spec:
+  serviceName: redis-cluster
+  replicas: 6
+  selector:
+    matchLabels:
+      app: redis-cluster
+  template:
+    metadata:
+      labels:
+        app: redis-cluster
+    spec:
+      containers:
+        - name: redis
+          image: redis:6.2.1-alpine
+          ports:
+            - containerPort: 6379
+              name: client
+            - containerPort: 16379
+              name: gossip
+          command: ["/conf/update.sh", "redis-server", "/conf/redis.conf"]
+          env:
+            - name: POD_IP
+              valueFrom:
+                fieldRef:
+                  fieldPath: status.podIP
+          volumeMounts:
+            - name: conf
+              mountPath: /conf
+              readOnly: false
+            - name: data
+              mountPath: /data
+              readOnly: false
+      volumes:
+        - name: conf
+          configMap:
+            name: redis-cluster
+            defaultMode: 0755
+  volumeClaimTemplates:
+    - metadata:
+        name: data
+      spec:
+        accessModes: [ "ReadWriteOnce" ]
+        resources:
+          requests:
+            storage: 100Gi
+        storageClassName: rbd
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: redis-cluster
+  namespace: qa
+spec:
+  type: ClusterIP
+  ports:
+    - port: 6379
+      targetPort: 6379
+      name: client
+    - port: 16379
+      targetPort: 16379
+      name: gossip
+  selector:
+    app: redis-cluster
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: redis-cluster-client
+  namespace: qa
+spec:
+  type: NodePort
+  ports:
+    - port: 6379
+      targetPort: 6379
+      name: client
+      nodePort: 30379
+  selector:
+    app: redis-cluster

+ 3 - 0
k8s-redis-cluster/readme.txt

@@ -0,0 +1,3 @@
+kubectl -n qa exec -it redis-cluster-0 -- redis-cli --cluster create --cluster-replicas 1 $(kubectl -n qa get pods -l app=redis-cluster -o jsonpath='{range.items[*]}{.status.podIP}:6379 {end}')
+kubectl -n qa  exec -it redis-cluster-0 -- redis-cli cluster info
+for x in $(seq 0 5); do echo "redis-cluster-$x"; kubectl exec redis-cluster-$x -n qa -- redis-cli role; echo; done