Redis读写分离作为存储

PHP网页作为前端

github地址

https://github.com/kubernetes/kubernetes/blob/release-1.1/examples/guestbook/README.md

Create guest book sample on k8s


1. 创建Redis写端RC yaml

  1. apiVersion: v1
  2. kind: ReplicationController
  3. metadata:
  4. name: redis-master
  5. labels:
  6. name: redis-master
  7. spec:
  8. replicas:
  9. selector:
  10. name: redis-master
  11. template:
  12. metadata:
  13. labels:
  14. name: redis-master
  15. spec:
  16. containers:
  17. - name: master
  18. image: redis
  19. ports:
  20. - containerPort:

可以到开头的github地址下载dockfile,自己创建image

2. k8s创建RC redis master

kubectl create -f redis-master-controller.yaml

3. k8s创建 redis master service yaml

  1. apiVersion: v1
  2.  
  3. kind: Service
  4.  
  5. metadata:
  6.  
  7. name: redis-master
  8.  
  9. labels:
  10.  
  11. name: redis-master
  12.  
  13. spec:
  14.  
  15. ports:
  16.  
  17. # the port that this service should serve on
  18.  
  19. - port:
  20.  
  21. targetPort:
  22.  
  23. selector:
  24.  
  25. name: redis-master

4. k8s创建SVC

kubectl create -f redis-master-service.yaml

5. 创建Redis读端 RC redis slave yaml

  1. apiVersion: v1
  2.  
  3. kind: ReplicationController
  4.  
  5. metadata:
  6.  
  7. name: redis-slave
  8.  
  9. labels:
  10.  
  11. name: redis-slave
  12.  
  13. spec:
  14.  
  15. replicas:
  16.  
  17. selector:
  18.  
  19. name: redis-slave
  20.  
  21. template:
  22.  
  23. metadata:
  24.  
  25. labels:
  26.  
  27. name: redis-slave
  28.  
  29. spec:
  30.  
  31. containers:
  32.  
  33. - name: slave
  34.  
  35. image: kubeguide/guestbook-redis-slave
  36.  
  37. env:
  38.  
  39. - name: GET_HOSTS_FROM
  40.  
  41. value: env
  42.  
  43. # If your cluster config does not include a dns service, then to
  44.  
  45. # instead access an environment variable to find the master
  46.  
  47. # service's host, comment out the 'value: dns' line above, and
  48.  
  49. # uncomment the line below.
  50.  
  51. #value: env
  52.  
  53. ports:
  54.  
  55. - containerPort:

示例文档中说明如果放在云端并且有DNS服务器可以写入dns,但是实验中是在局域网内,所以使用env

6. k8s创建redis slave RC

kubectl create -f redis-slave-controller.yaml

7. 创建redis slave svc yaml

  1. apiVersion: v1
  2.  
  3. kind: Service
  4.  
  5. metadata:
  6.  
  7. name: redis-slave
  8.  
  9. labels:
  10.  
  11. name: redis-slave
  12.  
  13. spec:
  14.  
  15. ports:
  16.  
  17. # the port that this service should serve on
  18.  
  19. - port:
  20.  
  21. selector:
  22.  
  23. name: redis-slave

8. k8s创建redis slave svc

kubectl create -f redis-slave-service.yaml

9. 创建php frontend rc yaml

  1. apiVersion: v1
  2.  
  3. kind: ReplicationController
  4.  
  5. metadata:
  6.  
  7. name: frontend
  8.  
  9. labels:
  10.  
  11. name: frontend
  12.  
  13. spec:
  14.  
  15. replicas:
  16.  
  17. selector:
  18.  
  19. name: frontend
  20.  
  21. template:
  22.  
  23. metadata:
  24.  
  25. labels:
  26.  
  27. name: frontend
  28.  
  29. spec:
  30.  
  31. containers:
  32.  
  33. - name: frontend
  34.  
  35. image: peter/php-frontend:v1
  36.  
  37. env:
  38.  
  39. - name: GET_HOSTS_FROM
  40.  
  41. value: env
  42.  
  43. # If your cluster config does not include a dns service, then to
  44.  
  45. # instead access environment variables to find service host
  46.  
  47. # info, comment out the 'value: dns' line above, and uncomment the
  48.  
  49. # line below.
  50.  
  51. # value: env
  52.  
  53. ports:
  54.  
  55. - containerPort:

这是下载了github的dockfile,本地构建的镜像

10. k8s创建 php frontend rc

kubectl create -f frontend-controller.yaml

11. 创建php frontend svc yaml

  1. apiVersion: v1
  2.  
  3. kind: Service
  4.  
  5. metadata:
  6.  
  7. name: frontend
  8.  
  9. labels:
  10.  
  11. name: frontend
  12.  
  13. spec:
  14.  
  15. # if your cluster supports it, uncomment the following to automatically create
  16.  
  17. # an external load-balanced IP for the frontend service.
  18.  
  19. type: NodePort
  20.  
  21. ports:
  22.  
  23. # the port that this service should serve on
  24.  
  25. - port:
  26.  
  27. nodePort: 30001
  28.  
  29. selector:
  30.  
  31. name: frontend

打开节点机器30001端口

12. k8s创建php frontend svc

kubectl create -f frontend-service.yaml

查看k8s的pods svc rc

输入node机器的ip:30001即可访问

Scale


k8s执行命令

