k8s登录_一键快速登录WiseCloud MySQL数据库的方法
原创作者:清如许1、背景数据库是计算机系统持久化数据的重要载体,睿云智合公司的容器云管理平台WiseCloud也用到了数据库。在云计算时代,MySQL是云端数据库的不二选择。一个好的计算机系统,应该通过用户界面、服务接口调用等方式使用数据,用户直接操纵数据库的机会很少。但是在有一些场景下,有些用户不得不直接操纵数据库。例如:研发同事为了测试软件功能而预先置入测试数据;交付同事为了安装或升级系统、处
原创作者:清如许
1、背景
数据库是计算机系统持久化数据的重要载体,睿云智合公司的容器云管理平台WiseCloud也用到了数据库。在云计算时代,MySQL是云端数据库的不二选择。
一个好的计算机系统,应该通过用户界面、服务接口调用等方式使用数据,用户直接操纵数据库的机会很少。但是在有一些场景下,有些用户不得不直接操纵数据库。例如:研发同事为了测试软件功能而预先置入测试数据;交付同事为了安装或升级系统、处理第三方系统的脏数据;客户管理员处理遗留系统的脏数据。
操纵MySQL数据库的工具有很多,可以根据实际需要选用,可以归入两类:图形界面客户端和字符界面客户端。
使用图形界面客户端,例如SQLyog、MySQL Workbench等,能方便地连接MySQL数据库,利用图形界面的列表框、菜单和按钮,进行数据的增删查改和数据库管理工作。
MySQL图形工具有优点,也有局限性。例如:安装MySQL图形工具需要Windows或者macOS等图形桌面,但是在生产环境下,自备电脑不能方便地接入生产网络,MySQL图形工具也就无用武之地了。又如:用MySQL图形工具配置数据库连接时,需要知道数据库连接参数四元组:数据库IP、端口、用户名和密码,而这些参数并不是随时随地能获得的,给维护工作增加了难度,维护门槛较高。
字符界面的mysql命令工具在Shell命令行下运行,能随时随地获得并安装,也不依赖于图形桌面环境,所以深得运维工程师的喜爱。
本文介绍的方法,以mysql命令为基础,不需要预先知道数据库连接四元组,就能一键(执行一条Shell命令)快速登录WiseCloud/MySQL数据库,相比图形工具而言更加灵活、方便。
对此话题感兴趣的话,或者想利用它来提高工作效率,不妨进来看一看。
2、一键登录MySQL脚本
2.1 实现技术原理
本文所说的一键登录到MySQL方法利用了Kubernetes(以下简称K8s)和Docker的一些特性,或者说信息暴露特性来实现。
K8s与Docker容器之间传递参数利用了容器进程的环境变量作为中介。也就是说K8s把Docker容器运行时需要的参数以一组环境变量的形式传递给容器进程,容器进程从环境变量获得参数,动态配置运行时系统。
对WiseCloud而言,连接数据库的四元组也在传递给容器的环境变量之列。如果预先知道四元组的变量名就能取得四元组变量值,然后调用mysql命令快速地登录到MySQL数据库。当然,mysql客户端和MySQL服务器之间的网络互通是登录的前提条件。
Docker命令的子命令inspect能查询到容器的所有环境变量,然后用grep命令过滤出带DB前缀特征值的环境变量,就是数据库四元组。
docker inspect container_id/container_name | grep DB
原理理清楚了,就可以动手写脚本了。
2.2 编写Shell脚本
Shell脚本要做以下几件事:
S1. 查询wisecloud-controller命名空间下是否存在预定名称或者命令的应用Pod。这个脚本实际上查询带有关键词orchestration的应用Pod。这一步是检查脚本是否运行在WiseCloud集群节点上,严格意义讲不是完全必要的,但有了这一步的话信息更丰富。以下命令输出结果是Pod名称。
kubectl -n wisecloud-controller get pod -o wide | grep orchestration | awk '{print $1}'
S2. 查询是否存在预定名称(特征模式)的应用容器。docker命令在运行容器的主机上执行才有效,不能跨主机执行。以下命令输出结果是一条容器ID记录。
docker ps | grep app-orch | awk '{print $1}' | tail -1
S3. 查询容器进程的运行时参数,并过滤出符合特征串DB的环境变量,并格式化为“export DB_USER=username”形式。以下命令输出结果是MySQL四元组。
docker inspect $docker_container_id | grep DB | awk '{print $1}' | awk -F '[
更多推荐
所有评论(0)