k8s redis(3.2.1) cluster
k8s redis(3.2.1) cluster一、安装:设置密码:redis.conf中加入密码requirepass 123456参考:从零开始搭建Kubernetes集群(六、在K8S上部署Redis 集群)☆ 当安装到 5.初始化集群时:可使用我打的redis-ruby(基于centos创建)镜像,下载地址(链接:ht...
k8s redis(3.2.1) cluster
一、安装:
设置密码:redis.conf中加入密码
requirepass 123456
参考:从零开始搭建Kubernetes集群(六、在K8S上部署Redis 集群)
☆ 当安装到 5.初始化集群时:
可使用我打的redis-ruby(基于centos创建)镜像,下载地址(链接:https://pan.baidu.com/s/1NwWDzisiPWWQv1RfPDA4tg 提取码:tfsu),使用方法:
# docker load -i redis-ruby.tar
# kubectl run -i --tty redis-ruby -n 你的命令空间 --image=redis-ruby --image-pull-policy=IfNotPresent --restart=Never /bin/bash
进入ruby镜像:
# kubectl exec -it redis-ruby -n 你的命令空间 -- /bin/bash
# [root@redis-ruby /]# find / -name 'client.rb'
# /usr/local/share/gems/gems/redis-3.2.1/lib/redis/client.rb
# /usr/share/ruby/xmlrpc/client.rb
# [root@redis-ruby /]# vi /usr/local/share/gems/gems/redis-3.2.1/lib/redis/client.rb
require "redis/errors"
require "socket"
require "cgi"
class Redis
class Client
DEFAULTS = {
:url => lambda { ENV["REDIS_URL"] },
:scheme => "redis",
:host => "127.0.0.1",
:port => 6379,
:path => nil,
:timeout => 5.0,
:connect_timeout => 5.0,
:password => "你要设置的redis集群密码&&与redis创建集群时的redis.conf中配置的相同,没有写nil",
:db => 0,
:driver => nil,
:id => nil,
:tcp_keepalive => 0,
:reconnect_attempts => 1,
:inherit_socket => false
}
初始化集群,注意!!!不使用redis的pod名.headlesssvc,因为redis的初始化不支持域名!
/usr/local/redis/src/redis-trib.rb create --replicas 1 redis-0-podIP:6379 redis-1-podIP:6379 redis-2-podIP:6379 redis-3-podIP:6379 redis-4-podIP:6379 redis-5-podIP:6379
说明:
--replicas 1 创建的master节点与slave节点数量比例为1:1
后面的节点IP哪来的呢?按ctrl+q+p+q退出ruby工具
# kubectl get pod -n 你的命令空间 -owide
就会发现redis的六个节点的pod的IP,将这6个ip分别替换到上面
二、注意点:
1.redis初始化集群不支持域名
2.设置容器环境下redis集群密码
3.K8S网络flannel最好换成其他的网络插件,不然可能出现redis cluster Waiting for the cluster to join...一直卡住的情况,如:kube-router,建议参考:k8s与各网络插件集成
4.redis cluster Waiting for the cluster to join ...
redis redis-trib.rb工具的使用 使用其中的check命令就会发现,有的节点并不能完全找到初始化的其他redis节点,以及数据槽分配的不合理
三、k8s下带密码的redis集群操作命令
原来的可视化工具RDM将不再好用,原因是即使加了nodeport svc代理,在给节点set/get数据时,数据的操作发生漂移而失败。
连接容器化redis集群的方法:
1.k8s容器集群内部配置redis:app-redis-0.redis-service:6379,app-redis-1.redis-service:6379,app-redis-2.redis-service:6379
使用redis的pod名.headlesssvc名
2.k8s容器外部访问容器内部redis集群(仍在k8s集群的虚机上,而不在某个容器中),即redis集群在容器外部手动操作的命令:
kubectl exec -it wxapp-redis-1 -n 命名空间 -- redis-cli -c -a 密码
注:-c表示以集群的方式连接redis -a是验证redis密码
附录参考文献:
1.redis集群新增节点:[ERR] Node is not empty
2.redis-trib.rb命令详解
3.linux服务器上搭建单机的redis 跟搭建不带密码redis集群 以及带密码的redis集群
4.通过vi编辑器来替换。
vi/vim 中可以使用 :s 命令来替换字符串。
:s/well/good/ 替换当前行第一个 well 为 good
:s/well/good/g 替换当前行所有 well 为 good
:n,$s/well/good/ 替换第 n 行开始到最后一行中每一行的第一个 well 为 good
:n,$s/well/good/g 替换第 n 行开始到最后一行中每一行所有 well 为 good
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/well/good/(等同于 :g/well/s//good/) 替换每一行的第一个 well 为 good
:%s/well/good/g(等同于 :g/well/s//good/g) 替换每一行中所有 well 为 good
可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#well/#good/# 替换当前行第一个 well/ 为 good/
:%s#/usr/bin#/bin#g 可以把文件中所有路径/usr/bin换成/bin
5.排错指南 - Pod
更多推荐
所有评论(0)