k8s入门系列之guestbook快速部署

来源:互联网 发布:微信聊天记录迁移 mac 编辑:程序博客网 时间:2024/05/29 13:09

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: ReplicationControllermetadata:  name: redis-master  labels:    name: redis-masterspec:  replicas: 1  selector:    name: redis-master  template:    metadata:      labels:        name: redis-master    spec:      containers:      - name: master        image: docker.gaoxiaobang.com/kubernetes/redis        ports:        - containerPort: 6379
复制代码

•创建Pod

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

•查看rc(ReplicationController)

[root@master guestbook]# kubectl get rc -l name=redis-masterNAME DESIRED CURRENT AGEredis-master 1 1 29s

•查看Pod

[root@master guestbook]# kubectl get pods -o wideNAME                     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: v1kind: Servicemetadata:  name: redis-master  labels:    name: redis-masterspec:  ports:  - port: 6379    targetPort: 6379  selector:    name: redis-master
复制代码

•创建Service

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

•查看Service

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

 

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

复制代码
apiVersion: v1kind: ReplicationControllermetadata:  name: redis-slave  labels:    name: redis-slavespec:  replicas: 2  selector:    name: redis-slave  template:    metadata:      labels:        name: redis-slave    spec:      containers:      - name: worker        image: docker.gaoxiaobang.com/kubernetes/redis-slave        ports:        - containerPort: 6379
复制代码

•创建Pod

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

•查看rc

[root@master guestbook]# kubectl get rc redis-slaveNAME          DESIRED   CURRENT   AGEredis-slave   2         2         1m

•查看Pod

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

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

复制代码
apiVersion: v1kind: Servicemetadata:  name: redis-slave  labels:    name: redis-slavespec:  ports:  - port: 6379    targetPort: 6379  selector:    name: redis-slave
复制代码

•创建Service

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

•查看Service

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

 

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

复制代码
apiVersion: v1kind: ReplicationControllermetadata:  name: guestbook-web  labels:    name: guestbook-webspec:  replicas: 2  selector:    name: guestbook-web  template:    metadata:      labels:        name: guestbook-web    spec:      containers:      - name: php-redis        image: docker.gaoxiaobang.com/kubernetes/guestbook-web        ports:        - containerPort: 80
复制代码

•创建Pod

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

•查看rc

[root@master guestbook]# kubectl get rc guestbook-webNAME            DESIRED   CURRENT   AGEguestbook-web   2         2         18m

•查看Pod

复制代码
[root@master guestbook]# kubectl get podsNAME                     READY     STATUS    RESTARTS   AGEguestbook-web-1un8o      1/1       Running   0          34mguestbook-web-iyxpg      1/1       Running   0          34mgxb-web-rc-afi56         1/1       Running   0          10dredis-master-7tt3s       1/1       Running   0          38mredis-slave-drxok        1/1       Running   0          37mredis-slave-h43yo        1/1       Running   0          37m
复制代码

 

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

复制代码
apiVersion: v1kind: Servicemetadata:  name: guestbook-web  labels:    name: guestbook-webspec:  type: NodePort  ports:  - port: 80  selector:    name: guestbook-web
复制代码

•创建Service

复制代码
You have exposed your service on an external port on all nodes in yourcluster. If you want to expose this service to the external internet, you mayneed to set up firewall rules for the service port(s) (tcp:520) 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-webNAME            CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGEguestbook-web   10.254.225.216   nodes         80/TCP    34m


4.访问guestbook,如下图

 

参考文章:

http://dockone.io/article/542

0 0
原创粉丝点击