内容纲要
概要描述
本文描述 registry 启动失败,报错 level=fatal msg="crypto/tls: private key does not match public key"
的解决方法。
详细说明
1 问题描述
registry 启动失败,pod 状态为 CrashLoopBackOff
kubectl logs tos-registry-tos-hostname -n kube-system
查看pod日志有如下报错:
level=fatal msg="crypto/tls: private key does not match public key"
2 解决方案
重装Registry角色
由于Registry页面无法重装,我们需要去数据库里手动删除,再去页面重装
2.1 登陆manager数据库
2.2 进入transwarp-manager库内,修改role表
select * from role where type='TOS_REGISTRY';
delete from role where type='TOS_REGISTRY';
删除之后,去 manager 的 TOS 角色信息页面上确认这个角色是否已被删除
2.3 重装Registry角色
确认registry的版本号,registry 节点执行
docker images | grep registry
manager 节点备份对应的metainfo.yaml
cp /var/lib/transwarp-manager/master/content/meta/services/TOS/[版本]/metainfo.yaml /var/lib/transwarp-manager/master/content/meta/services/TOS/[版本]/metainfo.yaml.init
修改对应的metainfo.yaml
vi /var/lib/transwarp-manager/master/content/meta/services/TOS/[版本]/metainfo.yaml
找到name: TOS_REGISTRY部分,在frontendOperations里添加 "Scaleout" 选项,如下图所示
manager 节点重启manager进程
/etc/init.d/transwarp-manager restart
重新登陆Manager页面,tos上添加角色重装registry
如果页面上卡住了,可以手动到 registry 节点服务器上
mv /opt/kubernetes/manifests-multi/tos-registry.manifest /tmp
过一分钟,再移动回去
mv /tmp/tos-registry.manifest /opt/kubernetes/manifests-multi/