首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kubernetes学习记录(6)——Guestbook Demo

kubernetes学习记录(6)——Guestbook Demo

作者头像
胡了了
发布2017-12-28 17:25:47
1.1K0
发布2017-12-28 17:25:47
举报

Guestbook定义文件在Kubernetes发布包的examples/guestbook目录下。我选用的是Kubernetes 1.2.7版本下的代码。

Guestbook包含两个部分: 1)Frontend Guestbook的Web前端部分。 2)Redis Guestbook的存储部分。采用主备模式,运行1个Redis Master和两个Redis Slave,Redis Slave从Redis Master同步数据。

Guestbook实现的功能:在Frontend页面提交数据,保存到Redis Master里,然后从Redis Slave读取数据,显示到页面上。

本例子需要提前安装Cluster DNS,通过DNS发现服务。

创建Redis-Master Pod

redis-master-deployment.yaml内容如下:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: redis-master
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
        role: master
        tier: backend
    spec:
      containers:
      - name: master
        image: index.tenxcloud.com/google_containers/redis:e2e
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379

创建Pod

# kubectl create -f redis-master-deployment.yaml 

创建Redis-Master Service

redis-master-service.yaml如下:

apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    app: redis
    role: master
    tier: backend
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis
    role: master
    tier: backend

创建Service

# kubectl create -f redis-master-service.yaml 

创建Redis-Slave Pod

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: redis-slave
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: redis
        role: slave
        tier: backend
    spec:
      containers:
      - name: slave
        image: gcr.io/google_samples/gb-redisslave:v1
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        env:
        - name: GET_HOSTS_FROM
        #此处使用的是DNS进行服务发现
        #value: env是采用环境变量的方式
          value: dns
        ports:
        - containerPort: 6379

创建Pod

# kubectl create -f redis-slave-deployment.yaml 

创建Redis-Slave Service

redis-slave-service.yaml如下:

apiVersion: v1
kind: Service
metadata:
  name: redis-slave
  labels:
    app: redis
    role: slave
    tier: backend
spec:
  ports:
  - port: 6379
  selector:
    app: redis
    role: slave
    tier: backend

创建Service

# kubectl create -f redis-slave-service.yaml 

创建Frontend Pod

frontend-deployment.yaml如下:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: frontend
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: guestbook
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: gcr.io/google_samples/gb-frontend:v3
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        env:
        - name: GET_HOSTS_FROM
          value: dns
        ports:
        - containerPort: 80

创建Frontend Pod

# kubectl create -f frontend-deployment.yaml

创建Frontend Service

frontend-service.yaml如下:

apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  type: NodePort
  ports:
  - port: 80
    name: frontend
    nodePort: 30001
  selector:
    app: guestbook
    tier: frontend

创建Frontend Service

# kubectl create -f frontend-service.yaml

验证

# kubectl get deployment -o wide
这里写图片描述
这里写图片描述
# kubectl get svc -o wide
这里写图片描述
这里写图片描述

frontend创建了NodePort,为32009。最新版已在frontend-service.yaml中指定NodePort为30001了。避免每次随机建立端口号。

# kubectl get pods -o wide
这里写图片描述
这里写图片描述

frontend pod部署在192.168.121.144和192.168.121.145上。 任意打开192.168.121.144:32009和192.168.121.145:32009都可以访问该网页。32009改为30001

打开192.168.121.144:32009。32009改为30001 输入“node1”。

这里写图片描述
这里写图片描述

打开192.168.121.145:3200932009改为30001

这里写图片描述
这里写图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-08-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建Redis-Master Pod
  • 创建Redis-Master Service
  • 创建Redis-Slave Pod
  • 创建Redis-Slave Service
  • 创建Frontend Pod
  • 创建Frontend Service
  • 验证
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档