k8s集群以及一些扩展插件已经安装完毕,本篇文章介绍一下如何在k8s集群上快速部署guestbook应用。

•实验环境为集群:master(1)+node(4),详细内容参考《k8s入门系列之集群安装篇

•guestbook应用示例介绍:
应用包含2部分:web前端和redis(1主2从),用户通过web前端提交数据,写入到redis-master上,然后通过读取同步到redis-slave上的数据展示给用户。

提示:所有的定义文件都存放在master端,所有的操作也都是在master端操作。

实验:

1.配置启动redis-master服务
•编辑redis-master-rc.yml定义文件
[root@master guestbook]# cat redis-master-rc.yml

kind: ReplicationController
metadata:
name: redis-master
labels:
name: redis-master
spec:
replicas:
selector:
name: redis-master
template:
metadata:
labels:
name: redis-master
spec:
containers:
- name: master
image: docker.gaoxiaobang.com/kubernetes/redis
ports:
- containerPort:

•创建Pod

[root@master guestbook]# kubectl create -f redis-master-rc.yml
replicationcontroller "redis-master" created

•查看rc(ReplicationController)

[root@master guestbook]# kubectl get rc -l name=redis-master
NAME DESIRED CURRENT AGE
redis-master 29s

•查看Pod

[root@master guestbook]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE NODE
redis-master-7tt3s 1/1 Running 0 15m 192.168.30.21

Kubernetes中Service中起到了负载均衡器的作用,通过Proxy和Selector决定服务请求传递给后端提供服务的Pod,对外提供固定的IP,这样的话Redis Master Pod迁移变化也不会影响。

•编辑redis-master-svc.yml定义文件
[root@master guestbook]# cat redis-master-svc.yml

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

•创建Service

[root@master guestbook]# kubectl create -f redis-master-svc.yml

•查看Service

[root@master guestbook]# kubectl get svc redis-master
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
redis-master 10.254.59.45 <none> /TCP 3m

2.配置启动redis-slave服务
•编辑redis-slave-rc.yml定义文件
[root@master guestbook]# cat redis-slave-rc.yml

apiVersion: v1
kind: ReplicationController
metadata:
name: redis-slave
labels:
name: redis-slave
spec:
replicas:
selector:
name: redis-slave
template:
metadata:
labels:
name: redis-slave
spec:
containers:
- name: worker
image: docker.gaoxiaobang.com/kubernetes/redis-slave
ports:
- containerPort:

•创建Pod

[root@master guestbook]# kubectl create -f redis-slave-rc.yml
replicationcontroller "redis-slave" created

•查看rc

[root@master guestbook]# kubectl get rc redis-slave
NAME DESIRED CURRENT AGE
redis-slave 1m

•查看Pod

[root@master guestbook]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE NODE
redis-master-7tt3s / Running 15m 192.168.30.21
redis-slave-drxok / Running 15m 192.168.30.23
redis-slave-h43yo / Running 15m 192.168.30.21

•编辑redis-slave-svc.yml定义文件
[root@master guestbook]# cat redis-slave-svc.yml

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

•创建Service

[root@master guestbook]# kubectl create -f redis-slave-svc.yml
service "redis-slave" created

•查看Service

[root@master guestbook]# kubectl get svc redis-slave
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
redis-slave 10.254.172.53 <none> /TCP 19m

3.配置启动web端服务
•编辑guestbook-web-rc.yml定义文件
[root@master guestbook]# cat guestbook-web-rc.yml

apiVersion: v1
kind: ReplicationController
metadata:
name: guestbook-web
labels:
name: guestbook-web
spec:
replicas:
selector:
name: guestbook-web
template:
metadata:
labels:
name: guestbook-web
spec:
containers:
- name: php-redis
image: docker.gaoxiaobang.com/kubernetes/guestbook-web
ports:
- containerPort:

•创建Pod

[root@master guestbook]# kubectl create -f guestbook-web-rc.yml
replicationcontroller "guestbook-web" created

•查看rc

[root@master guestbook]# kubectl get rc guestbook-web
NAME DESIRED CURRENT AGE
guestbook-web 18m

•查看Pod

[root@master guestbook]# kubectl get pods
NAME READY STATUS RESTARTS AGE
guestbook-web-1un8o / Running 34m
guestbook-web-iyxpg / Running 34m
gxb-web-rc-afi56 / Running 10d
redis-master-7tt3s / Running 38m
redis-slave-drxok / Running 37m
redis-slave-h43yo / Running 37m

•编辑guestbook-web-svc.yml定义文件
[root@master guestbook]# cat guestbook-web-svc.yml

apiVersion: v1
kind: Service
metadata:
name: guestbook-web
labels:
name: guestbook-web
spec:
type: NodePort
ports:
- port:
selector:
name: guestbook-web

•创建Service

