Kubernetes 实战——部署基于 Redis 和 Docker 的留言簿

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Kubernetes 实战——部署基于 Redis 和 Docker 的留言簿

Kubernetes 实战——部署基于 Redis 和 Docker 的留言簿



一、实验环境


二、部署基于 Redis 和 Docker 的留言簿


2.配置 Redis Master

1)创建 Deployment 配置文件

2)创建 Service 配置文件

2.配置 Redis Slave

1)创建 Deployment 配置文件

2)创建 Service 配置文件

3.配置 Frontend GuestBook

1)创建 Deployment 配置文件

2)创建 Service 配置文件

3.查看外网网络访问 GuestBook


一、实验环境



需要三个 Docker 镜像:


  1. php-frontend web 前端镜像;
  2. redis master 镜像;
  3. redis slave 镜像;


  • 其中 Web 前端 通过 javascript redis api 和 redis master 交互。


整体架构如下:


image.png


  • 底层网络结构:通过 Flannel 实现不同物理机之间 Docker 容器的通信。


Kubernetes 体系架构:


image.png


二、部署基于 Redis 和 Docker 的留言簿



注意:


  • 如果未部署 Kubernetes 容器集群管理系统需看:部署 Kubernetes 容器集群管理系统 来进行部署。
  • 该实验需要的软件包从这个链接下载:https://pan.baidu.com/s/1A6SEpNuBvGm3a-EdGrFSJA
  • 提取码:owbr


上传镜像到 node1 和 node2 上并导入


[root@node1 ~]# mkdir /root/k8s
[root@node1 ~]# cd /root/k8s
[root@node1 k8s]# ls
[root@node1 k8s]# ls                    # 将镜像上传到该目录
docker.io-kubeguide-guestbook-php-frontend.tar
docker.io-kubeguide-guestbook-redis-slave.tar
docker.io-kubeguide-redis-master.tar
pod-infrastructure.tar


image.png


导入镜像


[root@node1 k8s]# docker load -i pod-infrastructure.tar 
[root@node1 k8s]# docker load -i docker.io-kubeguide-redis-master.tar 
[root@node1 k8s]# docker load -i docker.io-kubeguide-guestbook-redis-slave.tar
[root@node1 k8s]# docker load -i docker.io-kubeguide-guestbook-php-frontend.tar 
[root@node1 k8s]# docker images               # 查看镜像是否导入成功


image.png


2.配置 Redis Master


在 master 上操作


1)创建 Deployment 配置文件


[root@master ~]# mkdir /etc/kubernetes/yaml
[root@master ~]# cd /etc/kubernetes/yaml/
[root@master yaml]# vim 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: docker.io/kubeguide/redis-master:latest
        imagePullPolicy: IfNotPresent
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379


2)创建 Service 配置文件


[root@master yaml]# vim 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


启用 Redis Master 的 Deployment 和 Service


[root@master yaml]# kubectl create -f redis-master-deployment.yaml 
[root@master yaml]# kubectl create -f redis-master-service.yaml
[root@master yaml]# kubectl get deployment
[root@master yaml]# kubectl get pods
[root@master yaml]# kubectl get svc


image.png


2.配置 Redis Slave


在 master 上操作


1)创建 Deployment 配置文件


[root@master yaml]# vim redis-slave-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
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: docker.io/kubeguide/guestbook-redis-slave:latest
        imagePullPolicy: IfNotPresent
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        env:
        - name: GET_HOSTS_FROM
          value: env
        ports:
        - containerPort: 6379


2)创建 Service 配置文件


[root@master yaml]# vim 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 


启动 Redis Salve 的 Deployment 和 Service


[root@master yaml]# kubectl create -f redis-slave-deployment.yaml 
[root@master yaml]# kubectl create -f redis-slave-service.yaml 
[root@master yaml]# kubectl get deployment
[root@master yaml]# kubectl get pods
[root@master yaml]# kubectl get pods -o wide


image.png


3.配置 Frontend GuestBook


在 master 上操作


1)创建 Deployment 配置文件


这是一个简单的 PHP 访问,用来和 master service(写请求)或 slave service(读请求)交互。


[root@master yaml]# vim 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: docker.io/kubeguide/guestbook-php-frontend:latest
        imagePullPolicy: IfNotPresent
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        env:
        - name: GET_HOSTS_FROM
          value: env
        ports:
        - containerPort: 80


2)创建 Service 配置文件


[root@master yaml]# vim frontend-service.yaml 
apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  type: NodePort
  ports:
  - port: 80
    nodePort: 30001
  selector:
    app: guestbook
    tier: frontend


启动 Frontend GuestBook 的 Deployment 和 Service


[root@master yaml]# kubectl create -f frontend-deployment.yaml 
[root@master yaml]# kubectl create -f frontend-service.yaml 
[root@master yaml]# kubectl get deployment
[root@master yaml]# kubectl get pods -o wide
[root@master yaml]# kubectl get svc -o wide


image.png


3.查看外网网络访问 GuestBook


登录 node1 查看端口:


[root@node1 k8s]# netstat -anpt | grep 30001


image.png


使用浏览器访问:http://192.168.1.3:30001 或者访问:http://192.168.1.4:30001 都可以。


image.png

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
9天前
|
关系型数据库 MySQL Shell
4.Docker 应用部署
4.Docker 应用部署
|
18小时前
|
前端开发 应用服务中间件 nginx
前后端分离项目Docker部署指南(下)
前后端分离项目Docker部署指南(下)
|
18小时前
|
NoSQL 关系型数据库 网络安全
前后端分离项目Docker部署指南(上)
前后端分离项目Docker部署指南(上)
|
1天前
|
开发框架 安全 网络安全
【Docker 专栏】Docker 多平台应用构建与部署
【5月更文挑战第8天】Docker作为一种关键的容器化技术,简化了多平台应用的构建与部署。它提供一致的运行环境,确保应用在不同平台无缝运行;通过分层构建机制加速镜像创建,提升开发效率。Docker的可移植性、高效部署及资源利用率是其主要优势。流程包括开发环境准备、构建镜像、测试验证及部署。然而,面临操作系统差异、网络安全和资源限制等挑战,需注意安全、版本管理和性能优化。Docker在多平台场景的应用将持续发挥价值。
【Docker 专栏】Docker 多平台应用构建与部署
|
1天前
|
存储 关系型数据库 Linux
CentOS如何使用Docker部署Plik服务并实现公网访问本地设备上传下载文件
CentOS如何使用Docker部署Plik服务并实现公网访问本地设备上传下载文件
19 4
|
1天前
|
数据可视化 Linux Docker
如何使用Docker部署Dashy并无公网ip远程访问管理界面
如何使用Docker部署Dashy并无公网ip远程访问管理界面
5 0
|
1天前
|
NoSQL Unix MongoDB
【docker 】docker-compose 部署mongoDB
【docker 】docker-compose 部署mongoDB
8 1
|
1天前
|
NoSQL MongoDB 数据库
docker部署mongoDB
docker部署mongoDB
5 0
|
1天前
|
关系型数据库 Java 数据库
docker部署postgresql数据库和整合springboot连接数据源
docker部署postgresql数据库和整合springboot连接数据源
12 0
|
2天前
|
存储 Cloud Native 文件存储
云原生之使用Docker部署home-page个人导航页
【5月更文挑战第4天】云原生之使用Docker部署home-page个人导航页
13 1