k8s安装nfs设置pv pvc并部署mysql

news2025/1/15 13:02:45

在k8s系列第一篇中提到有一个用于nfs机器没有部署任何东西,这一篇我们来搭建nfs服务,并在k8s上部署mysql,并将mysql的data目录映射到nfs中。网上的部分教程为了简便教学用的hostPath做的映射,只是便于教学的简便做法,实际生产环境中还是需要nfs、对象存储等存储服务来支撑这个持久化。以下是详细的安装命令。

1.nfs服务端安装与配置

安装命令

#安装nfs-utils
yum install -y rpcbind nfs-utils
#创建nfs目录
mkdir -p /root/nfs_root/
vi /etc/exports
编辑/etc/exports输入如下内容
/root/nfs_root/ *(insecure,rw,sync,no_root_squash)
#启动和开机自弃
systemctl start rpcbind
systemctl start nfs-server
systemctl enable rpcbind
systemctl enable nfs-server
#重新挂载 使 /etc/exports生效
exportfs -r
#查看共享情况
exportfs
#放行防火墙端口
firewall-cmd --permanent --add-port=111/tcp
firewall-cmd --permanent --add-port=111/udp
firewall-cmd --permanent --add-port=2049/tcp
firewall-cmd --permanent --add-port=2049/udp
firewall-cmd --reload

2.nfs客户端连接测试

安装命令

#安装nfs-utils
yum install -y nfs-utils
#创建挂载目录
mkdir -p /root/nfsmount
# 挂载远程nfs目录到本地
mount -t nfs 192.168.3.86:/root/nfs_root /root/nfsmount
# 写入一个测试文件
echo "hello nfs server" > /root/nfsmount/test.txt
cat /root/nfsmount/test.txt

3.k8s机器配置

k8s节点机器也需要安装nfs-utils否则有可能报 bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount错误

#安装nfs-utils
yum install -y nfs-utils

4.部署mysql

以部署mysql数据库为例,配置pv pvc

4.1 nfs目录初始化

nfs机器创建mysql数据库空目录

nfs创建数据库目录
cd /root/nfs_root
mkdir mysql

4.2 编写pv pvc deploy配置文件

编写pv配置,文件名mysql-pv.yaml,内容如下

kind: PersistentVolume
apiVersion: v1
metadata:
  name: mysql-pv
  namespace: default
spec:
  accessModes:
    - ReadWriteOnce      
  capacity:
    storage: 4Gi
  persistentVolumeReclaimPolicy: Retain
  storageClassName: course-nfs-storage
  nfs:
    path: /root/nfs_root/mysql
    server: 192.168.3.86

编写pvc配置,文件名mysql-pvc.yaml,内容如下

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: mysql-pvc
  namespace: default
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 4Gi
  storageClassName: course-nfs-storage

编写ConfigMap配置,文件名mysql-config.yaml,内容如下

apiVersion: v1
kind: ConfigMap
metadata:
  name: mysql-config
  namespace: default
data:
  my.cnf: |
        [client]
        default-character-set=utf8mb4
        [mysql]
        default-character-set=utf8mb4
        [mysqld] 
        max_connections = 2000
        secure_file_priv=/var/lib/mysql
        sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

编写deployment配置,文件名mysql-deploy.yaml,内容如下

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-deploy
  namespace: default
spec:
  selector:
    matchLabels:
      app: mysql-deploy
  template:
    metadata:
      labels:
        app: mysql-deploy
    spec:
      containers:
      - name: mysql-deploy
        image: mysql:8.0.28
        args:
        - --default_authentication_plugin=mysql_native_password
        - --character-set-server=utf8mb4
        - --collation-server=utf8mb4_unicode_ci
        env:                        
        - name: MYSQL_ROOT_PASSWORD
          value: "12345678"
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
        - name: mysql-config
          mountPath: /etc/mysql/conf.d/my.cnf         
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-pvc
      - name: mysql-config
        configMap:
          name: mysql-config      
---
apiVersion: v1
kind: Service
metadata:
  name: mysql-deploy
  namespace: default
spec:
  type: NodePort
  ports:
  - port: 3306
    targetPort: 3306
    nodePort: 31111
  selector:
    app: mysql-deploy

在k8s任意节点机器按顺序执行下面四个kubectl apply指令部署。

kubectl apply -f mysql-pv.yaml
kubectl apply -f mysql-pvc.yaml
kubectl apply -f mysql-config.yaml
kubectl apply -f mysql-deploy.yaml

如果部署过程中出现错误,查出问题后按下面的顺序回退部署,修正后再执行apply

kubectl delete -f mysql-deploy.yaml
kubectl delete -f mysql-config.yaml
kubectl delete -f mysql-pvc.yaml
kubectl delete -f mysql-pv.yaml

4.3数据库连接测试

根据deploy里暴露的端口和密码进行连接

端口 31111

root密码 12345678

连接如图

4.4常见指令

以下是排查问题经常用到的指令

