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允许80端口通过

    yum重装 http://www.07net01.com/storage_networking/Red_Hat_6_2_64ruheshiyongCentosdeYUMyuangengxinfangf ...

  2. AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(四):开源的Silverlight运行容器的编译、配置

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  3. QQ列表展示

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

  4. Android实现自定义带文字和图片的Button

    Android实现自定义带文字和图片的Button 在Android开发中经常会需要用到带文字和图片的button,下面来讲解一下常用的实现办法. 一.用系统自带的Button实现 最简单的一种办法就 ...

  5. jQuery插件(cookie存值)

    使用cookie插件后,可以很方便地通过cookie对象保存.读取.删除用户的信息,还能通过cookie插件保存用户的浏览记录,它的调用格式为: 保存:$.cookie(key,value):读取:$ ...

  6. 我的c++学习(9)指针

    ◆ 1.指针变量的赋值.初始化与简单应用 ,y; y=; // y可以理解成该存储单元的当前名字 int *ip; // ip是一个指针(变量) ip=&y; // ip是存储空间y的地址 c ...

  7. RUDP之一 —— UDP VS TCP

    原文链接 原文:http://gafferongames.com/networking-for-game-programmers/udp-vs-tcp/ 介绍 大家好,我是Glenn Fiedler, ...

  8. js 类型转换学习

    类型转换分为显示转换和隐式转换 参考http://www.cnblogs.com/mizzle/archive/2011/08/12/2135885.html 先事件显示的 通过手动进行类型转换,Ja ...

  9. csipsimple 出现单通情况

    今天在测试voip电话时,突然打不通了和windows端也不通,boss发怒了. 经过排查,发现设置G729编码 //设置G729编码 prefs.setCodecPriority("g72 ...

  10. java位操作总结

    在计算机中所有数据都是以二进制的形式储存的. 位运算其实就是直接对在内存中的二进制数据进行操作,因此处理数据的速度非常快. 方便演示,首先写个二进制打印方法: private static void ...