本文所说的Hello world是一个web留言板应用,并且是基于PHP+Redis的两层分布式架构的web应用,前端PHP web网站通过访问后端Redis数据库完成用户留言的查询和添加功能,具备读写分离能力,留言板内容是从redis中查询到的,首页中添加刘潭并提交之后留言会被添加到redis中。

Redis层采用一个Master与两个salve,Master负责写操作,slave负责读操作,PHPweb层启动三个实例组成集群,对网站的访问进行负载均衡。 
本文的例子首选需要将Docker环境和k8s环境搭建完毕,这个在前一节中已经做了讲解,有需要的可以参考前一节内容部署一下Docker和k8s环境。 
实验环境: Centos7.2 64位,虚拟机。 
下面进行实例的具体操作。

1. 创建redis-master Pod和服务

先定义RC来创建pod,然后定义与之关联的service。 
为redis-master服务新建一个名为redis-master-controller.yaml的RC定义文件,内容为:


apiVersion: v1
kind: ReplicationController
metadata:
name: redis-master
labels:
name: redis-master
spec:
replicas: 1
selector:
name: redis-master
template:
metadata:
labels:
name: redis-master
spec:
containers:
- name: master
image: kubeguide/redis-master
ports:
- containerPort: 6379

新建好文件之后执行如下命令:


kuberctl create -f redis-master-controller.yaml

删除:将create换为delete即可。 
查看刚刚新建的redis-master:


kuberctl get rc

检查pod信息:


kuberctl get pods

解决kubectl get pods时 No resources found.问题

  1. 使用yum直接安装etcd, kubectl,按顺序启动如下服务:etcd, docker, kube-apiserver, kube-controller-manager, kube-scheduler, kubelet, kube-proxy.
  2. 创建了mysql-rc.yaml.
  3. 执行kubectl create -f mysql-rc.yaml,反馈正常
  4. 执行kubectl get rc, 反馈正常
  5. 执行kubectl get pods,显示no resources found.
  6. 解决方法:
  7. 1、$ vi /etc/kubernetes/apiserver
  8. 2、找到这一行 "KUBE_ADMISSION_CONTROL="--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota",去掉ServiceAccount,保存退出。
  9. 3、重新启动kube-apiserver服务即可
  10. 此时执行kubectl get pods, no resources found问题得以解决

下面新建与上面建的pod相关联的service,service对应的文件redis-master-service.yaml,内容如下:


apiVersion: v1
kind: Service
metadata:
name: redis-master
labels:
name: redis-master
spec:
ports:
- port: 6379
targetPort: 6379
selector:
name: redis-master

创建service:


kubectl create -f redis-master-service.yaml

查看新建的service:


kubectl get services

2. redis-salve Pod和服务

步骤和redis-master的一样。 
新建文件redis-salve-controller.yaml,内容如下:


apiVersion: v1
kind: ReplicationController
metadata:
name: redis-slave
labels:
name: redis-slave
spec:
replicas: 2
selector:
name: redis-slave
template:
metadata:
labels:
name: redis-slave
spec:
containers:
- name: slave
image: kubeguide/guestbook-redis-slave
env:
- name: GET_HOSTS_FROM
value: env
ports:
- containerPort: 6379

运行kubectl create命令:


kubectl create -f redis-salve-controller.yaml

查看RC:


kubectl get rc

查看pod:


kubectl get pods

配置文件redis-salve-service.yaml内容如下:


apiVersion: v1
kind: Service
metadata:
name: redis-slave
labels:
name: redis-slave
spec:
ports:
- port: 6379
selector:
name: redis-slave

创建service:


kubectl create -f redis-slave-service.yaml

检查service:


kubectl get services;

3. 创建frontend Pod和服务

文件frontend-controller.yaml内容如下:


apiVersion: v1
kind: ReplicationController
metadata:
name: frontend
labels:
name: frontend
spec:
replicas: 3
selector:
name: frontend
template:
metadata:
labels:
name: frontend
spec:
containers:
- name: frontend
image: kubeguide/guestbook-php-frontend
env:
- name: GET_HOSTS_FROM
value: env
ports:
- containerPort: 80

执行命令kubectl create:


kubectl create -f frontend-controller.yaml

检查RC:


kunectl get rc

检查pod:


kubectl get pods

文件frontend-service.yaml内容如下:


apiVersion: v1
kind: Service
metadata:
name: frontend
labels:
name: frontend
spec:
type: NodePort
ports:
- port: 80
nodePort: 30001
selector:
name: frontend

创建服务:


kubectl create -f frontend-service.yaml

检查service:


kubectl get services;

4. 访问网站

如我的虚拟机IP为xx.xx.xx.xx
则浏览器访问: xx.xx.xx.xx:30001 
成功的话会出现简单的留言板界面,并可进行留言commit。

