帮酷LOGO
  • 显示原文与译文双语对照的内容
Kubernetes Redis with High Availability

  • 源代码名称:k8s-redis-ha
  • 源代码网址:http://www.github.com/tarosky/k8s-redis-ha
  • k8s-redis-ha源代码文档
  • k8s-redis-ha源代码下载
  • Git URL:
    git://www.github.com/tarosky/k8s-redis-ha.git
  • Git Clone代码到本地:
    git clone http://www.github.com/tarosky/k8s-redis-ha
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/tarosky/k8s-redis-ha
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • 具有高可用性的 Kubernetes Redis

    本项目中的Redis图像和示例是使用Kubernetes的最新功能实现的:

    • StatefulSet
    • 初始化容器
    要求
    • Kubernetes 1.6集群
    • Redis 3.2
    快速启动

    如果你已经拥有Kubernetes群集,则可以使用以下命令部署高可用性 Redis:

    $ kubectl create -f example/service"redis-sentinel" createdstatefulset"redis-sentinel" createdservice"redis-server" createdstatefulset"redis-server" createdpod"console" created

    访问 Redis

    你可以使用 console pod访问Redis服务器:

    $ kubectl exec -ti console --/bin/bashroot@console:# export MASTER_IP="$(redis-cli -h redis-sentinel -p 26379 sentinel get-master-addr-by-name mymaster | head -1)"root@console:# export SERVER_PASS="_redis-server._tcp.redis-server.default.svc.cluster.local"root@console:# redis-cli -h "${MASTER_IP}" -a "${SERVER_PASS}"set foo barOKroot@console:# redis-cli -h redis-server -a "${SERVER_PASS}" get foobar

    passowrd是防止独立Redis集群在某些情况下合并的必要方法。

    向上和向下缩放

    使用 tarosky/k8s-redis-ha,你可以扩展/向下的Redis服务器和Redis哨兵,像一般的部署资源:

    $ kubectl scale --replicas=5 statefulset/redis-sentinelstatefulset"redis-sentinel" scaled$ kubectl scale --replicas=5 statefulset/redis-serverstatefulset"redis-server" scaled

    在这些缩放之后,可以以自动重置vmkernel集中可以用的可以用的可以用性数量。

    python 中的示例代码
    $ kubectl exec -ti console -- ipython
    In [1]: from redis import StrictRedis
    In [2]: from redis.sentinel import Sentinel
    In [3]: sentinel = Sentinel([
     ...: ('redis-sentinel-0.redis-sentinel.default.svc.cluster.local', 26379),
     ...: ('redis-sentinel-1.redis-sentinel.default.svc.cluster.local', 26379),
     ...: ('redis-sentinel-2.redis-sentinel.default.svc.cluster.local', 26379)
     ...: ], socket_timeout=0.1...: )
    In [4]: master = sentinel.master_for(
     ...: 'mymaster',
     ...: password='_redis-server._tcp.redis-server.default.svc.cluster.local',
     ...: socket_timeout=0.1...: )
    In [5]: slave = sentinel.slave_for(
     ...: 'mymaster',
     ...: password='_redis-server._tcp.redis-server.default.svc.cluster.local',
     ...: socket_timeout=0.1...: )
    In [6]: master.set('foo', 'bar')
    Out[6]: TrueIn [7]: slave.get('foo')
    Out[7]: b'bar'
    正在运行测试脚本
    $ pyvenv. venv$ source. venv/bin/activate$ pip install -r test/requirements.txt

    你可以使用以下命令运行测试命令:

    $ KUBE_NAMESPACE='{{Your name space}}' nosetests test/test.py



    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语