k8s一键安装mysql8单机版

news/2023/6/7 1:01:53

k8s一键安装mysql8单机版

1.前置条件

已经搭建好kubernetes1.25.4集群

Kubernetes 1.25.4版本安装_V胡桃夹子的博客-CSDN博客

kubeasz安装kubernetes1.25.5_V胡桃夹子的博客-CSDN博客

kubernetes1.25.4机器安装好了nfs服务

CentOS8搭建nfs服务_V胡桃夹子的博客-CSDN博客
本文介绍的mysql8单节点部署,采用nfs存储,自定义k8s namespacee,创建pv/pvc/configmap来部署的

2.创建mysql.yaml

复制下面脚本执行生成mysql.yaml部署文件

cat > mysql.yaml<<EOF
---
# namespace
apiVersion: v1    # 版本要符合kubectl apiVersion规定,v1是稳定版本
kind: Namespace   # k8s资源类型,Namespace资源
metadata:         # 资源的元数据语句块,是针对kind对应资源的全局属性name: develop   # 声明工作空间名称labels:         # 标签name: develop # 设置namespace的label标签
---
# pv
apiVersion: v1                          # 版本要符合kubectl apiVersion规定,v1是稳定版本
kind: PersistentVolume                  # k8s资源类型,PersistentVolume资源
metadata:                               # 资源的元数据语句块,是针对kind对应资源的全局属性namespace: develop                    # 指定工作空间name: mysql-nfspv-volume              # 自定义pv名字,PersistentVolume下全局唯一labels:                               # 标签app: mysql                          # 设置pv的label标签
spec:                                   # 规格语句块capacity:                             # 存储能力,用于定义PV的存储容量storage: 2Gi                        # PV的具体存储空间大小,Mi表示1024进制accessModes:                          # 访问能力,指定访问模式- ReadWriteMany                     # 用于定义资源的访问方式 (这里用的是单节点可读可写)storageClassName: nfs                 # 使用了NFS网络文件系统作为存储卷persistentVolumeReclaimPolicy: Retain # pv回收策略,当声明被释放,pv将保留(不清理和删除)nfs:                                  # 指定使用NFS存储驱动server: 10.104.10.202               # 指定NFS服务器IP地址path: /nfs/mysql                    # 指定NFS共享目录的位置,且需提前在该目录中创建mysql目录
---
# pvc
apiVersion: v1              # 版本要符合kubectl apiVersion规定,v1是稳定版本
kind: PersistentVolumeClaim # k8s资源类型,PersistentVolumeClaim资源
metadata:                   # 资源的元数据语句块,是针对kind对应资源的全局属性namespace: develop        # 指定工作空间name: mysql-nfspvc-mysql  # pvc的名字,PersistentVolumeClaim下全局唯一
spec:                       # 规格语句块accessModes:              # 访问能力,指定访问模式- ReadWriteMany         # 用于定义资源的访问方式 (单个节点  这里用的是单节点可读可写)resources:                # 访问模式下的资源语句块requests:               # 请求语句块storage: 2Gi          # 请求存储空间,PVC允许申请的大小storageClassName: nfs     # 使用了NFS网络文件系统作为存储卷selector:matchLabels:app: mysql            # 根据Label选择对应PV
---
# configmap
apiVersion: v1        # 版本要符合kubectl apiVersion规定,v1是稳定版本
kind: ConfigMap       # 表明是Kubernetes ConfigMap
metadata:             # 资源的元数据语句块,是针对kind对应资源的全局属性namespace: develop  # 指定工作空间name: mysql8-config # 当前ConfigMap名称
data:# my.cnf代表着mysql8的配置文件名称my.cnf: |[mysql]# mysql客户端默认字符集default-character-set=utf8[mysqld]# 数据库文件位置datadir=/var/lib/mysql# 允许最大连接数max_connections=1000# innodb的dml操作的行级锁的等待时间innodb_lock_wait_timeout=500# 设置mysql服务端默认字符集character-set-server=utf8mb4# 默认创建新数据的新建排序规则collation-server=utf8mb4_general_ci# 创建新表时将使用的默认存储引擎default-storage-engine=INNODB# 缓存大小sort_buffer_size=256MB# 大小写敏感配置项0为敏感,1为不敏感lower_case_table_names=1# 选择正8区default-time-zone='+8:00'
---
# Service
apiVersion: v1       # 版本要符合kubectl apiVersion规定,v1是稳定版本
kind: Service        # 表明是Kubernetes Service
metadata:            # 资源的元数据语句块,是针对kind对应资源的全局属性namespace: develop # 指定工作空间name: mysql8       # Service的名称,Service下全局唯一
spec:type: NodePort     # 配置为NodePort,外部可以访问,不指定则默认为ClusterIP,只能集群内部访问ports:- port: 3306       # Service 提供的服务端口,即容器间服务调用的端口targetPort: 3306 # 容器暴露的端口,与Dockerfile暴露端口保持一致nodePort: 3306   # 外部访问的端口,默认30000-32767之间,除非有修改默认端口区间selector:app: mysql8      # 标签
---
# Deployment
apiVersion: apps/v1                      # 版本要符合kubectl apiVersion规定,v1是稳定版本
kind: Deployment                         # 表明是Kubernetes Deployment
metadata:                                # 资源的元数据语句块,是针对kind对应资源的全局属性namespace: develop                     # 指定工作空间name: mysql8                           # Deployment的名称,Deployment下全局唯一labels:                                # 标签app: mysql8                          # 标识Pod,在Service中的selector指定匹配label为app:mysql8
spec:replicas: 1                            # Pod 副本的期待数量selector:matchLabels:app: mysql8                        # 必须匹配 spec.template.metadata.labelstemplate:                              # 根据此模版创建Pod的副本metadata:name: mysql8labels:app: mysql8                      # 必须配置 spec.selector.matchLabelsspec:containers:                        # Pod中包含的容器- name: mysql8                     # 容器的名称# 容器对应的Docker Image,即镜像名image: docker.io/library/mysql:8.0.31 # Always:总是拉取;IfNotPresent:默认值,本地有则不拉取;Never:只用本地镜像,从不拉取;imagePullPolicy: IfNotPresentports:- containerPort: 3306            # 容器应用监听的端口号env:                             # 定义环境变量- name: MYSQL_ROOT_PASSWORD      # mysql初始化密码变量value: "123456"                # 配置Mysql Root用户默认密码livenessProbe:                   # 判断容器是否正常运行,如果失败则杀掉容器(不是pod),再根据重启策略是否重启容器initialDelaySeconds: 30        # 初始化延迟时间periodSeconds: 10              # 探测周期间隔时间timeoutSeconds: 5              # 单次探测超时时间successThreshold: 1            # 探测失败到成功的重试次数failureThreshold: 3            # 探测成功到失败的重试次数exec:# 在容器中执行此命令,如果命令返回状态码为0,则认为探测成功command: ["mysqladmin", "-uroot", "-p${MYSQL_ROOT_PASSWORD}", "ping"]# 判断容器是否能进入ready状态,探针失败则进入noready状态,并从service的endpoints中剔除此容器readinessProbe:initialDelaySeconds: 10        # 初始化延迟时间periodSeconds: 10              # 探测周期间隔时间timeoutSeconds: 5              # 单次探测超时时间successThreshold: 1            # 探测失败到成功的重试次数failureThreshold: 3            # 探测成功到失败的重试次数exec:# 在容器中执行此命令,如果命令返回状态码为0,则认为探测成功command: ["mysqladmin", "-uroot", "-p${MYSQL_ROOT_PASSWORD}", "ping"]volumeMounts:- name: mysql-data               # 自定义名字,名字须与volumes.name一致mountPath: /var/lib/mysql      # 容器内目录- name: mysql-config# mysql的配置文件my.cnfmountPath: /etc/mysql/conf.d/my.cnf subPath: my.cnf- name: localtimereadOnly: truemountPath: /etc/localtimevolumes:- name: mysql-data                 # 自定义名字,名字须与volumeMounts.name一致persistentVolumeClaim:claimName: mysql-nfspvc-mysql  # 引用的pvc- name: mysql-configconfigMap:name: mysql8-config            # 引用的ConfigMap名称- name: localtimehostPath:type: Filepath: /etc/localtime           # 宿主机挂载目录
EOF

