k8s部署redis(单机)

环境:
Os:Centos 7
k8s:1.28
redis:7.0

 

1.使用nfs做持久化存储(使用k8s的一个节点做为nfs服务器)

[root@master redis]# exportfs -v
/k8s            <world>(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

[root@master k8s]# showmount -e 192.168.1.102
Export list for 192.168.1.102:
/k8s *

 

2.为需要持久化的服务创建子目录(必须创建)
mkdir -p /k8s/redis

 

3.创建名称空间
kubectl create namespace ns-redis

 

4.创建pv
vi 1-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: redis-pv
  namespace: ns-redis
spec:
  capacity:
    storage: 2Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: redis-nfs
  nfs:
    path: /k8s/redis
    server: 192.168.1.102
kubectl apply -f 1-pv.yaml

 

5.创建pvc
vi 2-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: redis-pvc
  namespace: ns-redis
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi
  storageClassName: redis-nfs

 

kubectl apply -f 2-pvc.yaml

 

6.创建ConfigMap
设置密码:requirepass 123456

vi 3-configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: redis
  namespace: ns-redis
data:
  redis.conf: |+
    requirepass 123456
    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
    maxmemory-policy allkeys-lfu
    maxmemory 4gb
    maxmemory-samples 5

 

kubectl apply -f 3-configmap.yaml

 

7.Deployment
vi 4-deployment.yaml

 

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: ns-redis
  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: registry.cn-shenzhen.aliyuncs.com/hxlk8s/redis:5.0.14
        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

 

kubectl apply -f 4-deployment.yaml

 

8.Service
通过NodePort方式暴露服务,注意是否开启了指定nodeport(30379)的访问权限
vi 5-service.yaml

kind: Service
apiVersion: v1
metadata:
  name: redis
  namespace: ns-redis
spec:
  type: NodePort
  selector:
    app: redis
  ports:
  - port: 6379
    targetPort: 6379
    nodePort: 30379

 

kubectl apply -f 5-service.yaml

 

9.客户端连接(在安装了redis客户端的机器上执行)

/usr/local/services/redis/bin/redis-cli -h 192.168.1.102 -p 30379 -a 123456
/usr/local/services/redis/bin/redis-cli -h 192.168.1.105 -p 30379 -a 123456
/usr/local/services/redis/bin/redis-cli -h 192.168.1.106 -p 30379 -a 123456

192.168.1.102:30379> config get maxmemory
1) "maxmemory"
2) "4294967296"
192.168.1.102:30379> config get maxmemory-policy
1) "maxmemory-policy"
2) "allkeys-lfu"
192.168.1.102:30379> 

 

10.登录容器查看
kubectl exec -it redis-5f649f495d-l58ns -n ns-redis -- /bin/bash

 

posted @ 2025-03-10 11:20  slnngk  阅读(101)  评论(0)    收藏  举报