一、环境准备

CentOS Linux release 7.7.1908 (Core) 3.10.0-1062.el7.x86_64

kubeadm-1.22.3-0.x86_64

kubelet-1.22.3-0.x86_64

kubectl-1.22.3-0.x86_64

kubernetes-cni-0.8.7-0.x86_64

主机名 IP VIP
k8s-master01 192.168.30.106 192.168.30.115
k8s-master02 192.168.30.107
k8s-master03 192.168.30.108
k8s-node01 192.168.30.109
k8s-node02 192.168.30.110
k8s-nfs 192.168.30.114

二、配置好PV和PVC

这里我就不再详细说明,可以参考我上篇(归海听雪:k8s-1.22.3版本中使用持久化卷之StorageClass+NFS)

三、部署mysql8服务

1、把mysql8配置文件放到configmap

这里面的一些配置参数,可以根据自已的实际情况进行修改优化

vim mysql-configmap.yaml

---
apiVersion: v1
kind: ConfigMap
metadata:name: mysql-confignamespace: k8s-mysqllabels:app: mysql
data:my.cnf: |-[client]default-character-set=utf8mb4[mysql]default-character-set=utf8mb4[mysqld]max_connections = 2000secure_file_priv=/var/lib/mysqlsql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIONskip-name-resolveopen_files_limit = 65535table_open_cache = 128log_error = /var/lib/mysql/mysql-error.log #错误日志路径slow_query_log = 1long_query_time = 1 #慢查询时间 超过1秒则为慢查询slow_query_log_file = /var/lib/mysql/mysql-slow.logdefault-storage-engine = InnoDB #默认存储引擎innodb_file_per_table = 1innodb_open_files = 500innodb_buffer_pool_size = 64Minnodb_write_io_threads = 4innodb_read_io_threads = 4innodb_thread_concurrency = 0innodb_purge_threads = 1innodb_flush_log_at_trx_commit = 2innodb_log_buffer_size = 2Minnodb_log_file_size = 32Minnodb_log_files_in_group = 3innodb_max_dirty_pages_pct = 90innodb_lock_wait_timeout = 120bulk_insert_buffer_size = 8Mmyisam_sort_buffer_size = 8Mmyisam_max_sort_file_size = 10Gmyisam_repair_threads = 1interactive_timeout = 28800wait_timeout = 28800[mysqldump]quickmax_allowed_packet = 16M #服务器发送和接受的最大包长度[myisamchk]key_buffer_size = 8Msort_buffer_size = 8Mread_buffer = 4Mwrite_buffer = 4M

kubectl apply -f mysql-configmap.yaml

2、生成mysql-statefulset文件

vim mysql-statefulset.yaml

apiVersion: v1
kind: Service
metadata:namespace: defaultname: mysql-headless
spec:clusterIP: None  #无头服务selector:app: mysqlports:- name: mysqlport: 3306protocol: TCP
---
apiVersion: apps/v1
kind: StatefulSet
metadata:namespace: defaultname: mysql
spec:podManagementPolicy: OrderedReady  #pod名-> 0-N,删除N->0replicas: 1revisionHistoryLimit: 10serviceName: mysql-headlessselector:matchLabels:app: mysqltemplate:metadata:  #name没写,会默认生成的labels:app: mysqlspec:containers:- name: mysqlimage: registry-op.test.cn/mysql:8.0.19ports:- containerPort: 3306name: clientenv:- name: MYSQL_ROOT_PASSWORD    ## 配置Root用户默认密码value: "112233"resources:limits:cpu: 2000mmemory: 512Mirequests:cpu: 2000mmemory: 512Mi
# health checklivenessProbe:initialDelaySeconds: 30periodSeconds: 10timeoutSeconds: 5successThreshold: 1failureThreshold: 3exec:command: ["mysqladmin", "-uroot", "-p${MYSQL_ROOT_PASSWORD}", "ping"]readinessProbe:initialDelaySeconds: 10periodSeconds: 10timeoutSeconds: 5successThreshold: 1failureThreshold: 3exec:command: ["mysqladmin", "-uroot", "-p${MYSQL_ROOT_PASSWORD}", "ping"]# health checkvolumeMounts:- name: confmountPath: /etc/mysql/conf.d/my.cnfsubPath: my.cnf- name: datamountPath: /var/lib/mysqlreadOnly: false- name: localtimereadOnly: truemountPath: /etc/localtimevolumes:- name: confconfigMap:name: mysql-configdefaultMode: 0755- name: localtimehostPath:type: Filepath: /etc/localtimeimagePullSecrets:- name: registry-op.test.cnvolumeClaimTemplates:- metadata:name: dataspec:accessModes: ["ReadWriteMany"]storageClassName: managed-nfs-storagevolumeMode: Filesystemresources:requests:storage: 20Gi

kubectl apply -f mysql-statefulset.yaml

