k8s入门系列之guestbook快速部署
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快速部署的更多相关文章
- k8s入门系列之扩展组件(一)DNS安装篇
DNS (domain name system),提供域名解析服务,解决了难于记忆的IP地址问题,以更人性可读可记忆可标识的方式映射对应IP地址. Cluster DNS扩展插件用于支持k8s集群系统 ...
- k8s入门系列之集群安装篇
关于kubernetes组件的详解介绍,请阅读上一篇文章<k8s入门系列之介绍篇> Kubernetes集群安装部署 •Kubernetes集群组件: - etcd 一个高可用的K/V键值 ...
- k8s 入门系列之集群安装篇
关于kubernetes组件的详解介绍,请阅读上一篇文章<k8s入门系列之介绍篇> Kubernetes集群安装部署 •Kubernetes集群组件: - etcd 一个高可用的K/V键值 ...
- MySQL入门02-MySQL二进制版本快速部署
在上篇文章 MySQL入门01-MySQL源码安装 中,我们介绍了MySQL源码安装的方法. 源码安装虽然有着更加灵活和更加优化等诸多优势.但源码编译安装部署的过程相对复杂,而且整个过程所花费的时间很 ...
- WPF快速入门系列(8)——MVVM快速入门
一.引言 在前面介绍了WPF一些核心的内容,其中包括WPF布局.依赖属性.路由事件.绑定.命令.资源样式和模板.然而,在WPF还衍生出了一种很好的编程框架,即WVVM,在Web端开发有MVC,在WPF ...
- 「数据挖掘入门系列」Python快速入门
Python环境搭建 本次入门系列将使用Python作为开发语言.要使用Python语言,我们先来搭建Python开发平台.我们将基于Python 2.7版本.以及Python的开发发行版本Anaco ...
- K8S入门系列之集群二进制部署-->master篇(二)
组件版本和配置策略 组件版本 Kubernetes 1.16.2 Docker 19.03-ce Etcd 3.3.17 https://github.com/etcd-io/etcd/release ...
- K8S入门系列之集群二进制部署-->node篇(三)
node节点组件 docker kubelet kube-proxy kubernetes-server-linux-amd64.tar.gz(相关的这里都能找到二进制文件!) falnnel 1. ...
- k8s入门系列之介绍篇
•Kubernetes介绍1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器的快速轻量 - 完整的生态环境2.什么是ku ...
随机推荐
- 51nod1228 序列求和(自然数幂和)
与UVA766 Sum of powers类似,见http://www.cnblogs.com/IMGavin/p/5948824.html 由于结果对MOD取模,使用逆元 #include<c ...
- CQRS FAQ (翻译)
我从接触ddd到学习cqrs有6年多了, 其中也遇到了不少疑问, 也向很多的前辈牛人请教得到了很多宝贵的意见和建议. 偶尔的机会看到国外有个站点专门罗列了ddd, cqrs和事件溯源的常见问题. 其中 ...
- Redis相关
Redis 持久化 1 why 数据需要持久化,当内存数据库使用的情况 防止缓存失效时候的雪崩效应 2 how 两种方式,快照和日志(aof)方式,各有优缺点. Redis的缓存失效策略 1 what ...
- 破解压缩文件密码rarcrack
破解压缩文件密码rarcrack 常见的压缩文件格式有ZIP.RAR和7z.这三种格式都支持使用密码进行加密压缩.前面讲过破解ZIP压缩文件,可以使用fcrackzip.对于RAR和7z格式,可以 ...
- iOS 从git拷贝Xcode的snippets
do following things in terminal 1. check out the project using: git clone gitAddress 2. cd the proje ...
- 团队Git工作流总结
为什么使用Git “svn用了这么多年都好好的,为啥折腾搞Git?” “Git一点都不好用,提交个代码都提交不上去!” “Git这么复杂,命令多到记不住,而且完全用不到.哪有svn简单好用?” 推 ...
- ACM: FZU 2112 Tickets - 欧拉回路 - 并查集
FZU 2112 Tickets Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u P ...
- ffmpeg 屏幕录制 so easy....
linux Linux下使用FFmpeg进行屏幕录制相对比较方便,可以使用x11grab,使用如下的命令: ffmpeg -f x11grab -s 1600x900 -r 50 -vcodec li ...
- MongoDB查询操作限制返回字段的方法
这篇文章主要介绍了MongoDB查询操作限制返回字段的方法,需要的朋友可以参考下 映射(projection )声明用来限制所有查询匹配文档的返回字段.projection以文档的形式列举结果集中 ...
- mysql 查询去重 distinct
mysql 查询去重 distinct 待完善内容..