当前位置:   article > 正文

k8s实战案例之部署redis单机和redis cluster_k8安装redis

k8安装redis

1、在k8s上部署redis单机

1.1、redis简介

redis是一款基于BSD协议,开源的非关系型数据库(nosql数据库),作者是意大利开发者Salvatore Sanfilippo在2009年发布,使用C语言编写;redis是基于内存存储,而且是目前比较流行的键值数据库(key-value database),它提供将内存通过网络远程共享的一种服务,提供类似功能的还有memcache,但相比 memcache,redis 还提供了易扩展、高性能、具备数据持久性等功能。主要的应用场景有session共享,常用于web集群中的tomcat或PHP中多web服务器的session共享;消息队列,ELK的日志缓存,部分业务的订阅发布系统;计数器,常用于访问排行榜,商品浏览数等和次数相关的数值统计场景;缓存,常用于数据查询、电商网站商品信息、新闻内容等;相对memcache,redis支持数据的持久化,可以将内存的数据保存在磁盘中,重启redis服务或者服务器之后可以从备份文件中恢复数据到内存继续使用。

1.2、PV/PVC 及 Redis 单机

由于redis的数据(主要是redis快照)都存放在存储系统中,即便redis pod挂掉,对应数据都不会丢;因为在k8s上部署redis单机,redis pod挂了,k8s会将对应pod重建,重建时会把对应pvc挂载至pod中,加载快照,从而使得redis的数据不被pod的挂掉而丢数据;

1.3、构建redis镜像

  1. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/redis# ll
  2. total 1784
  3. drwxr-xr-x 2 root root 4096 Jun 5 15:22 ./
  4. drwxr-xr-x 11 root root 4096 Aug 9 2022 ../
  5. -rw-r--r-- 1 root root 717 Jun 5 15:20 Dockerfile
  6. -rwxr-xr-x 1 root root 235 Jun 5 15:21 build-command.sh*
  7. -rw-r--r-- 1 root root 1740967 Jun 22 2021 redis-4.0.14.tar.gz
  8. -rw-r--r-- 1 root root 58783 Jun 22 2021 redis.conf
  9. -rwxr-xr-x 1 root root 84 Jun 5 15:21 run_redis.sh*
  10. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/redis# cat Dockerfile
  11. #Redis Image
  12. # 导入自定义centos基础镜像
  13. FROM harbor.ik8s.cc/baseimages/magedu-centos-base:7.9.2009
  14. # 添加redis源码包至/usr/local/src
  15. ADD redis-4.0.14.tar.gz /usr/local/src
  16. # 编译安装redis
  17. RUN ln -sv /usr/local/src/redis-4.0.14 /usr/local/redis && cd /usr/local/redis && make && cp src/redis-cli /usr/sbin/ && cp src/redis-server /usr/sbin/ && mkdir -pv /data/redis-data
  18. # 添加redis配置文件
  19. ADD redis.conf /usr/local/redis/redis.conf
  20. # 暴露redis服务端口
  21. EXPOSE 6379
  22. #ADD run_redis.sh /usr/local/redis/run_redis.sh
  23. #CMD ["/usr/local/redis/run_redis.sh"]
  24. # 添加启动脚本
  25. ADD run_redis.sh /usr/local/redis/entrypoint.sh
  26. # 启动redis
  27. ENTRYPOINT ["/usr/local/redis/entrypoint.sh"]
  28. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/redis# cat build-command.sh
  29. #!/bin/bash
  30. TAG=$1
  31. #docker build -t harbor.ik8s.cc/magedu/redis:${TAG} .
  32. #sleep 3
  33. #docker push harbor.ik8s.cc/magedu/redis:${TAG}
  34. nerdctl build -t harbor.ik8s.cc/magedu/redis:${TAG} .
  35. nerdctl push harbor.ik8s.cc/magedu/redis:${TAG}
  36. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/redis# cat run_redis.sh
  37. #!/bin/bash
  38. # Redis启动命令
  39. /usr/sbin/redis-server /usr/local/redis/redis.conf
  40. # 使用tail -f 在pod内部构建守护进程
  41. tail -f /etc/hosts
  42. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/redis# grep -v '^#\|^$' redis.conf
  43. bind 0.0.0.0
  44. protected-mode yes
  45. port 6379
  46. tcp-backlog 511
  47. timeout 0
  48. tcp-keepalive 300
  49. daemonize yes
  50. supervised no
  51. pidfile /var/run/redis_6379.pid
  52. loglevel notice
  53. logfile ""
  54. databases 16
  55. always-show-logo yes
  56. save 900 1
  57. save 5 1
  58. save 300 10
  59. save 60 10000
  60. stop-writes-on-bgsave-error no
  61. rdbcompression yes
  62. rdbchecksum yes
  63. dbfilename dump.rdb
  64. dir /data/redis-data
  65. slave-serve-stale-data yes
  66. slave-read-only yes
  67. repl-diskless-sync no
  68. repl-diskless-sync-delay 5
  69. repl-disable-tcp-nodelay no
  70. slave-priority 100
  71. requirepass 123456
  72. lazyfree-lazy-eviction no
  73. lazyfree-lazy-expire no
  74. lazyfree-lazy-server-del no
  75. slave-lazy-flush no
  76. appendonly no
  77. appendfilename "appendonly.aof"
  78. appendfsync everysec
  79. no-appendfsync-on-rewrite no
  80. auto-aof-rewrite-percentage 100
  81. auto-aof-rewrite-min-size 64mb
  82. aof-load-truncated yes
  83. aof-use-rdb-preamble no
  84. lua-time-limit 5000
  85. slowlog-log-slower-than 10000
  86. slowlog-max-len 128
  87. latency-monitor-threshold 0
  88. notify-keyspace-events ""
  89. hash-max-ziplist-entries 512
  90. hash-max-ziplist-value 64
  91. list-max-ziplist-size -2
  92. list-compress-depth 0
  93. set-max-intset-entries 512
  94. zset-max-ziplist-entries 128
  95. zset-max-ziplist-value 64
  96. hll-sparse-max-bytes 3000
  97. activerehashing yes
  98. client-output-buffer-limit normal 0 0 0
  99. client-output-buffer-limit slave 256mb 64mb 60
  100. client-output-buffer-limit pubsub 32mb 8mb 60
  101. hz 10
  102. aof-rewrite-incremental-fsync yes
  103. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/redis#

