版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

依照上述示例,我们当我们需要在真实环境中查看指定pod日志的时候,我们只需要对pod名字进行替换即可。当然,我们不知道具体pod名字的时候,我们需要通过命令kubectl get pod查看具体pod名字 。

03.4

...

kubectl子命令exec(命令作用:进入容器内部)

为啥需要进入容器内部呢?

  1. 需要查看容器内部网络通不通,具体测试网络通不通的方法和linux服务器上测试方式一致,只是进入容器这个步骤是比在linux多的一个步骤
  2. 在容器内部登录数据库服务器
  3. 执行表结构调整脚本或者index差异调整脚本
代码块
languagebash
linenumberstrue
# 一定要注意:每个命令直接都是有空格的,或者说参数与命令直接都是有空格的!
kubectl exec -it {pod_name} bash
# 举例子
root@192:~# kubectl exec -it hcm-core-bfb686c77-j2c7q bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
root@hcm-core-bfb686c77-j2c7q:/hcm_server# 
# 一定要注意:进入pod的标志是root@后面的名字由主机名变成了pod名字。
# 进入pod我们使用完成之后,如何退出pod呢? 在当前命令行上输入exit命令即可
root@hcm-core-bfb686c77-j2c7q:/hcm_server# exit
exit
root@192:~# (到这里表示已经退出了pod,主机名由pod_name变成了原来的主机名192)

03.5 kubectl子命令describe(命令选学)

代码块
languagebash
linenumberstrue
# 注意{pod_name}是一个占位符,在实际使用的过程中,需要用实际值替换这个占位符
kubectl describe pod {pod_name}
# 比如一个pod的状态不是Running状态,我们可能需要查看pod为啥没有启动成功的情况,这个时候,我们需要describe查看一下pod启动不成功的原因
# 这也是describe这个子命令的作用
root@192:~# kubectl describe pod hcm-core-bfb686c77-j2c7q
Name:         hcm-core-bfb686c77-j2c7q
Namespace:    default
Priority:     0
...
...

04 数据库命令(以mysql为例,如果客户买的是其他数据库,则有对应的厂商进行对应的运维操作)

注意:数据库操作一般情况是禁止单人单独进行操作的!!!所有操作必须有其他同事或者懂数据库的客户在场的情况下进行操作,或者让客户自己操作,一般人员禁止随意或单独操作数据库。如有操作数据库需求请联系项目经理或者区总等负责人,确认必须要操作,然后联系部署老师协助帮忙查看操作是否有问题!

数据库操作必须要先备份、先备份、先备份(重要的事情,强调三遍),再操作!!!


一般数据库为mysql的项目,一般的数据库操作由我们自己人来处理。非mysql的情况,一般客户是购买的厂商的数据库,这个情况下,可能需要联系厂商人员或者客户的数据库运维人员对数据库进行操作。

以下所有的操作皆以mysql为例,因为我们也只对mysql进行简单的运维操作,其他数据库问题需要联系对应数据库厂商进行。

但是要求现场的同事,无论客户的数据库是可以通过UI登录的还是通过命令行进行登录的,需要现场同事知道如何登录数据库,可能每个数据库的登录方式是不一样的。

04.1 登录数据库操作

代码块
languagebash
linenumberstrue
# 注意命令行中的空格情况,所有花括号内部的中文需要使用实际数值进行替换操作,同时需要去掉花括号
mysql -u{用户名} -p{密码} -P {端口号} -A -h {数据库IP}
mysql -uroot -p -A -h 192.168.0.1
# 具体实例请见下图

Image Added

上述示例是以命令行mysql登录操作为例:一般情况下,禁止在命令行中输入密码(-p参数后面不要输入密码,回车之后,会有一个Enter password的提示,在这个提示后面输入密码,密码输入的过程中不会显示密码,确保输入正确之后,回车即可)

  1. 上图中的第一个标红的部分为登录数据库的命令
  2. 标红的第二部分 mysql> 该标志,意味着我们已经登录到数据库里面了,既可以在数据库中进行相应的操作了
  3. 使用完数据库之后,记得退出数据库,退出的命令为:\q   (输入\q 然 后回车即可)

04.1.1 数据库服务器上进行登录

在数据库服务器上进行登录的时候我们可以不需要添加后面的-h参数,比如

代码块
languagebash
linenumberstrue
# 在数据库服务器上,使用下列命令既可以进行登录数据库操作
mysql -u{用户名} -p{密码} -A

04.1.2 容器内登录数据库操作

代码块
languagebash
linenumberstrue
# 首先执行进入容器的命令
# kubectl exec -it {pod_name} bash
kubectl exec -it hcm-core-bfb686c77-j2c7q bash
# 进入容器之后,执行登录mysql数据库的命令即可,详情见下图所示

Image Added

上述示例的具体操作步骤:

  1. 首先执行kubectl exec -it {pod_name} bash命令进入容器内(一定要记得查看是否正确进入到容器内)
  2. 在容器内执行mysql登录命令
  3. 在显示mysql>的提示的时候,代表已经登录到数据库内

04.2 数据库查看慢sql命令

当数据库服务器异常的时候,比如负载异常、io异常等各种不正常情况,或者环境慢,需要查看是不是数据库堵住了导致的慢问题,这个时候需要登录数据库,并查看数据库中sql的执行情况。

代码块
languagesql
linenumberstrue
# 注意前面的mysql>只是一个mysql输入命令的一个提示符 ,表示你已经进入数据库,后面的命令才是我们实际要在数据库中要执行的命令。
mysql> select trx_query,trx_mysql_thread_id,trx_state, trx_started   from information_schema.INNODB_TRX;
Empty set (0.00 sec)
# 上述提示Empty set表示现在数据库中并没有慢sql在执行

Image Added

上述示例,需要执行的命令。可以直接进行拷贝粘贴防止手敲出现错误。

kubectl exec -it {pod_name}

03.5 kubectl子命令describe

04 数据库命令(以mysql为例,如果客户买的是其他数据库,则有对应的厂商进行对应的运维操作)

04.1 登录数据库操作

04.1.1 数据库服务器上进行登录

04.1.2 容器内登录数据库操作

...

04.3 数据库查看完整sql命令


05 环境慢问题处理

...