k8s-v1.2.3部署mysql-8服务
一、环境准备
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服务相关推荐
- 【云原生--K8S】 yaml文件部署Mysql数据库(一)
文章目录 前言 一.下载mysql镜像文件 二.创建deployment和service 三.进入docker容器操作mysql 四.Pod volumn存储无法持久化 五.删除deployment和 ...
- k8s v1.17 新特性预告: 拓扑感知服务路由
大家好,我是 roc,来自腾讯云容器服务(TKE)团队,今天给大家介绍下我参与开发的一个 k8s v1.17 新特性: 拓扑感知服务路由. 01 名词解释 拓扑域: 表示在集群中的某一类 " ...
- 在 Kubernetes 中基于 StatefulSet 部署 MySQL(下)
大家好,我是老 Z! 上篇文章实现了 MySQL 数据库在基于 KubeSphere 部署的 K8s 集群上的安装部署,部署方式采用了图形化界面这种形式.本文将会介绍如何使用 GitOps 来部署 M ...
- 【云原生】Kubernetes(k8s)部署 MySQL+Dubbo+Nacos服务
一.说明 二.部署 MySQL 三.部署 Nacos 四.部署 Dubbo 服务 4.1. 创建镜像仓库的密钥 4.2. 部署 provider 服务 4.3. 部署 consumer 服务 五.测试 ...
- 原生K8S部署pig微服务项目
原生K8S部署pig微服务项目 简介 项目地址:码云 Pig微服务项目 基于 Spring Cloud 2021 .Spring Boot 2.7. OAuth2 的 RBAC 权限管理系统 基于数据 ...
- k8s v1.10部署笔记
本文是根据最近一份github上很不错的部署教程所做的验证部署测试,不同之处在于原教程中是3节点,而这里共使用了4个节点.Github上的教程地址如下所示,推荐大家参照原作者文章进行自己的实验.在本文 ...
- k8s(七)—statefullset部署mysql主从集群
1 使用statefullset部署mysql主从集群 mysql-0是master mysql-1和mysql-2是两个备份 当mysql写的时候,找headless service中的mysql- ...
- kubernetes 部署 mysql 服务
1.使用如下yaml文件部署mysql服务 1.1.创建deployment cat mysql-deplpy.yaml apiVersion: apps/v1 kind: Deployment me ...
- k8s部署mysql集群(statefulset):主写从读、一主多从集群
安装nfs server和client端都执行 yum install nfs-utils rpcbind -y systemctl start nfs systemctl start rpcbind ...
- 【实战】K8S部署Nacos微服务
前言 1.这篇文章 花了4-5天的时间才写完的 2.吐槽下自己 感觉自己有点笨啊 k8s网络访问那块卡的时间有点久 3.下面再继续研究下k8s网络这块 争取先在应用层面啃的透透的 4.本着负责任的态度 ...
最新文章
- 【ACM】杭电OJ 1789(Doing Homework again)
- .NET6之MiniAPI(十三):健康检查
- openshift_通过OpenShift超越云炒作
- 前端学习(3145):react-hello-react之getStateFromProps
- 四、Dynamic-programming algorithm Dynamic--LCS
- 什么人适合学习Java编程?编程好学吗?
- MSSql与MYSQL比较
- HALCON 20.11:深度学习笔记(12)---语义分割
- JS弹出框插件zDialog再次封装
- Java实现单链表翻转
- matlab 画m,Matlab画直线(Bresenhamline.m)
- 华工计算机工图答案,华南理工 网络画法几何及工程制图-课程习题集答案
- TimesTen索引的概念与日常操作
- 前端cookie 放到请求头_HTTP请求头:cookie cache
- Webots舵轮使用纯追踪算法
- Ray Dalio:经济机器是怎样运行的 (时长30分钟) 薛兆丰经济学讲义
- Linux网络配置后无法正常上网
- linux nohup的使用及详解
- 机器学习模型可解释性进行到底 —— SHAP值理论(一)
- .NET 之路 | 006 了解 Roslyn 编译器
热门文章
- JavaScript倒计时制作
- 中国剩余定理编程实现
- linux 命令 查询丢包率,linux测试丢包率的命令 linux查看丢包率命令
- winpe进入linux系统,制作U盘Linux 与WinPE启动
- 解决win10下 Virtual Box USB功能无法使用问题
- oracle拆分分区语法详解大全_Oracle分区表详解
- 哪里获取计算机新闻比较好,学新闻的用什么电脑比较好
- 培训班作业---作业1:公羊母羊生小羊的问题
- gopher对mysql的利用_[题目]记一次利用gopher的内网mysql盲注
- 23种设计模式python版