3、设置外部访问

vim mysql-service.yaml

---
apiVersion: v1
kind: Service
metadata:name: mysqlnamespace: defaultlabels:app: mysql
spec:type: NodePortports:- name: tcpport: 3306nodePort: 32306selector:app: mysql

kubectl apply -f mysql-service.yaml

4、查看状态

# kubectl get pods|grep mysql
mysql-0                                   1/1     Running   0               15h# kubectl get svc|grep mysql
mysql            NodePort    10.96.196.95    <none>        3306:32306/TCP   15h
mysql-headless   ClusterIP   None            <none>        3306/TCP         15h

5、登录mysql验证

# kubectl exec -it mysql-0 /bin/sh -n default
# mysql -uroot -p112233
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11172
Server version: 8.0.19 MySQL Community Server - GPLCopyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

说明mysql8可以正常使用了

6、查看存储

# kubectl get pv|grep mysql
pvc-98be7119-fe14-4d50-9f68-a4e4031c68b0   20Gi       RWX            Retain           Bound    default/data-mysql-0             managed-nfs-storage                  15h# kubectl get pvc|grep mysql
data-mysql-0   Bound    pvc-98be7119-fe14-4d50-9f68-a4e4031c68b0   20Gi       RWX            managed-nfs-storage   15h

#登录到192.168.10.114存储上看一下数据

# ll /data/volumes/default-data-mysql-0-pvc-98be7119-fe14-4d50-9f68-a4e4031c68b0/
total 178224
drwxr-x--- 2 polkitd input     4096 Dec 28 18:34 #innodb_temp
-rw-r----- 1 polkitd input       56 Dec 28 18:34 auto.cnf
-rw-r----- 1 polkitd input  3110839 Dec 28 18:34 binlog.000001
-rw-r----- 1 polkitd input      340 Dec 28 18:36 binlog.000002
-rw-r----- 1 polkitd input       32 Dec 28 18:34 binlog.index
-rw------- 1 polkitd input     1676 Dec 28 18:34 ca-key.pem
-rw-r--r-- 1 polkitd input     1112 Dec 28 18:34 ca.pem
-rw-r--r-- 1 polkitd input     1112 Dec 28 18:34 client-cert.pem
-rw------- 1 polkitd input     1680 Dec 28 18:34 client-key.pem
-rw-r----- 1 polkitd input     5400 Dec 28 18:34 ib_buffer_pool
-rw-r----- 1 polkitd input 33554432 Dec 28 18:36 ib_logfile0
-rw-r----- 1 polkitd input 33554432 Dec 28 18:34 ib_logfile1
-rw-r----- 1 polkitd input 33554432 Dec 28 18:34 ib_logfile2
-rw-r----- 1 polkitd input 12582912 Dec 28 18:36 ibdata1
-rw-r----- 1 polkitd input 12582912 Dec 28 18:35 ibtmp1
drwxr-x--- 2 polkitd input     4096 Dec 28 18:34 mysql
-rw-r----- 1 polkitd input     3647 Dec 28 18:34 mysql-error.log
-rw-r----- 1 polkitd input      537 Dec 28 18:34 mysql-slow.log
-rw-r----- 1 polkitd input 30408704 Dec 28 18:36 mysql.ibd
drwxr-x--- 2 polkitd input     4096 Dec 28 18:34 performance_schema
-rw------- 1 polkitd input     1676 Dec 28 18:34 private_key.pem
-rw-r--r-- 1 polkitd input      452 Dec 28 18:34 public_key.pem
-rw-r--r-- 1 polkitd input     1112 Dec 28 18:34 server-cert.pem
-rw------- 1 polkitd input     1676 Dec 28 18:34 server-key.pem
drwxr-x--- 2 polkitd input     4096 Dec 28 18:34 sys
drwxr-x--- 2 polkitd input     4096 Dec 28 18:36 test
-rw-r----- 1 polkitd input 12582912 Dec 28 18:34 undo_001
-rw-r----- 1 polkitd input 10485760 Dec 28 18:36 undo_002

四、外部访问验证

找一台外部机器,安装一下mysql8的client包

1、下载mysql8包

mkdir /opt/mysql8
cd /opt/mysql8
wget   https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar

2、安装

tar -xf mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar
rpm -ivh mysql-community-client-8.0.16-2.el7.x86_64.rpm mysql-community-libs-8.0.16-2.el7.x86_64.rpm mysql-community-common-8.0.16-2.el7.x86_64.rpm

3、验证登录mysql

前面已经配置了mysql8为nodeport访问,并且端口是32306,所以理论外部可以直接访问的

#mysql -h 192.168.30.109 -P 32306 -uroot -p112233
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11315
Server version: 8.0.19 MySQL Community Server - GPLCopyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

可以测试一下,把当前的pod删除,自动创建后,看一下数据库中的数据是否正常。