1.3.1、验证rdis镜像是否上传至harbor?

1.4、测试redis 镜像

1.4.1、验证将redis镜像运行为容器,看看是否正常运行?

1.4.2、远程连接redis,看看是否可正常连接?

能够将redis镜像运行为容器,并且能够通过远程主机连接至redis进行数据读写,说明我们构建的reids镜像没有问题;

1.5、创建PV和PVC

1.5.1、在nfs服务器上准备redis数据存储目录

  1. root@harbor:~# mkdir -pv /data/k8sdata/magedu/redis-datadir-1
  2. mkdir: created directory '/data/k8sdata/magedu/redis-datadir-1'
  3. root@harbor:~# cat /etc/exports
  4. # /etc/exports: the access control list for filesystems which may be exported
  5. # to NFS clients. See exports(5).
  6. #
  7. # Example for NFSv2 and NFSv3:
  8. # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
  9. #
  10. # Example for NFSv4:
  11. # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
  12. # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
  13. #
  14. /data/k8sdata/kuboard *(rw,no_root_squash)
  15. /data/volumes *(rw,no_root_squash)
  16. /pod-vol *(rw,no_root_squash)
  17. /data/k8sdata/myserver *(rw,no_root_squash)
  18. /data/k8sdata/mysite *(rw,no_root_squash)
  19. /data/k8sdata/magedu/images *(rw,no_root_squash)
  20. /data/k8sdata/magedu/static *(rw,no_root_squash)
  21. /data/k8sdata/magedu/zookeeper-datadir-1 *(rw,no_root_squash)
  22. /data/k8sdata/magedu/zookeeper-datadir-2 *(rw,no_root_squash)
  23. /data/k8sdata/magedu/zookeeper-datadir-3 *(rw,no_root_squash)
  24. /data/k8sdata/magedu/redis-datadir-1 *(rw,no_root_squash)
  25. root@harbor:~# exportfs -av
  26. exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/data/k8sdata/kuboard".
  27. Assuming default behaviour ('no_subtree_check').
  28. NOTE: this default has changed since nfs-utils version 1.0.x
  29. exportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/data/volumes".
  30. Assuming default behaviour ('no_subtree_check').
  31. NOTE: this default has changed since nfs-utils version 1.0.x
  32. exportfs: /etc/exports [3]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/pod-vol".
  33. Assuming default behaviour ('no_subtree_check').
  34. NOTE: this default has changed since nfs-utils version 1.0.x
  35. exportfs: /etc/exports [4]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/data/k8sdata/myserver".
  36. Assuming default behaviour ('no_subtree_check').
  37. NOTE: this default has changed since nfs-utils version 1.0.x
  38. exportfs: /etc/exports [5]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/data/k8sdata/mysite".
  39. Assuming default behaviour ('no_subtree_check').
  40. NOTE: this default has changed since nfs-utils version 1.0.x
  41. exportfs: /etc/exports [7]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/data/k8sdata/magedu/images".
  42. Assuming default behaviour ('no_subtree_check').
  43. NOTE: this default has changed since nfs-utils version 1.0.x
  44. exportfs: /etc/exports [8]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/data/k8sdata/magedu/static".
  45. Assuming default behaviour ('no_subtree_check').
  46. NOTE: this default has changed since nfs-utils version 1.0.x
  47. exportfs: /etc/exports [11]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/data/k8sdata/magedu/zookeeper-datadir-1".
  48. Assuming default behaviour ('no_subtree_check').
  49. NOTE: thi
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/537925
推荐阅读
相关标签
  

闽ICP备14008679号