Yelp计划明年提供更多本地团购服务或进行IPO
06-18
最近收到朋友们关于eks或者tke集群使用的一些疑问。具体问题是eks集群的pod配置日志被收集到cls中,但是cls无法检索到日志。
tke集群ingress同步规则clb失败,ingress事件报错The length of CertificateId 'xxxxxxhiQXI=' is not valid 首先我们分别分析这两个问题的原因,有什么解决办法,有什么用秘密是什么?联系方式呢?第一个问题分析,首先检查pod中的日志是否正常生成。这里如果日志写入正常,检查cls主题索引是否开启。
检查Topic是否开启,以及Pod的cls采集配置是否正常。这是在控制台上配置的。
通过在secret中引用账户的SecretId和SecretKey来访问cls。 yaml文件显示配置正常。
检查该帐号是否有访问cls的权限。这里的账号cam有权限。
去这里吧。我有点困惑。
配置没问题,权限也没问题。为什么日志不在 cls 中?其实这里我们忽略了一个步骤,就是我们没有检查SecretId和SecretKey的值是否准确。
我们刚刚检查了 pod 的 yaml 中的 ENV 环境变量 SecretId。以及SecretKey是否有正常引用。
那我们就来看看其中的秘密吧。如果secret中的SecretId和SecretKey的值正确,则说明该组件有问题。
这时候就需要找腾讯云工程师来排除故障了。这里,在控制台或者kubectl上查看对应secret的yaml,然后查看SecretId和SecretKey的值。
由于默认情况下密钥是采用 Base64 编码的,因此我们可以看到内容已被编码。这里我们使用下面的命令来解码它。
代码语言: javascript copy $ echo "" | base64 -d 解码后发现SecretId和SecretKey的值与正常的不一样。解码后的值似乎是经过 Base64 编码的。
这里,解码后的值再次进行base64解码。正确的值,那么这里的问题就清楚了。
cls无法检索日志的原因是引用的secret配置的账户SecretId和SecretKey不正确。 SecretId和SecretKey对应的值经过两次base64编码。
为什么要编码两次?我们稍后总结一下,先分析第二个问题。对于第二个问题分析,首先检查ingress事件。
读取入口事件后,出现错误消息 The length of CertificateId 'xxxxxxhiQXI=' is not valid。检查ingress的yaml。
这里使用的是证书。必须配置https。
检查证书对应的secret。哪个控制台或者kubectl检查ingress中引用的secret,然后找到qcloud_cert_id字段对应的值,检查证书id是否正确。
这里我们还是和上面一样,通过命令base64对qcloud_cert_id的值进行解码,发现解码出来的值也是base64编码的。是的,这里经过base64解码后得到了正确的证书ID。
那么为什么要进行两次base64编码呢?针对以上两个问题的分析和总结,我们简单分析一下。其实问题的原因是secret中配置的一些值经过了两次base64编码,导致引用异常。
通常,当您通过yaml创建Opaque类型的secret时,如果是键值对,通常需要先对值进行base64编码。这才是正确的操作方法。
但是如果你在腾讯云控制台创建secret,前端会默认你传入的值是base64编码的,所以如果你在控制台填写的是base64编码的值,那么在cluster会被编码两次,所以得到的对应值是不正确的。既然这里知道了原因,那么解决办法就出来了。
在控制台中创建 Secret 时,无需先对值进行 Base64 编码,只需使用原始内容即可。这里的问题可以用一句话来概括:腾讯云容器服务控制台创建了一个secret,变量值填写的是原来的内容。
无需先对其进行 Base64 编码。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-17
06-17
06-18
06-06
06-18
06-21
06-06
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用