k8s部署redis

81 阅读2分钟
  1. 新建pv、pvc

vim 1-pv_pvc.yaml

此处使用nfs作为存储,nfs文件夹为/data/nfs/redis

apiVersion: v1

kind: PersistentVolume

metadata:

name: redis-pv

spec:

capacity:

storage: 10Gi

accessModes:

  • ReadWriteOnce

persistentVolumeReclaimPolicy: Retain

storageClassName: redis-nfs

nfs:

path: /data/nfs/redis

server: 172.16.70.90


apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: redis-pvc

spec:

accessModes:

  • ReadWriteOnce

resources:

requests:

storage: 10Gi

storageClassName: redis-nfs

  1. 新建configmap

vim 2-configmap.yaml

指定redis配置文化内容

apiVersion: v1

kind: ConfigMap

metadata:

name: redis

data:

redis.conf: |+

protected-mode no

port 6379

tcp-backlog 511

timeout 0

tcp-keepalive 300

daemonize no

supervised no

pidfile /var/run/redis_6379.pid

loglevel notice

logfile ""

databases 16

always-show-logo yes

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir /data

slave-serve-stale-data yes

slave-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

slave-priority 100

lazyfree-lazy-eviction no

lazyfree-lazy-expire no

lazyfree-lazy-server-del no

slave-lazy-flush no

appendonly no

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

aof-use-rdb-preamble no

lua-time-limit 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events Ex

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

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

  1. 新建deployment

vim 3-deployment.yaml

把redis的configmap挂载到容器的/etc/redis/redis.conf文件下,把redis的pvc挂载到容器的/data目录下(相当于容器的/data与物理机的/data/nfs/redis目录映射)

apiVersion: apps/v1

kind: Deployment

metadata:

name: redis

labels:

app: redis

spec:

strategy:

type: Recreate

selector:

matchLabels:

app: redis

template:

metadata:

labels:

app: redis

annotations:

version/date: "20210310"

version/author: "lc"

spec:

containers:

  • name: redis

image: redis:5.0

imagePullPolicy: Always

command: ["redis-server","/etc/redis/redis.conf"]

ports:

  • containerPort: 6379

volumeMounts:

  • name: redis-config

mountPath: /etc/redis/redis.conf

subPath: redis.conf

  • name: redis-persistent-storage

mountPath: /data

volumes:

  • name: redis-config

configMap:

name: redis

items:

  • key: redis.conf

path: redis.conf

  • name: redis-persistent-storage

persistentVolumeClaim:

claimName: redis-pvc

  1. 新建service

vim 4-service.yaml

关联redis,使用物理机30379端口,映射到容器中redis的6379端口

kind: Service

apiVersion: v1

metadata:

name: redis

spec:

type: NodePort

selector:

app: redis

ports:

  • port: 6379

targetPort: 6379

nodePort: 30379

附件

部署文件