文档整理 https://coding.net/u/aminglinux/p/k8s_discuz/git/tree/master

1 下载MySQL、PHP以及Nginx镜像

docker pull mysql:5.7
docker pull richarvey/nginx-php-fpm

2 将下载到的镜像push到harbor

docker tag mysql:5.7 harbor.yuankeedu.com/aminglinux/mysql:5.7
docker push harbor.yuankeedu.com/aminglinux/mysql:5.7
docker tag aming-nginx-php harbor.yuankeedu.com/aminglinux/nginx-php
docker push harbor.yuankeedu.com/aminglinux/nginx-php

3 搭建NFS服务

yum install nfs-utils
vim /etc/exportfs
/data/k8s/ 172.7.5.0/24(sync,rw,no_root_squash)
systemctl start nfs
systemctl enable nfs

mkdir -p  /data/k8s/discuz/{db,web}

4 搭建MySQL服务
1)创建secret
kubectl create secret generic mysql-pass --from-literal=password=DzPasswd123

2)创建pv

vim mysql-pv.yaml  //内容如下

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany
  nfs:
    path: /data/k8s/discuz/db
    server: 172.7.5.113

kubectl create -f mysql-pv.yaml

3)创建pvc

vim  mysql-pvc.yaml //内容如下

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-claim
  labels:
    app: discuz
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi

kubectl create -f mysql-pvc.yaml

4)创建deployment

vim mysql-dp.yaml  //内容如下

apiVersion: apps/v1
kind: Deployment
metadata:
  name: dz-mysql
  labels:
    app: discuz
spec:
  replicas: 2
  selector:
    matchLabels:
      app: discuz
      tier: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: discuz
        tier: mysql
    spec:
      containers:
      - image: harbor.yuankeedu.com/aminglinux/mysql:5.7
    imagePullSecrets:
      - name: my-secret 
        name: dz-mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-pass
              key: password
        ports:
        - containerPort: 3306
          name: dz-mysql
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-claim

kubectl create -f mysql-dp.yaml 

5)创建service

vim mysql-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: dz-mysql
  labels:
    app: discuz
spec:
  ports:
    - port: 3306
  selector:
    app: discuz
    tier: mysql

kubectl create -f mysql-svc.yaml

5 搭建nginx+php-fpm服务
1)创建pv

vim web-pv.yaml  //内容如下

apiVersion: v1
kind: PersistentVolume
metadata:
  name: web-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany
  nfs:
    path: /data/k8s/discuz/web
    server: 172.7.5.113

kubectl create -f web-pv.yaml

2)创建pvc

vim  web-pvc.yaml //内容如下

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: web-claim
  labels:
    app: discuz
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi

kubectl create -f web-pvc.yaml

3)创建deployment

vim web-dp.yaml  //内容如下

apiVersion: apps/v1
kind: Deployment
metadata:
  name: dz-web
  labels:
    app: discuz
spec:
  replicas: 1
  selector:
    matchLabels:
      app: discuz
      tier: nginx-php
  template:
    metadata:
      labels:
        app: discuz
        tier: nginx-php
    spec:
      containers:
      - image: harbor.yuankeedu.com/aminglinux/nginx-php
        name: dz-web
        ports:
        - containerPort: 9000
        - containerPort: 80
          name: dz-web
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/www/html/
      imagePullSecrets:
      - name: my-secret
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: web-claim

kubectl create -f web-dp.yaml 

4)创建service

vim web-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: dz-web
  labels:
    app: discuz
spec:
  ports:
    - port: 9000
  selector:
    app: discuz
    tier: nginx-php

kubectl create -f web-svc.yaml