问题描述

【k8s】或【普通容器】或【Linux】部署的RabbitMQ启动时出现了 epmd error for host xx.xx: nxdomain (non-existing domain) 错误,MQ无法启动成功。

其中 xx.xx 为无法解析的域名。

RabbitMQ官方还提到报错 Error during startup: {error,no_epmd_port} 也是同样的情况。

解决办法

这里简单记录下解决办法,分别以 Linux环境、docker容器环境、k8s环境、说明下。

Linux环境

/etc/hosts 文件添加域名解析 xx.xx127.0.0.1,以下示例:

127.0.0.1 mydomain.io

docker容器环境

docker run命令添加 --add-host 参数

示例:

docker run -d --add-host="mydomain.io:127.0.0.1" -p 5672:5672 rabbitmq:latest

k8s环境

在 podTemplate的spec下添加 hostname 写上域名,当rabbitmq访问该域名时自动映射到POD上。

示例:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: rabbitmq
  labels:
    app: rabbitmq
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rabbitmq
  serviceName: rabbitmq
  template:
    metadata:
      labels:
        app: rabbitmq
    spec:
      hostname: "mydomain.io"
      containers:
        - name: rabbitmq
          image: 'rabbitmq:latest'
          ports:
            - name: tcp-5672
              containerPort: 5672
              protocol: TCP
          env:
            - name: TZ
              value: 'Asia/Shanghai'

k8s官方文档上还有添加 hostAlias 的办法,这里简单截个图放一下文档地址:https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#PodSpec

参考:

作者:|东北小狐狸|,原文链接: https://www.cnblogs.com/hellxz/p/17362562.html

文章推荐

组织树查询-Jvava实现(递归)

非关系型数据库---Redis安装与基本使用

二叉树先序,中序,后序遍历的非递归算法(一)

Springboot集成MongoDB存储文件、读取文件

openGauss Datakit安装部署

Service Mesh之Istio部署bookinfo

深入理解 python 虚拟机:令人拍案叫绝的字节码设计

CSS in JS 之 Styled-components 用法

如何使用Mutex确保并发程序的正确性

python爬虫基础教程

3000帧动画图解MySQL为什么需要binlog、redo log和undo log

『忘了再学』Shell基础 — 20、Shell中的运算符