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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏应兆康的专栏

Python Web - Flask笔记1

scheme://host:port/path/?query-string=xxx#anchor

913
来自专栏SDNLAB

在Docker中使用Open vSwitch创建跨主机的容器网络

本文介绍了如何使用Open vSwitch为Docker 1.9.0及以后版本提供网络支持。操作前请先确认你已经按照INSTALL.md(http://open...

35610
来自专栏酷玩时刻

基于 CentOS 搭建 FTP 文件服务

此时,访问 ftp://192.168.1.170 可浏览机器上的 /var/ftp目录了。

2293
来自专栏SDNLAB

OpenDaylight实现轮询策略的负载均衡服务

1 实验目的 该实验通过OpenDaylight氢版本搭建负载均衡服务,可均衡网络中的流量传输,加强网络数据处理能力、提高网络的灵活性和可用性。在实验过程中,可...

3847
来自专栏散尽浮华

kvm虚拟化管理平台WebVirtMgr部署-完整记录(2)

继上一篇kvm虚拟化管理平台WebVirtMgr部署-完整记录(1),接下来说说WebVirtMgr的日常配置:添加宿主机,创建虚机,磁盘扩容,快照等 具体操作...

2626
来自专栏北京马哥教育

Linux架构之HA配置

简介 通过安装该Linux-HA软件,可以实现Linux双机系统的高可用性解决方案,实现双机系统的热备份,并能够做到双机之间的无缝切换,从而对外 提供稳定可靠...

2657
来自专栏linux系统运维

linux网络相关,firewalld和netfilter,netfilter5表5链介绍,itptables语法

1877
来自专栏我的博客

Python上传文件到FTP服务器

代码在python2.7下测试通过!写在最前面! # -*- coding: UTF-8 -*- from ftplib import FTP import o...

3786
来自专栏程序员的碎碎念

如何解决Python包依赖问题

以简洁高效(指编程较为高效, 而不是运行速度)出名的Python, 在包依赖问题上有时候让人挠头.

2450
来自专栏三木的博客

QEMU 1: 使用QEMU创建虚拟机

一、QEMU简介# QEMU是一款开源的模拟器及虚拟机监管器(Virtual Machine Monitor, VMM)。QEMU主要提供两种功能给用户使用。一...

2527

扫码关注云+社区