Kubernetes部署WordPress

小柒博客 1 1,3444字数 931阅读3分6秒阅读模式

一、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

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

至此,K8s搭建WordPress完毕。

若文章图片、下载链接等信息出错,请在评论区留言反馈,博主将第一时间更新!如本文“对您有用”,欢迎随意打赏,谢谢!

继续阅读
Wechat
微信扫一扫,加我!
weinxin
微信号已复制
微信公众号
微信扫一扫,关注我!
weinxin
公众号已复制
小柒博客
  • 本文由 小柒博客 发表于 2022年10月24日 11:02:40
  • 声明:本站所有文章,如无特殊说明或标注,本站文章均为原创。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。转载请务必保留本文链接:https://www.yangxingzhen.com/8309.html
    • 哇哈哈
      哇哈哈 1

      亲测可用

    匿名

    发表评论

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

    拖动滑块以完成验证