雷竞技下载官网Percona喜欢并拥抱Kubernetes。雷竞技下载官网Percona运营商已经在开发人员和运营团队的心中找到了自己的方式。随着用户的不断增多,我们从社区和支持组织那里得到了很多有价值的反馈。我们最常听到的两个问题是:
- 运行操作符的最佳实践是什么?
- 如果有问题,我该去哪里找?换句话说,如何排除问题?
在这篇博文中,我们将尝试troubleshoot.sh的开源工具复制,看看它是否能帮助我们解决问题。
准备
安装
fault .sh是kubectl插件的集合。安装非常简单,并在文档。
概念
有两个基本用例:
- 预运行——检查您的集群是否已经准备好并符合运行应用程序的要求,因此它应该涵盖最佳实践问题
- 支持包-检查应用程序是否正在运行和行为正确,这显然有助于故障排除
你应该了解工具中的三个功能概念:
- 收藏家-在那里你可以定义你想收集什么信息。默认情况下,会收集大量关于集群的基本信息。
- 修订-如果有敏感信息,你可以从包中编辑它。例如,AWS凭证位于应用程序日志中的某个地方。
- 分析-根据收集到的信息采取行动并提供可操作的见解。
起飞前的
检查是通过YAML文件定义的。我创建了一个例子来检查Kubernetes集群是否准备好运行雷竞技下载官网MySQL的Percona操作符(基于Percona雷竞技下载官网 XtraDB Cluster)。这将检查以下内容:
- Kubernetes版本和风格-因为我们只在特定的版本和提供商上测试我们的发布
- 默认存储类——可以使用本地存储,但默认情况下,我们的Operator使用持久卷声明
- 节点大小——我们检查节点是否至少有1gb的RAM,否则,Percona XtraDB Cluster可能无法启动雷竞技下载官网
执行如下命令:
|
1
|
kubectl
起飞前的
https
://生
.githubusercontent
com/spron-在/博客-数据/主/雷竞技下载官网-进行故障排除/pxc-人事处-1.11-起飞前的
.yaml
|
这只是一个例子。飞行前检查是非常灵活的,你可以阅读更多的文档。
支持包
支持组织或用户可以使用支持包来解决Kubernetes上应用程序的问题。运行该命令后,它还会创建一个tar.gz归档文件,其中包含各种数据点,可以稍后进行分析或与专家共享。
与Preflight类似,支持包检查在YAML文件中定义。请看我创建的例子在这里并运行如下命令:
|
1
|
kubectl
支持-包
https
://生
.githubusercontent
com/spron-在/博客-数据/主/雷竞技下载官网-进行故障排除/pxc-人事处-1.11-支持
.yaml
|
检查集群状态
首先,我们将检查Custom Resource Definition是否存在以及集群的运行状况。在我的YAML中,集群的名称被硬编码为minimum -cluster(它可以从我们的回购).
我们正在使用自定义资源字段来验证Percona XtraDB集群、HAProxy和ProxySQL的状态。雷竞技下载官网这是检查HAProxy的例子:
|
1
2
3.
4
5
6
7
8
9
10
11
12
|
-
yamlCompare
:
checkName
:
雷竞技下载官网
操作符
为
MySQL
-
HAProxy
文件名
:
集群-资源/自定义-资源/雷竞技下载官网perconaxtradbclusters
.pxc
.雷竞技下载官网percona
com/默认的
.yaml
路径
:
“[0].status.haproxy.status”
价值
:
准备好了
结果
:
-
失败
:
当
:
“假”
消息
:
HAProxy
是
不
准备好了
-
通过
:
当
:
“真正的”
消息
:
HAProxy
是
准备好了
|
雷竞技下载官网perconaxtradbclusters.pxc.雷竞技下载官网perconacom/默认的.yaml拥有所有pxc自定义资源默认的名称空间。我知道这里只有一个,所以我只是用yamlCompare方法。
验证Pods状态
如果您发现之前的检查失败了,那么是时候检查Pods了。在当前的实现中,您可以获得pod在不同名称空间中的状态。
|
1
2
3.
4
5
6
7
8
9
|
-
clusterPodStatuses
:
名字
:
不健康的
名称空间
:
-
默认的
结果
:
…
-
失败
:
当
:
“= =等待”
消息
:
圆荚体
{
{
.Namespace
}
}/{
{
. name
}
}
是
在
一个
等待
状态
与
状态
的
{
{
.Status
.Reason
}
}
。
|
分析已知问题的日志
解析应用程序的日志可能很乏味。但是,如果您可以预先定义所有已知错误,并在不进入中央日志系统的情况下快速了解问题呢?fault .sh也可以做到这一点。
首先,我们定义收集器。我们将从Operator和Percona XtraDB集群本身获取日志:雷竞技下载官网
|
1
2
3.
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
收藏家
:
-
日志
:
选择器
:
-
应用程序
.kubernetes
.io/实例=最小的-集群
-
应用程序
.kubernetes
.io/组件=pxc
名称空间
:
默认的
名字
:
pxc/容器/日志
限制
:
maxAge
:
24小时
-
日志
:
选择器
:
-
应用程序
.kubernetes
.io/实例=雷竞技下载官网-xtradb-集群-操作符
-
应用程序
.kubernetes
.io/组件=操作符
名称空间
:
默认的
名字
:
pxc-操作符/容器/日志
限制
:
maxAge
:
24小时
|
现在日志在我们的支持包中。我们可以手动分析它们,或者用正则表达式分析器捕获一些已知的消息:
|
1
2
3.
4
5
6
7
8
9
10
11
12
|
-
textAnalyze
:
checkName
:
失败的
来
更新
的
密码
文件名
:
pxc-操作符/容器/日志/雷竞技下载官网-xtradb-集群-操作符-。*. log
ignoreIfNoFiles
:
真正的
正则表达式
:
错误1396:操作ALTER USER失败
结果
:
-
通过
:
当
:
“假”
消息
:
“修改密码没有失败”
-
失败
:
当
:
“真正的”
消息
:
“修改系统用户密码失败。详情:https://docs.percona.com/per雷竞技下载官网cona-operator-for-mysql/pxc/users.html”
|
在本例中,我们正在检查Operator日志中的一条消息,该消息表明系统用户密码更改失败。
检查安全最佳实践
除了处理操作问题外,fault .sh还可以帮助进行遵从性检查。在部署到Kubernetes之前,在代码中应该有一些安全护栏,但如果有什么漏洞,您将有第二道防线。
在我们的例子中检查弱密码如果statefulset匹配高可用性最佳实践。
不建议收集和共享密码,但仍然可以作为安全策略的宝贵补充。为了获取秘密,你需要隐式地定义一个收集器:
|
1
2
3.
4
5
6
7
|
规范
:
收藏家
:
-
秘密
:
名称空间
:
默认的
名字
:
内部-最小的-集群
includeValue
:
真正的
关键
:
根
|
使用sbctl重放支持包
sbctl是对疑难解答.sh的一个很棒的补充。它允许用户和支持工程师检查支持包,就像与Kubernetes集群进行常规交互一样。请看下面的演示:
接下来是什么
这个工具是新的,有一定的局限性。举几个例子:
- 目前,所有检查都是硬编码的。它需要一些模板机制或YAML文件的简单生成器。
- 在分析器中添加复杂的逻辑是不可能的。例如,将一个分析器链接到另一个分析器。
- 如果能应用目标过滤就太好了。例如,不要收集所有自定义资源的信息,而只收集一个资源的信息。它可以用于有针对性的故障排除。
我们将与社区合作,看看Percona如何为这个工具做出贡献,因为它可以帮助我们的用户标准化我们产品的故障雷竞技下载官网排除。请在评论中告诉我们你在Kubernetes上调试Percona产品的用例或故事。雷竞技下载官网
Perc雷竞技下载官网ona Kubernetes操作符可以自动创建、修改或删除MySQL、MongoDB或PostgreSQL环境中的成员。
了解更多关于Percona Kub雷竞技下载官网ernetes操作符





