Kubernetes部署WordPress

小柒博客 Kubernetes评论3612字数 5480阅读18分16秒阅读模式

一、WordPress简介

WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把WordPres当作一个内容管理系统(CMS)来使用。

WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的,用户可以在支持PHP和MySQL数据库的服务器上使用自己的博客。

WordPress有许多第三方开发的免费模板,安装方式简单易用。不过要做一个自己的模板,则需要你有一定的专业知识。比如你至少要懂的标准通用标记语言下的一个应用HTML代码、CSS、PHP等相关知识。

WordPress官方支持中文版,同时有爱好者开发的第三方中文语言包,如wopus中文语言包。WordPress拥有成千上万个各式插件和不计其数的主题模板样式。

二、创建StorageClass、Namespace

1、创建StorageClass

[root@cmp-k8s-dev-master01 ~]# mkdir kube-wordpress && cd kube-wordpress

[root@cmp-k8s-dev-master01 kube-wordpress]# vim kube-wordpress-storageclass.yaml

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: nfs-wordpress
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

[root@cmp-k8s-dev-master01 kube-wordpress]# kubectl apply -f kube-wordpress-storageclass.yaml

2、创建Namespace

[root@cmp-k8s-dev-master01 kube-wordpress]# vim kube-wordpress-namespace.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: kube-wordpress
  labels:
    app: wordpress

[root@cmp-k8s-dev-master01 kube-wordpress]# kubectl apply -f kube-wordpress-namespace.yaml

三、部署Mysql

1、创建Mysql的PV

注意:这里采用的是NFS,前提需要部署NFS

[root@cmp-k8s-dev-master01 kube-wordpress]# showmount -e 10.10.50.126

Export list for 10.10.50.126:

/data/mysql 10.10.50.0/24

/data/wordpress 10.10.50.0/24

[root@cmp-k8s-dev-master01 kube-wordpress]# vim kube-wordpress-mysql-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  labels:
    name: mysql-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
  - ReadWriteMany 
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs-wordpress
  nfs:
    path: /data/mysql
    server: 10.10.50.126

[root@cmp-k8s-dev-master01 kube-wordpress]# kubectl apply -f kube-wordpress-mysql-pv.yaml

persistentvolume/mysql-pv created

2、创建Mysql的PVC

[root@cmp-k8s-dev-master01 kube-wordpress]# vim kube-wordpress-mysql-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
  namespace: kube-wordpress
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 10Gi
  storageClassName: nfs-wordpress

[root@cmp-k8s-dev-master01 kube-wordpress]# kubectl apply -f kube-wordpress-mysql-pvc.yaml

persistentvolumeclaim/mysql-pvc created

3、创建Mysql的Deployment

[root@cmp-k8s-dev-master01 kube-wordpress]# vim kube-wordpress-mysql-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: mysql
  name: mysql
  namespace: kube-wordpress
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.7
        imagePullPolicy: IfNotPresent
        args: 
        - --default_authentication_plugin=mysql_native_password
        - --character-set-server=utf8mb4
        - --collation-server=utf8mb4_unicode_ci
        ports:
        - name: mysql-port
          containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: sX6aXuSYSDpCr5Qt
        - name: MYSQL_DATABASE
          value: wordpress
        - name: MYSQL_USER
          value: wordpress
        - name: MYSQL_PASSWORD
          value: wordpress          
        volumeMounts:
        - name: mysql-dir
          mountPath: /var/lib/mysql
      volumes:
        - name: mysql-dir
          persistentVolumeClaim: 
            claimName: mysql-pvc

[root@cmp-k8s-dev-master01 kube-wordpress]# kubectl apply -f kube-wordpress-mysql-deploy.yaml

deployment.apps/mysql created

4、创建Mysql的Service

[root@cmp-k8s-dev-master01 kube-wordpress]# vim kube-wordpress-mysql-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: wordpress-mysql
  namespace: kube-wordpress
  labels:
    app: wordpress
spec:
  ports:
  - port: 3306
    targetPort: 3306 
  selector:
    app: mysql

[root@cmp-k8s-dev-master01 kube-wordpress]# kubectl apply -f kube-wordpress-mysql-svc.yaml

