K8s实现wordpress项目
PV
所有节点都要装nfs
yum install -y nfs-utils-*
mkdir /wp/data /wp/code -p
vim /etc/exports
/wp/data 192.168.2.0/24(rw,async,no_root_squash,no_all_squash)
/wp/code 192.168.2.0/24(rw,async,no_root_squash,no_all_squash)
systemctl start rpcbind
systemctl start nfs
systemctl enable rpcbind
systemctl enable nfs
定义mysql pv
[root@k8s-m yml]# cat mysql_pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pvdata
labels:
type: pvdata
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Recycle
nfs:
path: "/wp/data"
server: 192.168.2.50
readOnly: false
定义wordpress pv
[root@k8s-m yml]# cat nfs_pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pvcode
labels:
type: pvcode
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Recycle
nfs:
path: "/wp/code"
server: 192.168.2.50
readOnly: false
创建pv
kubectl create -f mysql_pv.yml
kubectl create -f nfs_pv.yml
定义 Mysql pvc
[root@k8s-m yml]# cat mysqlpvc.yml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: data-mysql
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
[root@k8s-m yml]# cat wppvc.yml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: wp-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
创建PVC
kubectl create -f mysqlpvc.yml
kubectl create -f wppvc.yml
定义mysql rc
把mysql5.7镜像推到私有仓库中
docker pull docker.io/alecchyi/mysq
docker tag docker.io/alecchyi/mysql 192.168.2.50:5000/k8images/mysql5.7:v1
docker push 192.168.2.50:5000/k8images/mysql5.7:v1
[root@k8s-m yml]# cat mysql-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: mysql
spec:
replicas: 1
selector:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: 192.168.2.50:5000/k8images/mysql5.7:v1
ports:
- containerPort: 3306
volumeMounts:
- name: nfs-vol
mountPath: /var/lib/mysql
env:
- name: MYSQL_ROOT_PASSWORD
value: "somewordpress"
- name: MYSQL_DATABASE
value: "wordpress"
- name: MYSQL_USER
value: "wordpress"
- name: MYSQL_PASSWORD
value: "wordpress"
volumes:
- name: nfs-vol
persistentVolumeClaim:
claimName: data-mysql
定义mysql svc
[root@k8s-m yml]# cat mysql-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306
selector:
app: mysql
创建 mysql rc svc
kubectl create -f mysql-rc.yaml
kubectl create -f mysql-svc.yaml
kubectl get rc
kubectl get svc
kubectl get pod
定义 wordpress rc svc
把wordpress镜像推到私有仓库
docker pull wordpress
docker tag docker.io/wordpress 192.168.2.50:5000/k8images/wordpress:v1
查看myscl svc 地址 填写到wordpress 连接数据库地址
kubectl get svc
[root@k8s-m yml]# cat myweb-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: myweb
spec:
replicas: 1
selector:
app: myweb
template:
metadata:
labels:
app: myweb
spec:
containers:
- name: myweb
image: 192.168.2.50:5000/k8images/wordpress:v1
ports:
- containerPort: 80
volumeMounts:
- name: nfs-vol
mountPath: /var/www/html
env:
- name: WORDPRESS_DB_HOST
value: '10.254.191.64'
- name: WORDPRESS_DB_USER
value: 'wordpress'
- name: WORDPRESS_DB_PASSWORD
value: 'wordpress'
volumes:
- name: nfs-vol
persistentVolumeClaim:
claimName: wp-pvc
[root@k8s-m yml]# cat myweb-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: myweb
spec:
type: NodePort
ports:
- port: 80
nodePort: 30008
selector:
app: myweb
创建 WordPress rc svc
kubectl create -f myweb-rc.yaml
kubectl create -f myweb-svc.yaml
kubectl get pod
kubectl describe rc -l app=myweb
浏览器访问
http://192.168.2.51:30008/