kubectl scale --current-replicas=2 --replicas=3 replicationcontrollers redis-slave

Rolling update


k8s执行命令

kubectl rolling-update frontend --image=peter/php-frontend:v3

k8s google sample - guestbook的更多相关文章

  1. k8s API sample

    Declarative API k8s: cluster-api Introduction to Kubernetes Cluster-API Project Declarative Manageme ...

  2. Android高效计算——RenderScript(二)

    3 RenderScript运行时层与反射层 3.1 RenderScript运行时层 RenderScript运行时层是指.rs代码运行时所在的层级.当对安卓项目进行编译的时候,.rs或者.rsh中 ...

  3. APP架子迁移指南(三)

    在完成上一篇之后,断断续续的开始重构我的Android项目代码,现在终于完成了.在重构期间又仔细阅读了一些开源项目的源码及文章,并询问了一些大神思路,按照理解自己完成了MVP结构的重构,与google ...

  4. Android Studio 2.2 来啦

    今年的 I/O 2016 Google 放出了 Android Studio 2.2 的预览版,改进了多项功能,只不过为了保证公司项目不受影响,我一般都不安装预览版的,因为预览版意味着不稳定,可能遇到 ...

  5. APP迁移

    APP架子迁移 在完成上一篇之后,断断续续的开始重构我的Android项目代码,现在终于完成了.在重构期间又仔细阅读了一些开源项目的源码及文章,并询问了一些大神思路,按照理解自己完成了MVP结构的重构 ...

  6. Lichee(三) Android4.0该产品的目标文件夹,Lichee链接---extract-bsp

    由<Lichee() 在sun4i_crane平台下的编译>介绍了编译lichee的基本情况,我们终于得到了编译后的结果例如以下: out/ ├── android │   ├── bIm ...

  7. Orleans部署

    一.配置指南 1,客户端配置 2,服务端配置 3,典型配置 4,配置.NET垃圾收集 5,SQL系统存储 二.监控 1,运行时监视 2,silo错误代码监测 3,客户端错误代码监测 三.解决部署问题 ...

  8. <Android 基础(四)> RecyclerView

    介绍 RecyclerView是ListView的豪华增强版.它主要包含以下几处新的特性,如ViewHolder,ItemDecorator,LayoutManager,SmothScroller以及 ...

  9. Android动画系列 - PropertyAnim 详解

    前言:上一篇文章传统View动画与Property动画基础及比较简单对Android动画系统的基础做了介绍,本篇文章将对PropertyAnimation进行全面深入的探讨,本篇文章可以分为两大块,从 ...

随机推荐

  1. sgu 286. Ancient decoration(最小环覆盖)

    给你一个n个点,每个点度为k(k为偶数)的无向图,问是否能将图中的n条边染色,使得每个点都拥有两条被染色的边.也就是说,是否存在拥有原图中n条边的子图,使得每个点的度为2?仔细想想,每个点的度为2,实 ...

  2. 【NIO】dawn在buffer用法

    网络编程,buffer它用于数据传输到网络上的集线器应用程序,不用说,一个重要的线.提到buffer我不能说什么零拷贝,buffer什么内存管理,在dawn在,基于directbuffer再次能够实现 ...

  3. dij算法为什么不能处理负权,以及dij算法变种

    对于上面那张图,是可以用dij算法求解出正确答案,但那只是巧合而已. 我们再看看下面这张图. dist[4] 是不会被正确计算的. 因为dij算法认为从队列出来的点,(假设为u)肯定是已经求出最短路的 ...

  4. POJ 3450 Corporate Identity KMP解决问题的方法

    这个问题,需要一组字符串求最长公共子,其实灵活运用KMP高速寻求最长前缀. 请注意,意大利愿父亲:按照输出词典的顺序的规定. 另外要提醒的是:它也被用来KMP为了解决这个问题,但是很多人认为KMP使用 ...

  5. Android规范发展

    一.Android 编码规范 1.java 代码中不出现中文.最多凝视中能够出现中文 2.局部变量命名.静态成员变量命名 仅仅能包括字母,单词首字母出第一个外,都为大写,其它字母都为小写 3.常量命名 ...

  6. ubuntu系统下给你的ipad充电(适用于所有ios设备)

    用ipad的都知道,当我们的ipad插上电脑的usb端口默认是不能充电的.windows和ubuntu平台解决办法分别如下. windows平台: 安装软件 ai_charger http://eve ...

  7. 重新想象 Windows 8 Store Apps (14) - 控件 UI: RenderTransform, Projection, Clip, UseLayoutRounding

    原文:重新想象 Windows 8 Store Apps (14) - 控件 UI: RenderTransform, Projection, Clip, UseLayoutRounding [源码下 ...

  8. Eclipse+Maven创建webapp项目<一> (转)

    Eclipse+Maven创建webapp项目<一> 1.开启eclipse,右键new——>other,如下图找到maven project 2.选择maven project,显 ...

  9. hdu1964之插头DP求最优值

    Pipes Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  10. 【 D3.js 进阶系列 — 1.1 】 其它表格文件的读取

    CSV 表格文件是以逗号作为单元分隔符的,其他还有以制表符 Tab 作为单元分隔符的 TSV 文件,还有人为定义的其他分隔符的表格文件.本文将说明在 D3 中怎样读取它们. 1. TSV 表格文件是什 ...