service/wordpress-mysql created

四、部署WordPress

1、创建WordPress的Deployment

[root@cmp-k8s-dev-master01 kube-wordpress]# vim kube-wordpress-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
  namespace: kube-wordpress
  labels:
    app: wordpress
spec:
  replicas: 3
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      containers:
      - name: wordpress
        image: wordpress:latest
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
        env:
        - name: WORDPRESS_DB_HOST
          value: wordpress-mysql:3306
        - name: WORDPRESS_DB_USER
          value: wordpress
        - name: WORDPRESS_DB_PASSWORD
          value: wordpress

[root@cmp-k8s-dev-master01 kube-wordpress]# kubectl apply -f kube-wordpress-deploy.yaml

deployment.apps/wordpress created

2、创建WordPress的Service

[root@cmp-k8s-dev-master01 kube-wordpress]# vim kube-wordpress-svc.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: wordpress
  name: wordpress-service
  namespace: kube-wordpress   
spec:
  ports:
  - name: wordpress 
    port: 80
    protocol: TCP
    targetPort: 80
    nodePort: 30088
  selector:
    app: wordpress
  type: NodePort

[root@cmp-k8s-dev-master01 kube-wordpress]# kubectl apply -f kube-wordpress-svc.yaml

service/wordpress-service created

3、kube-wordpress列表清单

[root@cmp-k8s-dev-master01 kube-wordpress]# kubectl get all -n kube-wordpress

NAME                                                 READY   STATUS         RESTARTS   AGE

pod/mysql-65479dd978-qg7z6        1/1        Running         0                 20m

pod/wordpress-d857c8dcf-42f9p     1/1        Running         0                 10m

pod/wordpress-d857c8dcf-8mdws   1/1        Running         0                 10m

pod/wordpress-d857c8dcf-v4c7s      1/1        Running         0                 10m

 

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

service/wordpress-mysql    ClusterIP     172.10.230.153   <none>        3306/TCP         3m12s

service/wordpress-service   NodePort   172.10.12.234     <none>        80:30088/TCP  2m38s

 

NAME                                       READY   UP-TO-DATE   AVAILABLE     AGE

deployment.apps/mysql          1/1        1                      1                     46m

deployment.apps/wordpress   3/3        3                      3                     10m

NAME                                                      DESIRED   CURRENT   READY   AGE

replicaset.apps/mysql-65479dd978       1               1                1            20m

replicaset.apps/wordpress-d857c8dcf   3               3                3            10m

4、访问Wordpress

1)浏览器输入http://节点IP:30088,出现以下界面

Kubernetes部署WordPress

2)输入对应信息,点击安装WordPress

Kubernetes部署WordPress

Kubernetes部署WordPress

3)输入前面创建用户名和密码

Kubernetes部署WordPress

Kubernetes部署WordPress

至此,K8s搭建WordPress完毕。

继续阅读
若文章图片、下载链接等信息出错,请在评论区留言反馈,博主将第一时间更新!如果喜欢本站,请打赏支持本站,谢谢!
  • 微信号
  • 微信扫一扫加我!
  • weinxin
  • 微信公众号
  • 微信扫一扫关注我!
  • weinxin
小柒博客
  • 本文由 发表于 2022-10-24 11:02:40
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
Docker-compose部署WordPress Docker

Docker-compose部署WordPress

一、Docker-compose简介 WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管...
CentOS 7.9基于kubeadm部署kubernetes v1.25.2 Kubernetes

CentOS 7.9基于kubeadm部署kubernetes v1.25.2

一、Kubernetes简介 Kubernetes(简称K8S)是开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。它既是一款容器编排工具,也是全新的基于容器技术的分...
Kubernetes 1.20.11部署Dashboard Kubernetes

Kubernetes 1.20.11部署Dashboard

一、Dashboard简介 Dashboard是一个基于Web的Kubernetes用户界面。您可以使用Dashboard将容器化应用程序部署到Kubernetes集群、对容器化应用程序进行故障...
Kubernetes部署Redis集群 Kubernetes

Kubernetes部署Redis集群

一、Redis简介 Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zse...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: