云原生之在kubernetes集群下部署mysql应用
一、Mysql介绍
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。MySQL是一种开源的关系型数据库管理系统,可将数据保存在不同的表中,而不是将所有数据放在一个大的仓库内,从而加快了访问速度并提高了灵活性。MySQL 使用了标准的 SQL 语言形式。支持大型的数据库,可以处理拥有上千万条记录的大型数据库。MySQL 还可用于多种系统中,且支持多种语言。
二、kubernetes集群介绍
1.k8s简介
kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
2.k8s架构图
kubernetes集群架构示意图

在这里插入图片描述
三、本次实践介绍
1.本次实践简介
1.在k8s集群环境中快速部署一个mysql应用服务,在个人环境中测试与学习;
2.本次实践环境为个人环境,生产环境请谨慎使用;
3.本次实践直接在yaml文件中写入数据库账号信息,方便以最快速度部署一个测试数据库服务;
4.如果了安全,可以使用k8s的Secret资源对象保存数据库的账号密码信息,来加强数据库的安全性;
2.本次环境规划
本次实践规划环境介绍
| hostname | IP地址 | 操作系统版本 | k8s版本 | 角色 |
|---|---|---|---|---|
| k8s-master | 192.168.3.201 | centos7.6 | v1.23.1 | master节点 |
| k8s-node01 | 192.168.3.202 | centos7.6 | v1.23.1 | worker节点 |
| k8s-node02 | 192.168.3.203 | centos7.6 | v1.23.1 | worker节点 |
三、检查本地k8s集群环境
1.检查k8s各节点状态
检查k8s各节点状态,确保k8s集群各节点状态正常。
[root@k8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 130d v1.23.1
k8s-node01 Ready <none> 130d v1.23.1
k8s-node02 Ready <none> 130d v1.23.1
复制
2.检查k8s版本
查看k8s的版本,注意部署应用时兼容的k8s版本。
[root@k8s-master ~]# kubectl version --short
Client Version: v1.23.1
Server Version: v1.23.1
复制
3.检查k8s系统pod状态
检查k8s集群的系统pod状态,确保所有系统pod运行正常。
[root@k8s-master ~]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-7bc6547ffb-2nf66 1/1 Running 1 (8d ago) 130d
calico-node-8c4pn 1/1 Running 1 (8d ago) 130d
calico-node-f28qq 1/1 Running 1 (8d ago) 130d
calico-node-wmc2j 1/1 Running 1 (8d ago) 130d
coredns-6d8c4cb4d-6gm4x 1/1 Running 1 (8d ago) 130d
coredns-6d8c4cb4d-7vxlz 1/1 Running 1 (8d ago) 130d
etcd-k8s-master 1/1 Running 1 (8d ago) 130d
kube-apiserver-k8s-master 1/1 Running 1 (8d ago) 130d
kube-controller-manager-k8s-master 1/1 Running 1 (8d ago) 130d
kube-proxy-8dfw8 1/1 Running 1 (8d ago) 130d
kube-proxy-ghzrv 1/1 Running 1 (8d ago) 130d
kube-proxy-j867z 1/1 Running 1 (8d ago) 130d
kube-scheduler-k8s-master 1/1 Running 1 (8d ago) 130d
复制
四、编辑mysql.yaml文件
编辑mysql.yaml,该文件使用最简单方式部署了一个mysql应用服务。
[root@k8s-master mysql]# cat mysql.yaml
[root@k8s-master mysql]# cat mysql.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: mk-mysql
name: mk-mysql
namespace: monkeyk
spec:
replicas: 1
selector:
matchLabels:
app: mk-mysql
template:
metadata:
labels:
app: mk-mysql
provider: monkeyk
group: com.monkeyk
spec:
volumes:
- name: mk-mysql-data
persistentVolumeClaim:
claimName: mk-mysql-data
containers:
- env:
- name: MYSQL_ROOT_PASSWORD
value: "666666"
- name: MYSQL_USER
value: "monkeyk"
- name: MYSQL_PASSWORD
value: "666666"
image: "mysql:5.6"
imagePullPolicy: IfNotPresent
name: mk-mysql
ports:
- containerPort: 3306
protocol: TCP
name: http
volumeMounts:
- name: mk-mysql-data
mountPath: /var/lib/mysql
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mk-mysql-data
namespace: monkeyk
annotations:
volume.beta.kubernetes.io/storage-class: standard
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
---
kind: Service
metadata:
labels:
expose: "true"
app: mk-mysql
name: mk-mysql
namespace: monkeyk
spec:
type: NodePort
ports:
- name: http
port: 80
nodePort: 30802
protocol: TCP
targetPort: 3306
selector:
app: mk-mysql
复制
五、创建mysql应用
1.应用mysql.yaml
应用mysql.yaml文件,快速创建部署一个数据库服务。
[root@k8s-master mysql]# kubectl apply -f mysql.yaml
deployment.apps/my-mysql created
service/my-db created
复制
2.查看pod状态
检查pod是否正常运行,确保pod运行状态正常。如果运行异常,可根据pod日志信息,判断故障。
[root@k8s-master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
my-mysql-9b877f47-nqf5f 1/1 Running 0 7m54s
复制
六、查看mysql服务IP
查看svc资源对象,查看mysql的外部访问端口为30011
[root@k8s-master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 130d
my-db NodePort 10.98.200.79 <none> 3306:30011/TCP 8m32s
复制
七、外部客户端远程访问mysql
远程连接mysql服务,进入mysql数据库,确保能正常进入。
[root@server ~]# mysql -h 192.168.3.202 -P30011 -uroot -p123456
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 2
Server version: 5.7.36 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, 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> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql>
复制
八、本次实践总结
1.本次实践为之前在初学k8s时的学习笔记,旨在为新手小白快速部署一个mysql应用;
2.mysql的存储可以配置持久存储来保存数据,使用storageclass来配置持久存储;
3.安全性方面,可以配置secret来确保数据库的安全性;
4.还可以配置初始化容器,来检查pod的运行环境是否正常;
5.对于本次yaml文件,可以增加更多的功能及高级特性,进行不断的优化升级;
6.本次实践的yaml文件可作为新手小白后续进阶学习的基础模板。
云原生之在kubernetes集群下部署mysql应用的更多相关文章
- 在 Kubernetes 集群中部署现代应用的通用模式
在 Kubernetes 集群中部署现代应用的通用模式 摘要 我们正在经历现代应用交付领域的第二次浪潮,而 Kubernetes 和容器化则是这次浪潮的主要推动力量. 随着第二次浪潮的推进,我们在 N ...
- Kubernetes集群的部署方式及详细步骤
一.部署环境架构以及方式 第一种部署方式 1.针对于master节点 将API Server.etcd.controller-manager.scheduler各组件进行yum install.编译安 ...
- 在 Kubernetes 集群快速部署 KubeSphere 容器平台
KubeSphere 不仅支持部署在 Linux 之上,还支持在已有 Kubernetes 集群之上部署 KubeSphere,自动纳管 Kubernetes 集群的已有资源与容器. 前提条件 Kub ...
- 在 Kubernetes 集群上部署 VSCode
在 Kubernetes 集群上部署 VSCode Visual Studio Code Visual Studio Code 是一个轻量级但功能强大的源代码编辑器,可在您的桌面上运行,适用于 Win ...
- 基于TLS证书手动部署kubernetes集群(下)
一.master节点组件部署 承接上篇文章--基于TLS证书手动部署kubernetes集群(上),我们已经部署好了etcd集群.flannel网络以及每个节点的docker,接下来部署master节 ...
- (转)基于TLS证书手动部署kubernetes集群(下)
转:https://www.cnblogs.com/wdliu/p/9152347.html 一.master节点组件部署 承接上篇文章--基于TLS证书手动部署kubernetes集群(上),我们已 ...
- 高可用Kubernetes集群-15. 部署Kubernetes集群统一日志管理
参考文档: Github:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsear ...
- 高可用Kubernetes集群-12. 部署kubernetes-ingress
参考文档: Github:https://github.com/kubernetes/ingress-nginx Kubernetes ingress:https://kubernetes.io/do ...
- 高可用Kubernetes集群-14. 部署Kubernetes集群性能监控平台
参考文档: Github介绍:https://github.com/kubernetes/heapster Github yaml文件: https://github.com/kubernetes/h ...
- Kubernetes 集群安装部署
etcd集群配置 master节点配置 1.安装kubernetes etcd [root@k8s ~]# yum -y install kubernetes-master etcd 2.配置 etc ...
随机推荐
- python 生成虚拟环境requirement.txt
# 在项目根目录中,打开终端执行以下命令 # 生成 requirements.txt 文件 pip3 freeze > requirements.txt # 安装依赖文件 pip3 instal ...
- Zabbix6.0使用教程 (一)—zabbix新增功能介绍2
上一篇我们已经介绍了部分zabbix6.0的新增功能,这期我们将继续为家详细介绍下余下的zabbix6.0新增功能,大家可以往下看. 六.监控项 6.1 自动类型选择 监控项配置表单会自动建议匹配的信 ...
- aardio用udp获取最佳本机IP地址
此方法在有多个网络接口的时候,例如部分虚拟网卡的情况,获取最合适的本地ip. 用UDP连接虚假IP地址以获取返回的本机IP import wsock.udp.client; import consol ...
- win10 vscode 设置 快捷键 ctrl + , ctrl + COMMA 与搜狗输入法 切换方法快捷键 冲突
win10 vscode 快捷键 ctrl + , ctrl + COMMA 与搜狗输入法 切换方法快捷键 冲突 没想到是在系统里面 Step. 1: 选择切换语音 Step. 2: 选择 键盘 St ...
- k8s是如何保障滚动升级时下线的pod不被访问
Kubernetes (k8s) 通过一系列机制保障在滚动升级时,下线的 Pod 不再被访问.以下是一些主要的保障措施: Service 抽象:在 Kubernetes 中,Pod 通常不是直接暴露给 ...
- Kotlin学习快速入门(12)—— 位运算符
由于不懂pythod,最近拜托朋友研究下解密live2d模型的解密算法,朋友写出了Java的代码 之后我进行改版,在转为kotlin的时候,发现kotlin自动转换有些坑,以及kotlin中的位运算符 ...
- 记录--Three.js的简单使用,Three.js在vue3.x中导入.pcd三维模型文件
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 本文说明 本文主要简单介绍了,在Vue3.x项目中如何简单的使用Three.js,导入PCD三维模型文件. 模型显示 项目实现 第一步 首 ...
- 记录--uniapp 应用APP跳转微信小程序
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 最近APP项目开发完成,在评审会上老板提了一个需求,想在开发的APP上添加一个链接,可以跳转公司的小程序商城. 原以为会很复杂,结果只有短 ...
- Redis(5)——亿级数据过滤和布隆过滤器
一.布隆过滤器简介 上一次 我们学会了使用 HyperLogLog 来对大数据进行一个估算,它非常有价值,可以解决很多精确度不高的统计需求.但是如果我们想知道某一个值是不是已经在 HyperLogLo ...
- 分享一个项目:go `file_line`,在编译器得到源码行号,减少运行期runtime消耗
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 file_line https://github.com/ ...