yaml部署redis的一个巨坑配置文件里面的daemonize no一定不能用daemonize yes,因为这个问题我搞了一个星期,

yaml文件的标签是关联各个服务的重要说明
labels  下面的name参数和后面的值各服务之间要全部一致才能正确关联,
metadata:
  name: redis-yx-t-config
  labels:
    name: gem-yx-t-redis

apiVersion: v1 
kind: ConfigMap 
metadata: 
  name: gem-yx-t-redis
  labels: 
    app: gem-yx-t-redis 
data: 
  redis.conf: |- 
    dir /data 
    port 6379 
    bind 0.0.0.0 
    appendonly yes 
    daemonize no
    #protected-mode no 
    requirepass test 
---
apiVersion: apps/v1 
kind: StatefulSet 
metadata: 
  name: gem-yx-t-redis 
  labels: 
    app: gem-yx-t-redis 
spec:
  serviceName: gem-yx-t-redis 
  replicas: 1 
  selector: 
    matchLabels: 
      app: gem-yx-t-redis 
  template: 
    metadata: 
      labels: 
        app: gem-yx-t-redis 
    spec: 
      containers: 
      - name: redis 
        image: redis:5.0.7 
        command: 
          - "sh" 
          - "-c" 
          - "redis-server /usr/local/redis/redis.conf" 
        ports: 
        - containerPort: 6379 
        resources: 
          limits: 
            cpu: 1000m 
            memory: 1024Mi 
          requests: 
            cpu: 1000m 
            memory: 1024Mi 
        livenessProbe: 
          tcpSocket: 
            port: 6379 
          initialDelaySeconds: 300 
          timeoutSeconds: 1 
          periodSeconds: 10 
          successThreshold: 1 
          failureThreshold: 3 
        readinessProbe: 
          tcpSocket: 
            port: 6379 
          initialDelaySeconds: 5 
          timeoutSeconds: 1 
          periodSeconds: 10 
          successThreshold: 1 
          failureThreshold: 3 
        volumeMounts:
        - name: data
          mountPath: /data
        # 时区设置
        - name: timezone
          mountPath: /etc/localtime
        - name: config 
          mountPath:  /usr/local/redis/redis.conf 
          subPath: redis.conf 		  
      volumes:
      - name: config 
        configMap: 
          name: redis-yx-t-config 
      - name: timezone                             
        hostPath:
          path: /usr/share/zoneinfo/Asia/Shanghai
      - name: data
        hostPath:
          type: DirectoryOrCreate 
          path: /data/redis/gem-yx-t-redis
      nodeName: gem-yxyw-t-c02
--- 
 
apiVersion: v1 
kind: Service 
metadata: 
  name: gem-yx-t-redis
  labels: 
    app: gem-yx-t-redis  
spec: 
  ports: 
    - port: 6379 
      protocol: TCP 
      targetPort: 6379 
      nodePort: 30009 
  selector: 
    app: gem-yx-t-redis 
  type: NodePort 

不暴露端口部署

apiVersion: v1 
kind: ConfigMap 
metadata: 
  name: yxyw-pre-redis
  labels: 
    app: yxyw-pre-redis 
data: 
  redis.conf: |- 
    dir /data 
    port 6379 
    bind 0.0.0.0 
    appendonly yes 
    daemonize no
    #protected-mode no 
    requirepass test 
---
apiVersion: apps/v1 
kind: StatefulSet 
metadata: 
  name: yxyw-pre-redis 
  labels: 
    app: yxyw-pre-redis 