k8s-v1.2.3部署mysql-8服务相关推荐

  1. 【云原生--K8S】 yaml文件部署Mysql数据库(一)

    文章目录 前言 一.下载mysql镜像文件 二.创建deployment和service 三.进入docker容器操作mysql 四.Pod volumn存储无法持久化 五.删除deployment和 ...

  2. k8s v1.17 新特性预告: 拓扑感知服务路由

    大家好,我是 roc,来自腾讯云容器服务(TKE)团队,今天给大家介绍下我参与开发的一个 k8s v1.17 新特性: 拓扑感知服务路由. 01 名词解释 拓扑域: 表示在集群中的某一类 " ...

  3. 在 Kubernetes 中基于 StatefulSet 部署 MySQL(下)

    大家好,我是老 Z! 上篇文章实现了 MySQL 数据库在基于 KubeSphere 部署的 K8s 集群上的安装部署,部署方式采用了图形化界面这种形式.本文将会介绍如何使用 GitOps 来部署 M ...

  4. 【云原生】Kubernetes(k8s)部署 MySQL+Dubbo+Nacos服务

    一.说明 二.部署 MySQL 三.部署 Nacos 四.部署 Dubbo 服务 4.1. 创建镜像仓库的密钥 4.2. 部署 provider 服务 4.3. 部署 consumer 服务 五.测试 ...

  5. 原生K8S部署pig微服务项目

    原生K8S部署pig微服务项目 简介 项目地址:码云 Pig微服务项目 基于 Spring Cloud 2021 .Spring Boot 2.7. OAuth2 的 RBAC 权限管理系统 基于数据 ...

  6. k8s v1.10部署笔记

    本文是根据最近一份github上很不错的部署教程所做的验证部署测试,不同之处在于原教程中是3节点,而这里共使用了4个节点.Github上的教程地址如下所示,推荐大家参照原作者文章进行自己的实验.在本文 ...

  7. k8s(七)—statefullset部署mysql主从集群

    1 使用statefullset部署mysql主从集群 mysql-0是master mysql-1和mysql-2是两个备份 当mysql写的时候,找headless service中的mysql- ...

  8. kubernetes 部署 mysql 服务

    1.使用如下yaml文件部署mysql服务 1.1.创建deployment cat mysql-deplpy.yaml apiVersion: apps/v1 kind: Deployment me ...

  9. k8s部署mysql集群(statefulset):主写从读、一主多从集群

    安装nfs server和client端都执行 yum install nfs-utils rpcbind -y systemctl start nfs systemctl start rpcbind ...

  10. 【实战】K8S部署Nacos微服务

    前言 1.这篇文章 花了4-5天的时间才写完的 2.吐槽下自己 感觉自己有点笨啊 k8s网络访问那块卡的时间有点久 3.下面再继续研究下k8s网络这块 争取先在应用层面啃的透透的 4.本着负责任的态度 ...

最新文章

  1. 【ACM】杭电OJ 1789(Doing Homework again)
  2. .NET6之MiniAPI(十三):健康检查
  3. openshift_通过OpenShift超越云炒作
  4. 前端学习(3145):react-hello-react之getStateFromProps
  5. 四、Dynamic-programming algorithm Dynamic--LCS
  6. 什么人适合学习Java编程?编程好学吗?
  7. MSSql与MYSQL比较
  8. HALCON 20.11:深度学习笔记(12)---语义分割
  9. JS弹出框插件zDialog再次封装
  10. Java实现单链表翻转
  11. matlab 画m,Matlab画直线(Bresenhamline.m)
  12. 华工计算机工图答案,华南理工 网络画法几何及工程制图-课程习题集答案
  13. TimesTen索引的概念与日常操作
  14. 前端cookie 放到请求头_HTTP请求头:cookie cache
  15. Webots舵轮使用纯追踪算法
  16. Ray Dalio:经济机器是怎样运行的 (时长30分钟) 薛兆丰经济学讲义
  17. Linux网络配置后无法正常上网
  18. linux nohup的使用及详解
  19. 机器学习模型可解释性进行到底 —— SHAP值理论(一)
  20. .NET 之路 | 006 了解 Roslyn 编译器

热门文章

  1. JavaScript倒计时制作
  2. 中国剩余定理编程实现
  3. linux 命令 查询丢包率,linux测试丢包率的命令 linux查看丢包率命令
  4. winpe进入linux系统,制作U盘Linux 与WinPE启动
  5. 解决win10下 Virtual Box USB功能无法使用问题
  6. oracle拆分分区语法详解大全_Oracle分区表详解
  7. 哪里获取计算机新闻比较好,学新闻的用什么电脑比较好
  8. 培训班作业---作业1:公羊母羊生小羊的问题
  9. gopher对mysql的利用_[题目]记一次利用gopher的内网mysql盲注
  10. 23种设计模式python版