3.部署

注意一个细节,上面mysql.yaml存储是基于nfs,其中mysql数据存储目录为/nfs/mysql,一定要注意/nfs目录下有创建mysql文件夹

一键部署命令:

kubectl apply -f mysql.yaml

一键回收命令:

kubectl delete -f mysql.yaml

4. k8s相关学习

Kubernetes 1.25.4版本安装_V胡桃夹子的CSDN博客
kubeasz安装kubernetes1.25.5_V胡桃夹子的CSDN博客
CentOS8搭建nfs服务_V胡桃夹子的CSDN博客
k8s一键安装redis单机版_V胡桃夹子的CSDN博客
Docker制作springboot运行应用镜像_V胡桃夹子的CSDN博客
k8s部署springboot应用_V胡桃夹子的CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

小困惑,关于 Serverless 函数计算的字体安装

来源 | Serverless作者 | 孙飞宇头图 | 下载于视觉中国前言首先介绍下在本文出现的几个比较重要的概念&#xff1a;函数计算&#xff08;Function Compute&#xff09;&#xff1a;函数计算是一个事件驱动的服务&#xff0c;通过函数计算&#xff0c;用户无需管理服务器等运行情…

解决 Maven工程运行报错Failed to clean project: Failed to delete

如题&#xff0c;在运行maven工程是报“Failed to clean project: Failed to delete”错误&#xff0c;原因是因为之前编译的工程还在运行&#xff0c;无法clean&#xff0c;导致maven生命周期无法继续进行。 看到网上很多误人子弟的方法&#xff0c;什么关闭java进程&#xf…

