这部分我们结合之前的k8s知识点给大家展示如何使用kubernetes部署wordpress+MySQL, 并利用NFS去保存我们容器的源代码以及DB数据.

安装环境

System: CentOS 7.4

Kubernetes: Kubernetes1.9

Docker: 17.03.2-ce

kube-master 10.110.16.10

kube-node-1 10.110.16.11

一. NFS配置:

1. NFS依赖包安装

在Master与Node分别安装NFS组件

# yum install nfs-utils -y

Tip: 这里需保证nfs-utils安装到所有master和node中, 否则容器挂载NFS时会报错.

2. 为Master下mysql data和wordpress源码配置NFS共享目录

# systemctl enable nfs-server &&systemctl start nfs-server

# mkdir -p /kube/mysql-db

# mkdir -p /kube/wordpress

# chown nfsnobody:nfsnobody /kube/mysql-db

# chown nfsnobody:nfsnobody /kube/wordpress

# chmod 755 /kube/mysql-db

# chmod 755 /kube/wordpress

# echo -e "/kube/mysql-db    kube-*(rw,sync,no_subtree_check,no_root_squash)" > /etc/exports

# echo -e "/kube/wordpress    kube-*(rw,sync,no_subtree_check,no_root_squash)" >> /etc/exports

Tip: 这里kube-*限制只有kube相关的server才能连接Master下NFS共享目录,no_root_squash参数保证wordpress-mysqlpod在初始化mysql配置的时候向在其下挂载的/var/lib/mysql目录有写入权限

3.应用配置

# exportfs -a

二.Persistent volume配置

1.为mysql data与wordpress源码存储创建Persistent volume

# kubectl create -f mysql-pv.yaml

apiVersion: v1

kind: PersistentVolume

metadata:

name: mysql-pv

labels:

app: mysql

spec:

capacity:

storage: 5Gi

accessModes:

- ReadWriteOnce

persistentVolumeReclaimPolicy: Recycle

nfs:

path: /kube/mysql-db

server: kube-master

# kubectl create -f wordpress-pv.yaml

apiVersion: v1

kind: PersistentVolume

metadata:

name: wp-pv

labels:

app: wordpress

spec:

capacity:

storage: 5Gi

accessModes:

- ReadWriteOnce

persistentVolumeReclaimPolicy: Recycle

nfs:

path: /kube/wordpress

server: kube-master

2.创建存放mysql data的PVC

# kubectl create -f mysql-pvc.yaml

kind: PersistentVolumeClaim

apiVersion: v1

metadata:

name: mysql-pv-claim

labels:

app: mysql

spec:

accessModes:

- ReadWriteOnce

resources:

requests:

storage: 2Gi

3.创建存放wordpress源码的PVC

# kubectl create -f wordpress-pvc.yaml

kind: PersistentVolumeClaim

apiVersion: v1

metadata:

name: wp-pv-claim

labels:

app: wordpress

spec:

accessModes:

- ReadWriteOnce

resources:

requests:

storage: 2Gi

查看绑定

# kubectl get pvc

NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE

mysql-pv-claim Bound mysql-pv 5Gi RWO 3m

wp-pv-claim Bound wp-pv 5Gi RWO 6s

三. Secret配置

1.创建mysql root password

# kubectl create secret generic mysql-pass --from-literal='password=countonme'

四. Deployment配置

1.部署mysql deployment with PVC

# kubectl create -f mysql-deployment.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

name: wordpress-mysql

labels:

app: wordpress

spec:

selector:

matchLabels:

app: wordpress

tier: mysql

strategy:

type: Recreate

template:

metadata:

labels:

app: wordpress

tier: mysql

spec:

containers:

- image: mysql:5.6

name: mysql

env:

- name: MYSQL_ROOT_PASSWORD

valueFrom:

secretKeyRef:

name: mysql-pass

key: password

ports:

- containerPort: 3306

name: mysql

volumeMounts:

- name: mysql-persistent-storage

mountPath: /var/lib/mysql

volumes:

- name: mysql-persistent-storage

persistentVolumeClaim:

claimName: mysql-pv-claim

2.部署wordpress deployment with PVC

# kubectl create -f wordpress-deployment.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

name: wordpress

labels:

app: wordpress

spec:

selector:

matchLabels:

app: wordpress

tier: frontend

strategy:

type: Recreate

template:

metadata:

labels:

app: wordpress

tier: frontend

spec:

containers:

- image: wordpress:4.8-apache

