ssl - 如果定义了 k8s API tls 密码,则 k8s 上的 Rabbitmq 对等点发现失败
问题描述
我使用 helm chart 在 k8s 上部署 2 个 RabbitMQ pod。图表首先可以很好地部署和集群。然后为 k8s API 添加一个 tls 定义:
--tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
然后 RabbitMQ 对等发现插件无法集群。
[root@control-01]$ # kubectl get pod -o wide
oe-crmq-0 0/1 CrashLoopBackOff 7 33m 192.168.1.186 worker-01
oe-crmq-1 0/1 CrashLoopBackOff 7 32m 192.168.1.105 worker-02
[root@control-01]$ # kubectl logs oe-crmq-0
## ##
## ## RabbitMQ 3.7.5. Copyright (C) 2007-2018 Pivotal Software, Inc.
########## Licensed under the MPL. See http://www.rabbitmq.com/
###### ##
########## Logs: /var/log/rabbitmq/rabbit@oe-crmq-0.log
/var/log/rabbitmq/rabbit@oe-crmq-0_upgrade.log
Starting broker...
{"Kernel pid terminated",application_controller,"{application_start_failure,rabbit,{bad_return,{{rabbit,start,[normal,[]]},{'EXIT',{{case_clause,{error,\"{failed_connect,[{to_address,{\\"kubernetes.default.svc.cluster.local\\",8443}},\n {inet,[inet],etimedout}]}\"}},[{rabbit_mnesia,init_from_config,0,[{file,\"src/rabbit_mnesia.erl\"},{line,164}]},{rabbit_mnesia,init_with_lock,3,[{file,\"src/rabbit_mnesia.erl\"},{line,144}]},{rabbit_mnesia,init,0,[{file,\"src/rabbit_mnesia.erl\"},{line,111}]},{rabbit_boot_steps,'-run_step/2-lc$^1/1-1-',1,[{file,\"src/rabbit_boot_steps.erl\"},{line,49}]},{rabbit_boot_steps,run_step,2,[{file,\"src/rabbit_boot_steps.erl\"},{line,49}]},{rabbit_boot_steps,'-run_boot_steps/1-lc$^0/1-0-',1,[{file,\"src/rabbit_boot_steps.erl\"},{line,26}]},{rabbit_boot_steps,run_boot_steps,1,[{file,\"src/rabbit_boot_steps.erl\"},{line,26}]},{rabbit,start,2,[{file,\"src/rabbit.erl\"},{line,801}]}]}}}}}"}
Kernel pid terminated (application_controller) ({application_start_failure,rabbit,{bad_return,{{rabbit,start,[normal,[]]},{'EXIT',{{case_clause,{error,"{failed_connect,[{to_address,{\"kubernetes.defau
Crash dump is being written to: /var/log/rabbitmq/erl_crash.dump...done
所以我尝试在 advanced.config 中为 RabbitMQ 添加密码:
bash-4.2$ cat advanced.config
%% List allowed ciphers
[
{ssl, [{versions, ['tlsv1.2']},
{ssl_optons, [{ciphers, [
{ecdhe_rsa,aes_128_gcm,null,sha256}
]}, {fail_if_no_peer_cert,false}]}]}
].
虽然这个配置并没有带来太大的改进。连接到 kubernetes.default.svc.cluster.local 时仍然超时。
解决方案
将erlang升级到最新版本后,问题解决了。
推荐阅读
- wpf - 当 Datagrid 失去焦点时,WPF DataGridRow 自定义样式被解除
- amazon-web-services - Lambda 未接收来自 AWS SQS 的消息
- c# - DDD:即使所有字段都为空,也始终创建 ValueObject
- mongodb - 在golang中使用mongo,在指定秒数后过期文档?
- javascript - 无法识别术语“URL=Test.com”
- spyder - 如何防止 Spyder 5 出现卡顿,导致编辑器无法处理大文件?
- c# - Winexe 应用程序不会等到执行完成
- kubernetes - 如何扩展种类集群
- haskell - 如何检查列表中的所有奇数是否大于 10
- sql - postgres - 如何更改带有时间戳的列?