WordPress部署新玩法:利用NFS存储在Kubernetes中实现数据持久化

1 编写资源清单

sh 复制代码
[root@k8s-node01 /data/manifests/rc]# cat wordpress-nfs.yaml 
apiVersion: v1
kind: Namespace
metadata:
  name: wp-blog
spec: {}
status: {}
---
apiVersion: v1
kind: ReplicationController
metadata:
  name: wp-mysql
  namespace: wp-blog
  labels:
    app: mysql
spec:
  replicas: 1
  selector:
    app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      volumes:
      - name: wp-mysql
        nfs:
          server: 11.0.1.8
          path: /data/nfs-server/wp-mysql
      containers:
      - name: mysql
        image: mysql:8.0
        imagePullPolicy: IfNotPresent
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"
        - name: MYSQL_USER
          value: "wpuser"
        - name: MYSQL_PASSWORD
          value: "wppass"
        - name: MYSQL_DATABASE
          value: "wordpress"
        volumeMounts:
        - mountPath: "/var/lib/mysql"
          name: wp-mysql
      restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  name: mysql-svc
  namespace: wp-blog
spec:
  #clusterIP: 10.99.100.100
  ports:
  - name: 3306-3306
    port: 3306
    protocol: TCP
    targetPort: 3306
  selector:
    app: mysql
  type: ClusterIP
---
apiVersion: v1
kind: ReplicationController
metadata:
  name: wordpress
  namespace: wp-blog
  labels:
    app: wordpress
spec:
  replicas: 3
  selector:
    app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      volumes:
      - name: wp-data
        nfs:
          server: 11.0.1.8
          path: /data/nfs-server/wp-data
      containers:
      - name: wordpress
        image: wordpress:latest
        imagePullPolicy: IfNotPresent
        env:
        - name: WORDPRESS_DB_HOST
          #value: 10.99.100.100
          value: mysql-svc
        - name: WORDPRESS_DB_NAME
          value: wordpress
        - name: WORDPRESS_DB_USER
          value: wpuser
        - name: WORDPRESS_DB_PASSWORD
          value: wppass
        volumeMounts:
        - name: wp-data
          mountPath: /var/www/html
      restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  name: wp-svc
  namespace: wp-blog
spec:
  ports:
  - name: 80-80
    port: 80
    targetPort: 80
    nodePort: 30090
  selector:
    app: wordpress
  type: NodePort

2 创建资源并上传数据

2.1 创建资源并验证

sh 复制代码
[root@k8s-node01 /data/manifests/rc]# kubectl apply -f wordpress-nfs.yaml 
namespace/wp-blog created
replicationcontroller/wp-mysql created
service/mysql-svc created
replicationcontroller/wordpress created
service/wp-svc created
[root@k8s-node01 /data/manifests/rc]# kubectl -n wp-blog get pods,svc -owide --show-labels 
NAME                  READY   STATUS    RESTARTS   AGE   IP             NODE                     NOMINATED NODE   READINESS GATES   LABELS
pod/wordpress-hkd64   1/1     Running   0          64s   10.244.1.170   k8s-node01.dinginx.org   <none>           <none>            app=wordpress
pod/wordpress-wmdl5   1/1     Running   0          64s   10.244.2.230   k8s-node02.dinginx.org   <none>           <none>            app=wordpress
pod/wordpress-x4x5n   1/1     Running   0          64s   10.244.2.229   k8s-node02.dinginx.org   <none>           <none>            app=wordpress
pod/wp-mysql-l67t5    1/1     Running   0          64s   10.244.2.228   k8s-node02.dinginx.org   <none>           <none>            app=mysql

NAME                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE   SELECTOR        LABELS
service/mysql-svc   ClusterIP   10.103.169.68   <none>        3306/TCP       64s   app=mysql       <none>
service/wp-svc      NodePort    10.108.68.58    <none>        80:30090/TCP   64s   app=wordpress   <none>

2.2 访问测试

2.3 上传数据

3 验证删除Pod数据不丢失

3.1 删除所有资源并再次创建

sh 复制代码
#删除所有资源
[root@k8s-node01 /data/manifests/rc]# kubectl delete -f .
namespace "wp-blog" deleted
replicationcontroller "wp-mysql" deleted from wp-blog namespace
service "mysql-svc" deleted from wp-blog namespace
replicationcontroller "wordpress" deleted from wp-blog namespace
service "wp-svc" deleted from wp-blog namespace
[root@k8s-node01 /data/manifests/rc]# 

#再次创建验证数据
[root@k8s-node01 /data/manifests/rc]# kubectl apply -f  .
namespace/wp-blog created
replicationcontroller/wp-mysql created
service/mysql-svc created
replicationcontroller/wordpress created
service/wp-svc created

#查看资源及对外访问端口
[root@k8s-node01 /data/manifests/rc]# kubectl -n wp-blog get pods,svc -owide --show-labels 
NAME                  READY   STATUS    RESTARTS   AGE   IP             NODE                     NOMINATED NODE   READINESS GATES   LABELS
pod/wordpress-7gdg9   1/1     Running   0          3s    10.244.2.217   k8s-node02.dinginx.org   <none>           <none>            app=wordpress
pod/wordpress-tnp44   1/1     Running   0          3s    10.244.2.218   k8s-node02.dinginx.org   <none>           <none>            app=wordpress
pod/wordpress-wkzv4   1/1     Running   0          3s    10.244.1.166   k8s-node01.dinginx.org   <none>           <none>            app=wordpress
pod/wp-mysql-7dkrw    1/1     Running   0          3s    10.244.2.216   k8s-node02.dinginx.org   <none>           <none>            app=mysql

NAME                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE   SELECTOR        LABELS
service/mysql-svc   ClusterIP   10.99.100.100   <none>        3306/TCP       3s    app=mysql       <none>
service/wp-svc      NodePort    10.99.135.202   <none>        80:30090/TCP   3s    app=wordpress   <none>

3.2 验证数据

相关推荐
wb18939 分钟前
Kubernetes服务优化
云原生·容器·kubernetes
码点滴3 小时前
Workload 自动化进化论:从手动运维到 AI 驱动的 Kubernetes 智能管控
运维·人工智能·kubernetes·自动化·workload
darkdragonking3 小时前
Docker(五)OpenEuler22.03 安装docker ce、排坑
运维·docker·容器
ᰔᩚ. 一怀明月ꦿ3 小时前
MySQL 学习目标
学习·mysql·adb
Waay6 小时前
图文详解|K8s Pod内部结构
docker·云原生·kubernetes
码点滴6 小时前
CRI-O选型与容器运行时标准
开发语言·人工智能·架构·kubernetes·cri-o
万里侯8 小时前
Kubernetes成本优化:降低云原生基础设施成本的完整指南
微服务·容器·k8s
r-t-H10 小时前
KVM虚拟化与Docker基础实践-第二章
阿里云·docker·容器
牛奶咖啡1312 小时前
k8s容器编排技术实践——OpenEuler安装部署k8s
kubernetes·信创·containerd配置加速器·openeuler安装k8s·k8s的常见安装方式·彻底关闭swap·工作节点使用kubectl
老码观察12 小时前
K8s 容器化部署的宿主机资源规划的踩坑实录
docker·容器·kubernetes