k8s部署redis-cluster集群

发布一下 0 0

1、创建命名空间
redis-namespace.yaml

apiVersion: v1kind: Namespacemetadata:	name: vf-redis

2、创建名称空间访问harbor的密钥

redis-harbor-sercet.yaml

apiVersion: v1kind: Secretmetadata:	name: harbor-secret	namespace: vf-redis	type: kubernetes.io/dockerconfigjsondata:.dockerconfigjson: ewoJImF1dGhzIjogewoJCSJoYXJib3J2Zi52Zm5ldHdvcmsuY29tIjogewoJCQkiYXV0aCI6ICJZV1J0YVc0NmMyTnRJVkZCV2pKM2MzZz0iCgkJfQoJfQp9

3、创建redis.conf的configmap
redis-configmap.yaml

apiVersion: v1kind: ConfigMapmetadata:	name: redis-conf	namespace: vf-redisdata:	redis.conf: |		cluster-enabled yes		cluster-config-file /var/lib/redis/nodes.conf		cluster-node-timeout 10000		protected-mode no		daemonize no		pidfile /var/run/redis.pid		port 6379		tcp-backlog 511		bind 0.0.0.0		timeout 3600		tcp-keepalive 1		loglevel verbose		logfile /data/redis.log		databases 16		save 900 1		save 300 10		save 60 10000		stop-writes-on-bgsave-error yes		rdbcompression yes		rdbchecksum yes		dbfilename dump.rdb		dir /data		#requirepass yl123456		appendonly yes		appendfilename "appendonly.aof"		appendfsync everysec		no-appendfsync-on-rewrite no		auto-aof-rewrite-percentage 100		auto-aof-rewrite-min-size 64mb		lua-time-limit 20000		slowlog-log-slower-than 10000		slowlog-max-len 128		#rename-command FLUSHALL ""		latency-monitor-threshold 0		notify-keyspace-events ""		hash-max-ziplist-entries 512		hash-max-ziplist-value 64		list-max-ziplist-entries 512		list-max-ziplist-value 64		set-max-intset-entries 512		zset-max-ziplist-entries 128		zset-max-ziplist-value 64		hll-sparse-max-bytes 3000		activerehashing yes		client-output-buffer-limit normal 0 0 0		client-output-buffer-limit slave 256mb 64mb 60		client-output-buffer-limit pubsub 32mb 8mb 60		hz 10		aof-rewrite-incremental-fsync yes

4、创建redis-cluster的StatefulSet:

这里使用nfs共享存储
redis-cluster.yaml

apiVersion: v1kind: Servicemetadata:	name: redis	namespace: vf-redis	labels:	 app: redisspec:  selector:    app: redis    appCluster: redis-cluster  ports:  - name: redis    port: 6379  clusterIP: None---apiVersion: v1kind: Servicemetadata:  name: redis-access  namespace: vf-redis  labels:    app: redisspec:  selector:  app: redis  appCluster: redis-cluster  ports:  - name: redis-access    protocol: TCP    port: 6379    targetPort: 6379 ---apiVersion: apps/v1kind: StatefulSetmetadata:  name: redis  namespace: vf-redisspec:  serviceName: redis  replicas: 6  selector:    matchLabels:      app: redisappCluster: redis-clustertemplate:metadata:	labels:	 app: redis	 appCluster: redis-clusterspec:	terminationGracePeriodSeconds: 20	affinity:	 podAntiAffinity:	 preferredDuringSchedulingIgnoredDuringExecution:	 - weight: 100	podAffinityTerm:	 labelSelector:	 matchExpressions:	 - key: app	 operator: In	 values:	 - redis	 topologyKey: kubernetes.io/hostname	 containers:	 - name: redis	 image: harborvf.vfnetwork.com/scm/redis-5.0.12@sha256:2764e317cea58379dafc936f7a795e4a6a2995d4c473d355212c97e0bee60eba	command:	- "redis-server"	args:	- "/etc/redis/redis.conf"	- "--protected-mode"	- "no"	resources:	requests:	cpu: "500m"	memory: "500Mi"	ports:	- containerPort: 6379	name: redis	protocol: TCP	- containerPort: 16379	name: cluster	protocol: TCP	volumeMounts:	- name: conf	mountPath: /etc/redis	- name: data	mountPath: /var/lib/redis	volumes:	- name: conf	configMap:	name: redis-conf	items:	- key: redis.conf	path: redis.conf	imagePullSecrets:	- name: harbor-secret	volumeClaimTemplates:	- metadata:	name: data	annotations:	volume.beta.kubernetes.io/storage-class: "managed-nfs-storage"	spec:	accessModes: [ "ReadWriteMany" ]	resources:	requests:	storage: 10Gi

5、部署:

kubectl apply -f redis-namespace.yamlkubectl apply -f redis-harbor-sercet.yamlkubectl apply -f redis-configmap.yamlkubectl apply -f redis-cluster.yaml 

6、查看部署状态:

k8s部署redis-cluster集群

pod状态

k8s部署redis-cluster集群

7、初始化集群:

使用Redis-tribe工具进行集群的初始化

kubectl run -it ubuntu --image=ubuntu --restart=Never /bin/bash

进入pod中执行以下操作:

cat > /etc/apt/sources.list << EOFdeb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse> EOFapt-get updateapt-get install -y vim wget python2.7 python-pip redis-tools dnsutilspip install redis-trib==0.5.1#创建只有master节点的集群:redis-trib.py create \`dig +short redis-0.redis.vf-redis.svc.cluster.local`:6379 \`dig +short redis-1.redis.vf-redis.svc.cluster.local`:6379 \`dig +short redis-2.redis.vf-redis.svc.cluster.local`:6379# 为每个master添加slave:redis-trib.py replicate \--master-addr `dig +short redis-0.redis.vf-redis.svc.cluster.local`:6379 \--slave-addr `dig +short redis-3.redis.vf-redis.svc.cluster.local`:6379redis-trib.py replicate \--master-addr `dig +short redis-1.redis.vf-redis.svc.cluster.local`:6379 \--slave-addr `dig +short redis-4.redis.vf-redis.svc.cluster.local`:6379redis-trib.py replicate \--master-addr `dig +short redis-2.redis.vf-redis.svc.cluster.local`:6379 \--slave-addr `dig +short redis-5.redis.vf-redis.svc.cluster.local`:6379

8、连到任意一个Redis Pod检查集群状态:

kubectl exec -it -n vf-redis redis-0 bash
k8s部署redis-cluster集群

版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除

本文地址:http://0561fc.cn/72301.html