spec:
  serviceName: yxyw-pre-redis 
  replicas: 1 
  selector: 
    matchLabels: 
      app: yxyw-pre-redis 
  template: 
    metadata: 
      labels: 
        app: yxyw-pre-redis 
    spec: 
      containers: 
      - name: redis 
        image: redis:5.0.7 
        command: 
          - "sh" 
          - "-c" 
          - "redis-server /usr/local/redis/redis.conf" 
        ports: 
        - containerPort: 6379 
        resources: 
          limits: 
            cpu: 1000m 
            memory: 1024Mi 
          requests: 
            cpu: 1000m 
            memory: 1024Mi 
        livenessProbe: 
          tcpSocket: 
            port: 6379 
          initialDelaySeconds: 300 
          timeoutSeconds: 1 
          periodSeconds: 10 
          successThreshold: 1 
          failureThreshold: 3 
        readinessProbe: 
          tcpSocket: 
            port: 6379 
          initialDelaySeconds: 5 
          timeoutSeconds: 1 
          periodSeconds: 10 
          successThreshold: 1 
          failureThreshold: 3 
        volumeMounts:
        - name: data
          mountPath: /data
        # 时区设置
        - name: timezone
          mountPath: /etc/localtime
        - name: config 
          mountPath:  /usr/local/redis/redis.conf 
          subPath: redis.conf 		  
      volumes:
      - name: config 
        configMap: 
          name: yxyw-pre-redis 
      - name: timezone                             
        hostPath:
          path: /usr/share/zoneinfo/Asia/Shanghai
      - name: data
        hostPath:
          type: DirectoryOrCreate 
          path: /data/redis/yxyw-pre-redis
--- 
 
apiVersion: v1 
kind: Service 
metadata: 
  name: yxyw-pre-redis
  labels: 
    app: yxyw-pre-redis  
spec: 
  ports: 
    - port: 6379 
      protocol: TCP 
      targetPort: 6379 
  selector: 
    app: yxyw-pre-redis 
  type: ClusterIP 

redis5.0镜像制作

FROM centos:centos7
#安装编译必备组件
RUN yum -y install epel*
RUN yum -y install iftop htop unzip net-tools
RUN yum -y install openssh-clients  
RUN yum -y install gcc gcc-c++ ncurses-devel pcre* openssl* zlib zlib-devel wget net-snmp-devel curl-devel perl-DBI
# 复制并解压缩
ADD redis-5.0.5.tar.gz /usr/local
#编译安装
RUN cd /usr/local/redis-5.0.5 && make && make PREFIX=/usr/local/redis install
RUN mkdir /usr/local/redis/etc
RUN cd /usr/local/redis/bin/
RUN cp /usr/local/redis/bin/redis-server /usr/bin/
#复制redis配置文件
ADD redis.conf /usr/local/redis/etc/
# 暴露端口
EXPOSE 6379
# 容器运行时默认启动redis服务
CMD ["redis-server","/usr/local/redis/etc/redis.conf"]

redis配置文件

protected-mode no
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes   #k8s里面一定要改成no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/usr/local/redis/logs/redis.log"
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 ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
requirepass rP9yf2M1jGwNNjAT
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-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 yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
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
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
bind 0.0.0.0
port 6379
daemonize no
supervised no
# redis服务pid进程文件名
pidfile "/var/run/redis.pid"
# 关闭保护模式,并配置使用密码访问
protected-mode no
requirepass 123456
# 数据文件保存路径,rdb/AOF文件也保存在这里
dir "/data"
# 最大客户端连接数
maxclients 10000

# 客户端连接空闲多久后断开连接,单位秒,0表示禁用
timeout 300
tcp-keepalive 60 
# 内存初始化
maxmemory 1gb
maxmemory-policy volatile-lru
slowlog-max-len 128
lua-time-limit 5000

# Redis 数据持久化(rdb/aof)配置
# 数据自动保存脚本条件例如300s中有10key发生变化
save 300 100
save 60 10000
# RDB 文件名
dbfilename "dump.rdb"
# 对RDB文件进行压缩,建议以(磁盘)空间换(CPU)时间。
rdbcompression yes
# 版本5的RDB有一个CRC64算法的校验和放在了文件的最后。这将使文件格式更加可靠。
rdbchecksum yes
# RDB自动触发策略是否启用,默认为yes
rdb-save-incremental-fsync yes

# AOF开启
appendonly yes
# AOF文件名
appendfilename "appendonly.aof"
# 可选值 always, everysec,no,建议设置为everysec
appendfsync everysec

# Redis风险命令重命名
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
rename-command FLUSHDB b840fc02d524045429941cc15f59e41cb7be6c53
rename-command FLUSHALL b840fc02d524045429941cc15f59e41cb7be6c54
rename-command EVAL b840fc02d524045429941cc15f59e41cb7be6c55
rename-command DEBUG b840fc02d524045429941cc15f59e41cb7be6c56
# rename-command SHUTDOWN SHUTDOWN

如何取消密码

如果我们想取消密码,只需要将配置文件中的密码行注释掉或者将密码设置为空即可。

# requirepass mypassword

requirepass ""

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