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

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

  • 一、实验环境
  • 二、部署基于 Redis 和 Docker 的留言簿
    • 1.上传镜像到 node1 和 node2 上并导入
    • 2.配置 Redis master
      • 1)创建 Redis master deployment 配置文件
      • 2)创建 Redis master service 配置文件
      • 3)启用 Redis master 的 deployment 和 service
    • 2.配置 Redis slave
      • 1)创建 Redis slave deployment 配置文件
      • 2)创建 Slave Service 配置文件
      • 3)启动 Redis salve 的 deployment 和 service
    • 3.配置 frontend guestbook
      • 1)创建 frontend guestbook deployment 配置文件
      • 2)创建 frontend guestbook service 配置文件
      • 3)启动 frontend guestbook 的 deployment 和 service
    • 3.查看外网网络访问 guestbook

一、实验环境

需要三个 Docker 镜像:

  1. php-frontend web 前端镜像
  2. redis master 镜像
  3. redis slave 镜像
  • 其中 web 前端 通过 javascript redis api 和 redis master 交互。

整体架构如下:
Kubernetes 实战——部署基于 Redis 和 Docker 的留言簿_第1张图片

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

Kubernetes 体系架构:
Kubernetes 实战——部署基于 Redis 和 Docker 的留言簿_第2张图片

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

注意:

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

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

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

Kubernetes 实战——部署基于 Redis 和 Docker 的留言簿_第3张图片
导入镜像

[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			#查看镜像是否导入成功

Kubernetes 实战——部署基于 Redis 和 Docker 的留言簿_第4张图片

2.配置 Redis master

在 master 上操作

1)创建 Redis master 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

Kubernetes 实战——部署基于 Redis 和 Docker 的留言簿_第5张图片

2)创建 Redis master 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

Kubernetes 实战——部署基于 Redis 和 Docker 的留言簿_第6张图片

3)启用 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

Kubernetes 实战——部署基于 Redis 和 Docker 的留言簿_第7张图片

2.配置 Redis slave

在 master 上操作

1)创建 Redis slave 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

Kubernetes 实战——部署基于 Redis 和 Docker 的留言簿_第8张图片

2)创建 Slave 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 

Kubernetes 实战——部署基于 Redis 和 Docker 的留言簿_第9张图片

3)启动 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

Kubernetes 实战——部署基于 Redis 和 Docker 的留言簿_第10张图片

3.配置 frontend guestbook

在 master 上操作

1)创建 frontend guestbook 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

Kubernetes 实战——部署基于 Redis 和 Docker 的留言簿_第11张图片

2)创建 frontend guestbook 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

Kubernetes 实战——部署基于 Redis 和 Docker 的留言簿_第12张图片

3)启动 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

Kubernetes 实战——部署基于 Redis 和 Docker 的留言簿_第13张图片

3.查看外网网络访问 guestbook

登录 node1 查看端口:

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

Kubernetes 实战——部署基于 Redis 和 Docker 的留言簿_第14张图片
使用浏览器访问:http://192.168.1.3:30001 或者访问:http://192.168.1.4:30001 都可以。
Kubernetes 实战——部署基于 Redis 和 Docker 的留言簿_第15张图片

你可能感兴趣的:(Kubernetes,kubernetes实战,yaml,docker,基于K8s部署Redis留言薄)