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. POJ 2774 Long Long Message 后缀数组

    Long Long Message   Description The little cat is majoring in physics in the capital of Byterland. A ...

  2. WEB容器启动——web.xml加载详解

    最近在看spring的源码,关于web.xml文件在容器(Tomcat.JBOSS等)启动时加载顺序问题很混乱,通过搜集资料,得出以下的结论: 1.加载顺序与它们在 web.xml 文件中的先后顺序无 ...

  3. Docker on YARN在Hulu的实现

    这篇文章是我来Hulu这一年做的主要工作,结合当下流行的两个开源方案Docker和YARN,提供了一套灵活的编程模型,目前支持DAG编程模型,将会支持长服务编程模型. 基于Voidbox,开发者可以很 ...

  4. Pig语言基础-【持续更新中】

      ***本文参考了Pig官方文档以及已有的一些博客,并加上了自己的一些知识性的理解.目前正在持续更新中.***   Pig作为一种处理大规模数据的高级查询语言,底层是转换成MapReduce实现的, ...

  5. vs发布的程序不依赖运行时库msvcp100.dll

      [摘要:msvcr100.dll:MS Visual C Runtime 100 msvcp100.dll:MS Visual CPp 100 vs建立的工程,运转时库的范例有MD(MDd)战MT ...

  6. Eclipse中快速删除空行

    1.在要编辑的文档中 "Ctrl"+"F",弹出搜索框: 2.在Find文本框中输入正则表达式:^\s*\n 3.勾选正则表达式选项: 4.Find和替换所有.

  7. git stash和git stash pop

    git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug,  先stash, 使返回到自己上一个comm ...

  8. 【BZOJ1672】[Usaco2005 Dec]Cleaning Shifts 清理牛棚 动态规划

    [BZOJ1672][Usaco2005 Dec]Cleaning Shifts Description Farmer John's cows, pampered since birth, have ...

  9. 违反完整约束条件 (XXX) - 未找到父项关键字

    这个主要是A表的一个字段主键做了B表的外键,往B表插入数据就会出现这种情况 今天其他总结: detached entity passed to persist 错误的引起的原因和解决办法 这个主要是因 ...

  10. Python标准异常topic

    Python标准异常topic AssertionError                            断言语句 (assert)                              ...