16-k8s阶段性总结01-wordpress案例

2024-02-17 20:36

本文主要是介绍16-k8s阶段性总结01-wordpress案例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、案例架构

步骤简单分析:

        1,准备NFS环境

        2,【wordpress的pod】创建deployment资源的wordpress(pod)容器;

        3,【用户访问的svc】创建用户访问的svc资源;

        4,【数据库的pod】创建deployment资源的数据库服务的pod容器;

        5,【数据库的svc】创建业务服务wordpress的pod资源访问数据库的svc资源;

二、开始部署

1,准备NFS环境

        我们采用k8s外部虚拟机的路径,实现数据卷的nfs挂载,本次学习,我们采用harbor的虚拟机进行存储静态数据;

        由于,k8s集群,在创建业务pod时候,需要挂载外部的nfs,那么也需要有nfs的命令的使用,所以,k8s集群中 的机器,同样也需要安装nfs;

· 存储节点和k8s集群全部安装nfs工具

注意,是k8s集群所有节点,加上挂载节点(数据存储节点)都需要安装哦;

yum -y install nfs-utils

· nfs存储节点配置nfs配置文件

[root@harbor ~]# vim /etc/exports

/xinjizhiwa/data *(rw,no_root_squash)

· nfs存储节点创建存储路径

[root@harbor ~]# mkdir -p /xinjizhiwa/data/{mysql,wordpress}

· 启动nfs

[root@harbor ~]# systemctl enable --now nfs

验证是否成功

[root@harbor ~]# exportfs
/xinjizhiwa/data
        <world>

2,编辑wordpress的depoloy资源清单

[root@k8s231 deployment]# cat dm-wordpress.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dm-wp
spec:
  replicas: 3
  selector:
    matchLabels:
      k8s: wp
  template:
    metadata:
      name: pod01
      labels:
        k8s: wp
    spec:
      volumes:
      - name: vol-wp
        nfs:
          server: 10.0.0.230
          path: /xinjizhiwa/data/wordpress
      containers:
      - name: c-wp
        image: wordpress:latest
        ports:
        - name: wp-c-port
          containerPort: 80
        volumeMounts:
        - name: vol-wp
          mountPath: /var/www/html/wp-content/uploads
        env:
        - name: WORDPRESS_DB_HOST
          #数据库的svc资源的clusterIP地址;
          value: 10.200.200.200:3306
        - name: WORDPRESS_DB_USER
          value: xinjizhiwa
        - name: WORDPRESS_DB_PASSWORD
          value: xinjizhiwa
        - name: WORDPRESS_DB_NAME
          value: wordpress

3,编辑wordpress的svc资源

[root@k8s231 deployment]# vim svc-wordpress.yaml 

apiVersion: v1
kind: Service
metadata:
  name: svc-wp
spec:
  type: NodePort
  selector:
    k8s: wp
  clusterIP: 10.200.200.100
  ports:
  - port: 99
    targetPort: 80
    nodePort: 31000

4,编辑数据库的deploy资源清单

[root@k8s231 deployment]# cat dm-mysql.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dm-sql
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s: sql
  template:
    metadata:
      name: pod02
      labels:
        k8s: sql
    spec:
      volumes:
      - name: vol-sql
        nfs:
          server: 10.0.0.230
          path: /xinjizhiwa/data/mysql
      containers:
      - name: c-db
        image: mysql:8.0
        ports:
        - name: db-port
          containerPort: 3306
        volumeMounts:
        - name: vol-sql
          mountPath: /var/lib/mysql
        env:
        - name: MYSQL_DATABASE
          value: wordpress
        - name: MYSQL_USER
          value: xinjizhiwa
        - name: MYSQL_PASSWORD
          value: xinjizhiwa
        - name: MYSQL_ROOT_PASSWORD
          value: xinjizhiwa

5,编辑数据库的svc资源

[root@k8s231 deployment]# vim svc-mysql.yaml 

apiVersion: v1
kind: Service
metadata:
  name: svc-sql
spec:
  type: NodePort
  selector:
    k8s: sql
  clusterIP: 10.200.200.200
  ports:
  - port: 3306
    targetPort: 3306
    nodePort: 32000

6,创建所有资源

[root@k8s231 deployment]# kubectl apply -f .

三、验证是否完成部署及数据共享

1,查看svc资源

[root@k8s231 deployment]# kubectl get svc

2,查看nfs存储路径,是否有数据

3,浏览器访问并安装

这篇关于16-k8s阶段性总结01-wordpress案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/718913

相关文章

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

k8s中实现mysql主备过程详解

《k8s中实现mysql主备过程详解》文章讲解了在K8s中使用StatefulSet部署MySQL主备架构,包含NFS安装、storageClass配置、MySQL部署及同步检查步骤,确保主备数据一致... 目录一、k8s中实现mysql主备1.1 环境信息1.2 部署nfs-provisioner1.2.

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Java 中的 equals 和 hashCode 方法关系与正确重写实践案例

《Java中的equals和hashCode方法关系与正确重写实践案例》在Java中,equals和hashCode方法是Object类的核心方法,广泛用于对象比较和哈希集合(如HashMa... 目录一、背景与需求分析1.1 equals 和 hashCode 的背景1.2 需求分析1.3 技术挑战1.4

k8s搭建nfs共享存储实践

《k8s搭建nfs共享存储实践》本文介绍NFS服务端搭建与客户端配置,涵盖安装工具、目录设置及服务启动,随后讲解K8S中NFS动态存储部署,包括创建命名空间、ServiceAccount、RBAC权限... 目录1. NFS搭建1.1 部署NFS服务端1.1.1 下载nfs-utils和rpcbind1.1

Java中实现对象的拷贝案例讲解

《Java中实现对象的拷贝案例讲解》Java对象拷贝分为浅拷贝(复制值及引用地址)和深拷贝(递归复制所有引用对象),常用方法包括Object.clone()、序列化及JSON转换,需处理循环引用问题,... 目录对象的拷贝简介浅拷贝和深拷贝浅拷贝深拷贝深拷贝和循环引用总结对象的拷贝简介对象的拷贝,把一个

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文