#查看storageclass资源
kubectl get storageclass
#查看pv资源
kubectl get pv
#查看pvc资源
kubectl get pvc
#查看configmap资源 kuboard面板翻译为字典
kubectl get configmap
#查看所有pod
kubectl get pod -A
#查看mysql数据库pod描述
kubectl describe pod mysql-deploy-6988b847b7-q4pfx
#查看mysql数据库pod日志
kubectl logs mysql-deploy-6988b847b7-q4pfx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/178711.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux常用命令——skill命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) skill 向选定的进程发送信号冻结进程 补充说明 skill命令用于向选定的进程发送信号,冻结进程。这个命令初学者并不常用,深入之后牵涉到系统服务优化之后可能会用到。 语法 skill(选项…

vim的自动化配置(一条指令就够了)

应该没有人在因为vim中括号不能对齐和补齐和自动缩进而烦恼吧! 自动化配置不香吗? 如果你想把你的vim给配置成像vs2022编译器一样,那么恭喜你,当你看到这篇文章的时候你就要成功了! 一条指令,下载出vs20…

Java 分支及循环语句

文章目录一、分支语句1. if 语句2. switch 语句二、循环语句1. for 循环语句2. while 循环语句3. do...while 循环语句4. 跳转控制语句5. 循环嵌套6. Random6.1 猜数字游戏一、分支语句 1. if 语句 if(关系表达式1) {语句体1; } else if(关系表达式2){语句体2; } ... else {语…

带你去了解什么是makefile文件

GNU make命令是用来控制从源文件生成可执行文件或非可执行文件的方式。那么make命令又是通过makefile文件来控制了。所以了解makefile文件就显得很有必要了。 makefile文件由许多规则组成,这些规则的形式一般是这样的: 目标 ... : 先决条件 ...命令目标…

PMP范围和需求的区别是什么?

定义需求:为满足业务需求,某个产品、服务或成果必须达到的条件或具备的能力。范围:项目所提供的产品、服务和成果的总和。在PMI中我们常说的范围一般为项目范围,其定义为:为交付具有规定特性与功能的产品、服务或成果而…

现金+股票再平衡策略的测试 - 针对恒指

最近很多人在讨论一个策略,就是50%现金,50%ETF,然后按照一定的策略再平衡一次,将会获得比单纯股票投资更安全的策略和更加稳定的收益。我做了一个简单的回测。 测试模式1 1990-01-02 - 2023-01-20 长期涨模式 首先假设我找到了一…

Redis面试题万字汇总 [施工中]

1. Redis 数据结构Redis底层有五种数据结构,String, long / double : 底层是小于Long的数字时, 使用的时long字符.它也可以支持double类型浮点数,embstr : 如果是短字符串,长度小于39个字节, 使用的是embstr数据结构. 之所以是39字节,主要是redis的jemalloc最小单位是64个字节,…

深度估计源码详解

源码链接见文末 论文地址: Monocular Depth Estimation Using Laplacian Pyramid-Based Depth Residuals | IEEE Journals & Magazine | IEEE Xplore 1.项目环境配置 项目中所包含的库直接使用pip install就好,但是有3个地方需要处理一下: fcntl,这个需要打开anacon…

DFS(六) N皇后 II

n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回 n 皇后问题 不同的解决方案的数量。 来源:力扣(LeetCode) 链接:https://leetcode.cn/pr…

浮动 应用场景 浮动的基本特点 高度坍塌 解决浮动时盒子冲突问题

目录浮动应用场景浮动的基本特点盒子尺寸盒子排列文字环绕高度坍塌浮动 视觉格式化模型,大体上将页面中盒子的排列分为三种方式: 常规流浮动定位 应用场景 文字环绕横向排列 浮动的基本特点 修改float属性值为: left:左浮动…

【HBase入门】6. 常用 Shell 操作(3)

前言 我们可以以shell的方式来维护和管理HBase。例如:执行建表语句、执行增删改查操作等等。 过滤器的用法 过滤器一般结合scan命令来使用。打开HBase的JAVA API文档。找到RowFilter的构造器说明,我们来看以下,HBase的过滤器该如何使用。 …

快速排序的实现和优化~

相比于冒泡排序的改进点: 在前面学过的冒泡排序中,由于扫描过程只对相邻的两个元素进行比较,因此在互换两个相邻元素时,只能消除一个逆序,如果能通过两个(不相邻的)元素的交换,消除待排序记录 中的多个逆序…

docker desktop window10家庭版踩坑实录

安装 桌面版:https://www.docker.com/products/docker-desktop 这里我就安装的是桌面版 选择windows 前置工作 1.按下 wins(找到这个) 将下面的这个勾选中,如果你是家庭版很可能没有这个东西,那么请看我的这篇文章…

5-5中央处理器-指令流水线

文章目录一.基本概念1.多条指令在处理器中的执行方式(1)顺序执行方式/串行执行方式(2)流水线执行方式①一次重叠执行方式②二次重叠执行方式2.流水线的表示方法(时空图)3.超标量流水线二.分类1.部件功能级、…

第四十五章 动态规划——背包问题模型(二)

一、概述 我们在上一章中已经对背包模型做了一定地讲解,但是我们发现其实在上一章节中我们所介绍的例题大部分是给背包问题套上一个背景,当我们识破了背后的模型后,我们就可以直接套用模板,基本不需要对代码做改变。 那么在这一…

SpringBoot读写Redis客户端并实现技术切换(Jedis)

SpringBoot整合Redishttps://blog.csdn.net/weixin_51882166/article/details/128759780?spm1001.2014.3001.5501 读写客户端 首先应该打开redis服务; cd命令进入Redis安装目录下: 进入Redis客户端: redis-cli.exe -h 127.0.0.1 -p 6379…

梯度下降算法有哪些?有什么区别?【背景、原理、公式、代码】

一、梯度下降算法背景 梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。在求解损失函数的最小值时,可以通过梯…

行为型模式-职责链模式

1.概述 在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同…

记一段相亲反思

记一段相亲反思项目系统启动项目相亲需求的细分高净值人群特定类型的高预期结婚结婚前的彩礼引流系统启动流量,从哪里来?作弊避险,什么钱不能赚?这不是一篇找对象的文章,而是帮别人找对象来赚钱的文章。 项目系统 启…

洛谷-P2114 [NOI2014] 起床困难综合症

题目链接: P2114 [NOI2014] 起床困难综合症 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述: 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳。作为一名青春阳光好少…