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 验证数据

相关推荐
等什么君!8 小时前
docker -数据卷技术
运维·docker·容器
花酒锄作田8 小时前
Debian 13基于kubeadm和containerd部署单节点kubernetes
kubernetes·containerd·cilium
上天_去_做颗惺星 EVE_BLUE9 小时前
Docker高效使用指南:从基础到实战模板
开发语言·ubuntu·docker·容器·mac·虚拟环境
好好沉淀10 小时前
Docker开发笔记(详解)
运维·docker·容器
Ankie Wan11 小时前
cgroup(Control Group)是 Linux 内核提供的一种机制,用来“控制、限制、隔离、统计”进程对系统资源的使用。
linux·容器·cgroup·lxc
lcx_defender13 小时前
【Docker】Docker部署运行nacos
运维·docker·容器
啦啦啦小石头13 小时前
docker添加用户权限不使用sudo
运维·docker·容器
春日见14 小时前
Autoware使用教程
大数据·人工智能·深度学习·elasticsearch·搜索引擎·docker·容器
Dontla15 小时前
Kubernetes流量管理双雄:Ingress与Gateway API解析(Nginx与Ingress与Gateway API的关系)
nginx·kubernetes·gateway
lcx_defender15 小时前
【Docker】Docker部署运行Kibana
运维·docker·容器