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 镜像:
- php-frontend web 前端镜像;
- redis master 镜像;
- redis slave 镜像;
- 其中 Web 前端 通过 javascript redis api 和 redis master 交互。
整体架构如下:
- 底层网络结构:通过 Flannel 实现不同物理机之间 Docker 容器的通信。
Kubernetes 体系架构:
二、部署基于 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
导入镜像
[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 # 查看镜像是否导入成功
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
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
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
3.查看外网网络访问 GuestBook
登录 node1 查看端口:
[root@node1 k8s]# netstat -anpt | grep 30001
使用浏览器访问:http://192.168.1.3:30001 或者访问:http://192.168.1.4:30001 都可以。