基于kubernetes环境搭建wordpress

集群情况:

k8s环境是1.25.3,操作系统为ubuntu20.04版本

主节点k8s-master0110.0.0.12ubuntu20.04
工作节点1k8s-node0110.0.0.13ubuntu20.04
工作节点2k8s-node0210.0.0.14ubuntu20.04
工作节点3k8s-node0310.0.0.15ubuntu20.04

nfs服务器

nfs-server10.0.0.22ubuntu20.04

1.安装nfs-server、nfs依赖包

#安装nfs服务
root@nfs-server:~# apt update
root@nfs-server:~# apt install nfs-server -y



#master01节点安装nfs依赖包
root@master-k8s:~# apt update
root@master-k8s:~# apt install nfs-common -y

#node01节点安装nfs依赖包
root@node1-k8s:~# apt update
root@node1-k8s:~# apt install nfs-common -y

#node02节点安装nfs依赖包
root@node2-k8s:~# apt update
root@node2-k8s:~# apt install nfs-common -y

#node03节点安装nfs依赖包
root@node3-k8s:~# apt update
root@node3-k8s:~# apt install nfs-common -y

2.配置nfs-server

root@nfs-server:~# mkdir -p /data/mysql #创建挂载目录
root@nfs-server:~# vim /etc/exports
/data/mysql 10.0.0.0/24(rw,no_root_squash)

root@nfs-server:~# systemctl restart nfs-server


#测试创建目录
root@master-k8s:~# mount -t nfs 10.0.0.22:/data/mysql /mnt
root@master-k8s:~# cd /mnt/
root@master-k8s:/mnt# echo "123" > test.txt
root@master-k8s:/mnt# ls
test.txt

#每个节点挂载目录
root@node01-k8s:~# mount -t nfs 10.0.0.22:/data/mysql /mnt
root@node02-k8s:~# mount -t nfs 10.0.0.22:/data/mysql /mnt
root@node03-k8s:~# mount -t nfs 10.0.0.22:/data/mysql /mnt

3.创建wordpress pod以及svc

root@k8s-master01:~/wp# cat wordpress.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: wp
  name: wp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: wp
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: wp
    spec:
      containers:
      - image: wordpress:5.8.2-apache
        name: wordpress
        env:
        - name: WORDPRESS_DB_HOST
          value: "db"
        - name: WORDPRESS_DB_USER
          value: "wpadmin"
        - name: WORDPRESS_DB_PASSWORD
          value: "wpP@ss"
        - name: WORDPRESS_DB_NAME
          value: "wpdb"
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: wp
  name: wp
spec:
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 80
    nodePort: 30009    #指定暴露的端口
  selector:
    app: wp
  type: NodePort


root@k8s-master01:~/wp# kubectl apply -f wordpress.yaml 

这里我选择的svc是NodePort类型

4.查看创建pod、svc

root@k8s-master01:~/wp# kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        22d
wp           NodePort    10.102.143.52   <none>        80:30009/TCP   6s



root@k8s-master01:~/wp# kubectl get pod
NAME                         READY   STATUS    RESTARTS       AGE
wp-6c696687b-k85hj           1/1     Running   0              93s


5.创建pv、pvc

root@k8s-master01:~/wp# cat mysql_pv.yaml 
apiVersion: v1	
kind: PersistentVolumeClaim
metadata:
  name: pvc-mysql
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-mysql
spec:
  capacity:
    storage: 3Gi         #定义pv大小
  accessModes:
    - ReadWriteMany      #定义权限
  nfs:                   #这里定义了nfs存储
    path: /data/mysql
    server: 10.0.0.22

root@k8s-master01:~/wp# kubectl apply -f mysql_pv.yaml 

6.查看创建pv、pvc情况

root@k8s-master01:~/wp# kubectl get pv
NAME       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM               STORAGECLASS   REASON   AGE
pv-mysql   3Gi        RWX            Retain           Bound    default/pvc-mysql                           18s
root@k8s-master01:~/wp# kubectl get pvc
NAME        STATUS   VOLUME     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
pvc-mysql   Bound    pv-mysql   3Gi        RWX                           21s

7.创建mysql pod、svc

root@k8s-master01:~/wp# cat mysql1.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: db
  name: db
spec:
  replicas: 1
  selector:
    matchLabels:
      app: db
  template:
    metadata:
      labels:
        app: db
    spec:
      volumes:
        - name: wordpress-mysql
          persistentVolumeClaim:
            claimName: pvc-mysql
      containers:
      - image: mysql:8.0
        name: mysql
        volumeMounts:
          - name: wordpress-mysql
            mountPath: "/var/lib/mysql"
        env: #定义环境变量
        - name: MYSQL_RANDOM_ROOT_PASSWORD
          value: "true"
        - name: MYSQL_USER
          value: "wpadmin"
        - name: MYSQL_PASSWORD
          value: "wpP@ss"
        - name: MYSQL_DATABASE
          value: "wpdb"
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: db
  name: db
spec:
  ports:
  - name: 3306-3306
    port: 3306
    protocol: TCP
    targetPort: 3306
  selector:
    app: db
  type: ClusterIP

root@k8s-master01:~/wp# kubectl apply -f mysql1.yaml 

这里的svc我定义的是clusterip类型

8.查看创建效果

root@k8s-master01:~/wp# kubectl get pod
NAME                         READY   STATUS    RESTARTS       AGE
db-85b7794c99-nxxbw          1/1     Running   0              55s
root@k8s-master01:~/wp# kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
db           ClusterIP   10.99.207.229   <none>        3306/TCP       76s

#查看nfs-server
root@nfs-server:~# ls /data/mysql/
'#ib_16384_0.dblwr'   auto.cnf        ca-key.pem        ib_buffer_pool   mysql.ibd            public_key.pem    undo_001
'#ib_16384_1.dblwr'   binlog.000001   ca.pem            ibdata1          mysql.sock           server-cert.pem   undo_002
'#innodb_redo'        binlog.000002   client-cert.pem   ibtmp1           performance_schema   server-key.pem    wpdb
'#innodb_temp'        binlog.index    client-key.pem    mysql            private_key.pem      sys

9.测试访问

root@k8s-master01:~/wp# kubectl get svc
wp           NodePort    10.102.143.52   <none>        80:30009/TCP   7m20s

集群ip+端口

填写一下信息

实现效果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhu1241jie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值