【Zookeeper】关于windows安装问题整理汇总

文章目录常规安装&#xff1a;1、windows配置zoo.cfg之后&#xff0c;提示&#xff1a;JAVA_HOME is not set.1.1 本地没有安装JDK或者没有配置JAVA_HOME解决方案&#xff0c;参考JDK安装下载办法1.2 本地配置的JDK但是环境变量JDK路劲不叫名字“JAVA_HOME”解决方案&#xff1…

一种简单的方法让华为手机和windows10共享文件

缘起&#xff1a; 一直是使用连线方式&#xff0c;以及手机上传文件到百度云盘的方式&#xff0c;来完成手机同电脑的文件拷贝工作&#xff0c;其实还有一种非常方便的方式可以解决以上问题。 1、将华为手机的wifi路由和window10的路由设置成同一个路由器。 2、下拉手机屏幕上…

关于微新分享PC微信端成功,手机微信失败

打开微信调试功能 发现会弹出 首先肯定是根据百度来寻找帮助&#xff0c;发现一篇总结了出现这种情况的各种原因以及解决方法的文章&#xff1a;https://www.yudouyudou.com/jiaochengheji/wangzhanjianshe/1237.html 根据步骤一个个测试&#xff0c;发现并没有解决问题。于…

人大金仓数据库KSQL常用命令

第三章KSQL常用命令 登陆前显示ksql的帮助命令 Ksql --help 列出所有的SQL命令清单 test# \h 列出某个SQL命令语法大纲 \h <sql命令> 如&#xff1a;\h delect 查看ksql元命令的帮助 ..... 查看数据库列表 显示当前连接的数据库和登录用户 \c 显示当前test数据库的…

Unreal Engine Marketplace – Bundle 1 Oct 2021

Unreal Engine Marketplace – Bundle 1 Oct 2021 Info: 云桥网络 平台huo取资源 Includes: Motion Symphony v1.05 (4.26) FluidNinja LIVE v1.5.26.3 Female Hero: Action adventure Ultimate Fighting Game Engine (U.F.G.E) (4.26) Realistic Forest Pack (4.25-4.26) D…

Windows Embedded Standard 7代替windows 7

现在超级本使用非常普遍&#xff0c;基本都是配置了SSD固态磁盘&#xff0c;厂家一般都预装了Windows 7系统。近期笔者入手一款超级本&#xff0c;自带24G SSD, windows 7 64位系统。 但在使用中遇到这几个问题&#xff1a; 1. 自带的windows 7占用磁盘空间超过了11GB, 随着使用…