You have exposed your service on an external port on all nodes in your
cluster. If you want to expose this service to the external internet, you may
need to set up firewall rules for the service port(s) (tcp:) to serve traffic. See http://releases.k8s.io/release-1.2/docs/user-guide/services-firewalls.md for more details.
service "guestbook-web" created

*提示:在集群所有node节点上都开启了520端口,访问任何一个node的520端口都可以。例如:192.168.30.21:520

•查看Service

[root@master guestbook]# kubectl get svc guestbook-web
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
guestbook-web 10.254.225.216 nodes /TCP 34m

4.访问guestbook,如下图

参考文章:

http://dockone.io/article/542

k8s入门系列之guestbook快速部署的更多相关文章

  1. k8s入门系列之扩展组件(一)DNS安装篇

    DNS (domain name system),提供域名解析服务,解决了难于记忆的IP地址问题,以更人性可读可记忆可标识的方式映射对应IP地址. Cluster DNS扩展插件用于支持k8s集群系统 ...

  2. k8s入门系列之集群安装篇

    关于kubernetes组件的详解介绍,请阅读上一篇文章<k8s入门系列之介绍篇> Kubernetes集群安装部署 •Kubernetes集群组件: - etcd 一个高可用的K/V键值 ...

  3. k8s 入门系列之集群安装篇

    关于kubernetes组件的详解介绍,请阅读上一篇文章<k8s入门系列之介绍篇> Kubernetes集群安装部署 •Kubernetes集群组件: - etcd 一个高可用的K/V键值 ...

  4. MySQL入门02-MySQL二进制版本快速部署

    在上篇文章 MySQL入门01-MySQL源码安装 中,我们介绍了MySQL源码安装的方法. 源码安装虽然有着更加灵活和更加优化等诸多优势.但源码编译安装部署的过程相对复杂,而且整个过程所花费的时间很 ...

  5. WPF快速入门系列(8)——MVVM快速入门

    一.引言 在前面介绍了WPF一些核心的内容,其中包括WPF布局.依赖属性.路由事件.绑定.命令.资源样式和模板.然而,在WPF还衍生出了一种很好的编程框架,即WVVM,在Web端开发有MVC,在WPF ...

  6. 「数据挖掘入门系列」Python快速入门

    Python环境搭建 本次入门系列将使用Python作为开发语言.要使用Python语言,我们先来搭建Python开发平台.我们将基于Python 2.7版本.以及Python的开发发行版本Anaco ...

  7. K8S入门系列之集群二进制部署-->master篇(二)

    组件版本和配置策略 组件版本 Kubernetes 1.16.2 Docker 19.03-ce Etcd 3.3.17 https://github.com/etcd-io/etcd/release ...

  8. K8S入门系列之集群二进制部署-->node篇(三)

    node节点组件 docker kubelet kube-proxy kubernetes-server-linux-amd64.tar.gz(相关的这里都能找到二进制文件!) falnnel 1. ...

  9. k8s入门系列之介绍篇

    •Kubernetes介绍1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器的快速轻量 - 完整的生态环境2.什么是ku ...

随机推荐

  1. linux下bus、devices和platform的基础模型

    转自:http://blog.chinaunix.net/uid-20672257-id-3147337.html 一.kobject的定义:kobject是Linux2.6引入的设备管理机制,在内核 ...

  2. Spring MVC基础入门

    Spring MVC简介 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱 ...

  3. notepad++ 中配置 python一键运行

    cmd /k python "$(FULL_CURRENT_PATH)"& PAUSE & EXIT cmd /k python 表示打开Command Promp ...

  4. QQ列表展示

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  5. TodoMVC中的Backbone+MarionetteJS+RequireJS例子源码分析之一

    Marionette牵线木偶,Backbone是脊骨的意思,Marionette是基于Backbone做扩展库,可以理解为把脊骨骨架绑线扯着变成牵线木偶动起来哈哈,使backbone更易使用呵呵! 构 ...

  6. MySQL 存储过程控制语句

    变量作用域内部的变量在其作用域范围内享有更高的优先权,当执行到end.变量时,内部变量消失,此时已经在其作用域外,变量不再可见了,应为在存储过程外再也不能找到这个申明的变量,但是你可以通过out参数或 ...

  7. VirtualBox使用总结

    解决VirtualBox安装Mac OS X El Capitan开机卡住问题 在配置完新虚拟机后关闭VirtualBox,用管理员权限启动CMD,转到VirtualBox安装目录,依次运行下列指令: ...

  8. [机器学习] ——KNN K-最邻近算法

    KNN分类算法,是理论上比较成熟的方法,也是最简单的机器学习算法之一. 该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别 ...

  9. js模块开发(一)

    现在嵌入页面里面的javascript代码越来越复杂,于是可能依赖也越来越严重,使用别人开发的js也越来越多,于是在理想情况下,我们只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块. 于是j ...

  10. 目录的文件权限-X

    所有目录务必保持具有X权限(可执行权限)!!,否则无法进入该目录及子目录,且无法读取该目录及子目录下的文件或子目录