在kubernetes集群中搭建LNMP并运行discuz

文档整理 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

原文地址:http://blog.51cto.com/aminglinux/2177558

时间: 2024-10-08 22:35:13

在kubernetes集群中搭建LNMP并运行discuz的相关文章

Kubernetes集群中Service的滚动更新

Kubernetes集群中Service的滚动更新 二月 9, 2017 0 条评论 在移动互联网时代,消费者的消费行为已经"全天候化",为此,商家的业务系统也要保持7×24小时不间断地提供服务以满足消费者的需求.很难想像如今还会有以"中断业务"为前提的服务系统更新升级.如果微信官方发布公告说:每周六晚23:00~次日凌晨2:00进行例行系统升级,不能提供服务,作为用户的你会怎么想.怎么做呢?因此,各个平台在最初设计时就要考虑到服务的更新升级问题,部署在Kubern

Kubernetes集群部署搭建(二进制包)

一. 环境规划 System Centos 7.4 Kubernetes 1.9 Docker 18.03.0-ce Etcd 3.2 Flannel 0.9 节点角色 IP 部署组件 配置 Master Node1 192.168.117.50 Kube-apiserver,   kube-controller-manager ,kube-schedule, etcd ,docker, flannel ,kubelet kube-proxy 2核2G Node2 192.168.117.60

在kubernetes集群中运行nginx

在完成前面kubernetes数据持久化的学习之后,本节我们开始尝试在k8s集群中部署nginx应用,对于nginx来说,需要持久化的数据主要有两块:1.nginx配置文件和日志文件2.网页文件 一.配置nginx网页文件持久化1.ReplicationController配置文件如下 # cat nginx-rc.yaml apiVersion: v1 kind: ReplicationController metadata: name: nginx-test labels: name: ng

kubernetes集群中使用ingress发布服务

当我们将kubernetes的应用部署完之后,就需要对外发布服务的访问地址.kubernetes 将服务发布到外部访问的方式主要有:LoadBlancer ServiceNodePort ServiceIngress 一.LoadBlancer ServiceLoadBlancer Service 是 kubernetes 深度结合云平台的一个组件:当使用 LoadBlancer Service 暴露服务时,实际上是通过向底层云平台申请创建一个负载均衡器来向外暴露服务:目前 GCE.AWS.阿里

在kubernetes集群中部署mysql主从

本文介绍在kubernetes环境中部署mysql主从集群,数据持久化采用nfs. 一.环境介绍Mysql版本:5.7 Mysql master节点: 主机名:vm1IP地址:192.168.115.5/24 Mysql slave节点: 主机名:vm2IP地址:192.168.115.6/24 NFS节点:主机名:vm2IP地址:192.168.115.6/24共享目录:/home/mysql_master./home/mysql_slave 二.准备mysql主从的镜像环境dockerfil

《二》Kubernetes集群部署-搭建集群

多master集群架构图 时间必须同步.关闭防火墙.Firewalld.selinux 1.拷贝master01 中的kubernetes目录到master02上[[email protected] ~]# scp -r /opt/kubernetes/ 192.168.1.16:/opt/ 2.启动脚本[[email protected] kubeconfig]# scp /usr/lib/systemd/system/{kube-apiserver,kube-controller-manag

在kubernetes集群中部署php应用

本文将介绍在kubernetes环境中部署一套php应用系统.前端web采用nginx.中间件php以fastcgi的方式运行,后台数据库由mysql主从提供支撑.各服务组件之间的调用采用dns解析服务名的方式进行,数据和配置文件持久化采用pv和pvc(基于nfs). 一.通过dockerfile创建php镜像文件 # cat dockerfile FROM docker.io/openshift/base-centos7:latest MAINTAINER ylw "[email protec

Kubernetes集群搭建过程中遇到的问题

1. 创建Nginx Pod过程中报如下错误: #kubectlcreate -f nginx-pod.yaml Error from server: error when creating "nginx-pod.yaml": Pod "nginx" is forbidden: no API token found for service account default/default, retry after the token is automatically

kubernetes 集群的安装部署

本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 首先kubernetes得官方文档我自己看着很乱,信息很少,所以结合了很多博客搭建的 其次因为既然用到docker,当然离不开kubernetes管理,还有swarm,前者管理复杂,但功能齐全 这里仅仅是安装部署,还未使用,具体使用出现问题后续更新 前提条件 系统时centos7上 关闭防火墙 systemctl stop firewalld.service