目录
介绍
WordPress是一个基于PHP和MySQL的开源内容管理系统。它旨在帮助用户轻松创建和管理网站,最初作为一个简单的博客平台,但随着时间的推移,发展成为功能强大的CMS,支持数以千计的插件和主题,用户可以根据自己的需求进行自定义,下面将用k8s部署wordpress的过程
k8s编排部署WordPress+Mysql
(1)在master节点部署NFS服务,做共享存储;
(2)为MySQL创建PVC mysql-pv-claim,绑定PV mysql-persistent-storage,PV大小:20Gi,权限:RWO,回收策略:Recycle;
(3)为wordpress创建PVC wp-pv-claim,绑定PV wordpress-persistent-storage,PV大小:20Gi,权限:RWO,回收策略:Recycle;
(4)基于镜像mysql:5.6和wordpress:latest;
(5)wordpress service名称:wordpress,以NodePort方式对外暴露端口31000。
nfs准备
root@master \~#yum install --y nfs-utils rpcbind
root@master \~#mkdir /data-mysql /data-wordpress
root@master \~#chmod 777 /data-mysql
root@master \~#chmod 777 /data-wordpress
root@master \~#vi /etc/exports
/data-mysql *(rw,no_root_squash,sync)
/data-wordpress *(rw,no_root_squash,sync)
root@master \~#exportfs -rv
root@master \~#systemctl restart nfs rpcbind
root@node \~#showmount -e 192.168.20.14
建立pv与pvc后绑定pvpvc.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-persistent-storage
namespace: default
labels:
app: wordpress
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 20Gi
nfs:
path: /data-mysql
server: master
persistentVolumeReclaimPolicy: Recycle
storageClassName: nfs
apiVersion: v1
kind: PersistentVolume
metadata:
name: wordpress-persistent-storage
namespace: default
labels:
app: wordpress
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 20Gi
nfs:
path: /data-wordpress
server: master
persistentVolumeReclaimPolicy: Recycle
storageClassName: nfs
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
namespace: default
labels:
app: mysql
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
storageClassName: nfs
volumeName: mysql-persistent-storage
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wp-pv-claim
namespace: default
labels:
app: wordpress
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
storageClassName: nfs
volumeName: wordpress-persistent-storage
启动后查看
root@master k8sexam# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
mysql-persistent-storage 20Gi RWO Recycle Bound default/mysql-pv-claim nfs 24m
wordpress-persistent-storage 20Gi RWO Recycle Bound default/wp-pv-claim nfs 24m
root@master k8sexam# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
mysql-pv-claim Bound mysql-persistent-storage 20Gi RWO nfs 24m
wp-pv-claim Bound wordpress-persistent-storage 20Gi RWO nfs 24m
vi deployment.yaml-----------------------------------------------配置service与deployment及mysql-------------
kind: Service
apiVersion: v1
metadata:
labels:
app: wordpress
name: wordpress-mysql
spec:
ports:
- port: 3306
selector:
app: wordpress
tier: mysql
clusterIP: None
kind: Service
apiVersion: v1
metadata:
labels:
app: wordpress
name: wordpress
spec:
type: NodePort
ports:
- port: 80
nodePort: 31000
selector:
app: wordpress
tier: frontend
kind: Deployment
apiVersion: apps/v1
metadata:
labels:
app: wordpress
name: wordpress-mysql
spec:
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
tier: mysql
spec:
containers:
- name: mysql
image: mysql:5.6
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3306
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
value: '123456'
volumeMounts:
- name: mysql-pv
mountPath: /var/lib/mysql
volumes:
- name: mysql-pv
persistentVolumeClaim:
claimName: mysql-pv-claim
kind: Deployment
apiVersion: apps/v1
metadata:
labels:
app: wordpress
name: wordpress
spec:
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
tier: frontend
spec:
containers:
- name: wordpress
image: wordpress:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
name: wordpress
env:
- name: WORDPRESS_DB_HOST
value: wordpress-mysql
- name: WORDPRESS_DB_PASSWORD
value: '123456'
volumeMounts:
- name: wordpress-pv
mountPath: /var/www/html
volumes:
- name: wordpress-pv
persistentVolumeClaim:
claimName: wp-pv-claim
启动比较慢 1-3分钟
kubectl logs -f wordpress-*
kubectl logs -f wordpress-mysql-*
查看启动日志
`提示
ReadOnlyMany -- 卷可以被许多节点以只读方式挂载 只读多 (ROX)
`ReadWriteMany -- 卷可以被许多节点以读写方式挂载 读写多 (RWX)
`ReadWriteOnce -- 卷可以由单个节点以读写方式挂载 仅在一个 Node 上运行的多个 Pod可以连接到存储并进行读写操作