name: wordpress

env:

- name: WORDPRESS_DB_HOST

value: wordpress-mysql

- name: WORDPRESS_DB_PASSWORD

valueFrom:

secretKeyRef:

name: mysql-pass

key: password

ports:

- containerPort: 80

name: wordpress

volumeMounts:

- name: wordpress-persistent-storage

mountPath: /var/www/html

volumes:

- name: wordpress-persistent-storage

persistentVolumeClaim:

claimName: wp-pv-claim

3.Service配置

Tip: 这里我们开启了node IP的80端口的外部访问权限, 可以方便我们直接利用主机去访问虚拟机任意Node地址从而登录我们的Wordpress网站.

# kubectl create -f wp-svc.yaml

apiVersion: v1

kind: Service

metadata:

name: wordpress-mysql

labels:

app: wordpress

spec:

ports:

- port: 3306

selector:

app: wordpress

tier: mysql

clusterIP: None

---

apiVersion: v1

kind: Service

metadata:

name: wordpress

labels:

app: wordpress

spec:

ports:

- port: 80

nodePort: 80

selector:

app: wordpress

tier: frontend

type: NodePort

Tip: 这里service定义的name: wordpress-mysql保证我们wordpress-deployment.yaml定义的如下环境变量可以作为有效的域名成功去访问我们的mysql容器, 保证网站服务器与数据库服务器的通讯.

env:

- name: WORDPRESS_DB_HOST

value: wordpress-mysql

五. 验证结果

1.访问wordpress主页

这里我们可以直接在浏览器访问任意node的IP地址从而进入wordpress主页

添加相关信息并初始化安装WordPress

完成安装

后台

主页

2.查看NFS主机对在容器里的mysql data与wordpress root dir的目录挂载.

有兴趣的小伙伴可以直接访问如下代码仓库去下载本文相关代码:

Finished...

后记:

如果我们使用helm包管理去部署wordpress, 将大大简化我们的工作量.

这里我的代码仓库提供了wordpress chart部署脚本, 以下是详细的部署步骤:

Prerequisite:

Kubernetes cluster setup

Helm setup

Helm deployment:

# git clone git@git.showerlee.com:showerlee/kube-deploy.git

# cd kube-deploy

# kubectl create secret generic mysql-pass --from-literal='password=countonme'

# helm install --name wordpress-mysql ./wordpress-helm-chart --set service.type=NodePort

NAME: wordpress-mysql

LAST DEPLOYED: Sat Apr 14 03:09:46 2018

NAMESPACE: default

STATUS: DEPLOYED

RESOURCES:

==> v1/PersistentVolume

NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE

mysql-pv 5Gi RWO Recycle Bound default/mysql-pv-claim 1s

wp-pv 5Gi RWO Recycle Bound default/wp-pv-claim 1s

==> v1/PersistentVolumeClaim

NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE

mysql-pv-claim Bound mysql-pv 5Gi RWO 1s

wp-pv-claim Bound wp-pv 5Gi RWO 1s

==> v1/Service

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

wordpress-mysql ClusterIP None 3306/TCP 1s

wordpress NodePort 10.110.14.233 80:80/TCP 1s

==> v1/Deployment

NAME AGE

wordpress-mysql 1s

wordpress 1s

NOTES:

1. Get the application URL by running these commands:

export NODE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services wordpress-mysql-wordpress-helm-chart)

export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")

echo http://$NODE_IP:$NODE_PORT

正文部分到此结束