Kubernetes实践--hello world 示例的更多相关文章

  1. CentOS7 安装 RocketMQ 实践和小示例

    CentOS7 安装 RocketMQ 实践和小示例 1.通过 SSH 工具(比如 XShell)连接到 CentOS7 服务器上: 2.进入到 /usr/local 目录中: cd /usr/loc ...

  2. kubernetes实践之运行aspnetcore webapi微服务

    1.预备工作 unbuntu 16.04 and above docker kubernetes 集群 2.使用vs2017创建一个web api应用程序,并打包镜像到本地. 3.推送本地镜像到doc ...

  3. kubernetes实践之一:kubernetes二进制包安装

    kubernetes二进制部署 1.环境规划 软件 版本 Linux操作系统 CentOS Linux release 7.6.1810 (Core) Kubernetes 1.9 Docker 18 ...

  4. Kubernetes 实践指南之Kubernetes 的命令行工具详解

    kubectl作为客户端CLI工具,可以让用户通过命令行的方式对Kubernetes集群进行管理.本节内容将对kubectl的子命令和用法进行详细描述. 一.kubectl 用法概述 kubectl语 ...

  5. Kubernetes实践技巧:Windows 系统最佳实践

    有部分同学是使用的 Windows 系统,我们的直播课程也是在 Windows 系统下面进行的,然后通过 SSH 方式连接到 服务器上面操作 Kubernetes,由于对 vim 不是很熟悉,所以又通 ...

  6. kubernetes实践之五:深入理解Service及内部DNS搭建

    一.Service存在的意义: 防止Pod失联(服务发现) 定义一组Pod的访问策略(负载均衡) 支持ClusterIP,NodePort以及LoadBalancer三种类型 Service的底层实现 ...

  7. kubernetes实践之四:深入理解控制器(workload)

    一.Pod与controllers的关系 controllers:在集群上管理和运行容器的对象 通过label-selector相关联 Pod通过控制器实现应用的运维,如伸缩,升级等 二.Deploy ...

  8. kubernetes实践之三:深入理解Pod对象

    一.Pod定义 最小部署单元 一组容器集合 一个pod中的容器共享网络命名空间 Pod是短暂的 二.Pod容器分类 基础容器 维护整个Pod的网络命名空间 初始化容器 先于业务容器开始执行,在应用启动 ...

  9. kubernetes实践之二:Kubernetes可视WEB UI Dashboard搭建

    Kubernetes可视WEBUI Dashboard搭建 支持浏览器:火狐 一.Dashboard下载地址 git clone https://github.com/kubernetes/kuber ...

随机推荐

  1. Qt 模拟鼠标点击(QApplication::sendEvent(ui->pushbutton, &event0);)

    QPoint pos(0,0);QMouseEvent event0(QEvent::MouseButtonPress, pos, Qt::LeftButton, Qt::LeftButton, Qt ...

  2. day12(jsp指令&内置对象&动作标签、JavaBean、EL表达式&函数库)

    day12 JSP指令 JSP指令概述 JSP指令的格式:<%@指令名 attr1="" attr2="" %>,一般都会把JSP指令放到JSP文件 ...

  3. 103-advanced-上下文

    上下文提供了一种通过组件树传递数据的方法,无需在每个级别手动传递道具. 在典型的React应用程序中,数据通过prop自上而下(父到子)传递,但对于应用程序中许多组件所需的某些类型的道具(例如场所偏好 ...

  4. fold change的意义[转载]

    转自:https://zhidao.baidu.com/question/2052933434631672387.html 1.解释 解释:表达值倍数变化 ,分析,消除可能的混杂因素,必要时可以用读段 ...

  5. ng-深度学习-课程笔记-11: 卷积神经网络(Week1)

    1 边缘检测( edage detection ) 下图是垂直边缘检测的例子,实际上就是用一个卷积核进行卷积的过程. 这个例子告诉我们,卷积可以完成垂直方向的边缘检测.同理卷积也可以完成水平方向的边缘 ...

  6. Python3.x:os._exit(), sys.exit(), exit() 的区别

    Python3.x:os._exit(), sys.exit(), exit() 的区别 一.sys.exit() 说明:退出程序引发SystemExit异常, 可以捕获异常执行些清理工作.一般主程序 ...

  7. 20145311实验五"Java网络编程及安全"

    20145311实验五 "Java网络编程及安全" 程序设计过程 实验内容 ·掌握Socket程序的编写:·掌握密码技术的使用:·设计安全传输系统 ·利用加解密代码包,编译运行代码 ...

  8. notepad++下载32位,安装插件管理

    下载32位地址: https://notepad-plus-plus.org/download/v7.6.4.html 下载插件: 链接: https://pan.baidu.com/s/1tRSo4 ...

  9. (Matlab)GPU计算简介,及其与CPU计算性能的比较

    1.GPU与CPU结构上的对比 2.GPU能加速我的应用程序吗? 3.GPU与CPU在计算效率上的对比 4.利用Matlab进行GPU计算的一般流程 5.GPU计算的硬件.软件配置 5.1 硬件及驱动 ...

  10. spark内存管理分析

    前言 下面的分析基于对spark2.1.0版本的分析,对于1.x的版本可以有区别. 内存配置 key 默认 解释 spark.memory.fraction 0.6 spark可以直接使用的内存大小系 ...