wordpress mysql port_Kubernetes相关推荐

  1. 从零开始学习docker(十)搭建WordPress+Mysql,为什么要用Docker Compose

    我们从这一节开始介绍一个非常非常重要的工具--Docker Compose,这个工具会经常使用. 先从一个案例介绍一下我们为什么要用Docker Compose. 案例:如何通过容器部署一个WordP ...

  2. code-server、docker-compose安装wordpress+mysql、wordpress公式插件、markdown插件、目录插件、调序插件、统计插件、分享点赞打赏插件

    文章目录 缘起 一.code-server 1.1 code-server简介 1.2 code-server安装和启动 1.3 code-server安全配置 1.3.1 域名申请和备案 1.3.2 ...

  3. wordpress mysql 密码重置_WordPress忘记密码找回登录密码的四种行之有效的方法

    WordPress忘记密码找回登录密码的四种行之有效的方法 PS:20170214更新,感谢SuperDoge同学提供的方法,登入phpMyAdmin后,先从左边选自己的数据库,然后点上面的 SQL ...

  4. wordpress mysql 5.7_CentOS7 运维 - 搭建WordPress论坛 | 超详细 | MySQL安装使用

    准备环境 服务器操作系统:CentOS7 部署服务器:Apache HTTP 数据库:MySQL 框架:WordPress 一.安装Apache HTTP sudo yum install httpd ...

  5. linux wordpress mysql 配置_linux下搭建wordpress站点

    搭建php站点 安装并启动 apache | mysql | php yum install -y httpd mysql mysql-server php php-mysql #启动apache m ...

  6. wordpress mysql优化_wordpress优化mysql数据库的方法

    和大家分享一下wordpress优化mysql数据库的方法,详情如下: wordpress优化mysql数据库的方法 mysql数据库良好稳定有效率的运行,除了linux操作系统给予强力支持外,还需要 ...

  7. wordpress mysql备份_wordpress怎么备份数据库

    wordpress的优势是开源,支持各种插件主题,最大的缺点就是吃主机性能,所以一些博主选择了zblog建站.人各有志,我还是喜欢Wordpress,毕竟wordpress是世界上最受欢迎的博客程序. ...

  8. wordpress mysql主机_怎样把WordPress网站迁移到新虚拟主机?

    作者: meilin 位于: 数码电子 把网站迁移到一个新主机是令许多人感到头痛的事情.但掌握技巧,并肯花些时间做准备,迁移网站实际上很简单.下面让我手把手的教给你,把WordPress网站转移到新虚 ...

  9. wordpress mysql 安装_wordpress 搭建安装教程 1 安装数据库、SQLyog

    php-7.3.4-Win32-VC15-x64.zip  如果下载失效,从这里下载(英文版) https://windows.php.net/downloads/releases/php-7.3.5 ...

  10. wordpress mysql 挂了_大神们,诊断一下,wampserver的mysql老是挂掉!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 访问提示:"建立数据库连接时出错" 重启动wampserver的mysql服务后可以正常访问 130622 18:26:07 [Not ...

最新文章

  1. layer.open嵌入地址链接
  2. 计算机组装与维修是几级考试,计算机组装与维修期末考试试卷讲解学习.pdf
  3. bulk这个词的用法_雅思考试真题解析|雅思听力“正负含义词”的妙用
  4. ThinkPHP- 3.1
  5. linux-命令模式-光标定位-编辑中20.22
  6. torch.nn与torch.nn.functional
  7. 参考文献如何居中_一线教师如何写教育教学论文?
  8. Web API-DOM-滚动事件、加载事件和元素大小和位置
  9. GJB150.18A-2009机械冲击试验测试要求
  10. STM32 flash 大小
  11. java拍照搜题软件下载_微信拍照搜答案的小程序 可以拍照搜java题的软件
  12. 微信用户扫码登录和登录退出的业务逻辑实现(java版)
  13. 用Pandas进行数据清洗
  14. 键盘侠小心了!微博或将推出“杠精”示众功能
  15. CTGU·OJ 快乐
  16. 打印机如何双面打印、复印?
  17. 匹配的通配符很全面,但无法找到元素mvc:annotation-driven的声明
  18. Java语音技术之FreeTTS
  19. 厦大C在线实验题3 分数约简
  20. 用MATLAB画圣诞树的源代码

热门文章

  1. RBG-D深度相机的相关资料
  2. untiy对过相机参数计算视场角
  3. Atitit 单片机与嵌入式系统原理与概念 目录 1. 寄存器、数据库,堆栈 2 1.1. 寻址模式 2 1.2. 指令 2 1.3. Watchdog 中断 2 2. 软件是如何影响硬件设计的 2
  4. Atitit 声音和音乐检索 多媒体信息检索 信息检索 目录 1.1. 14.4.5 音频基础知识 1 1.2. 多媒体信息检索的方法主要有哪些?其原理是什么? 1 1.3. 基于文本的检索和基于
  5. Atitit ftp概念与ftpclient 目录 1. Concept 1 1.1. Tftp(simple ftp) sftp ssh port22 1 1.2. ftp server
  6. Atitit 项目沟通管理 Atitit 沟通之道 attilax著.docx
  7. (转)王小川湖畔大学演讲:人工智能最具商业价值的是什么?
  8. 《金融时报》和麦肯锡:本年度最佳书单
  9. 2019 年 Linux 架构师最新熬夜制作!
  10. 【优化算法】晶体结构算法【含Matlab源码 1800期】