我创建了一个 yaml 文件来创建 rabbitmq kubernetes 集群。我可以看到 pod 。但是当我写 kubectl 时得到部署。我看不到那里。我无法访问rabbitmq ui 页面。
apiVersion: v1
kind: Service
metadata:
labels:
app: rabbit
name: rabbit
spec:
ports:
- port: 5672
protocol: TCP
name: mqtt
- port: 15672
protocol: TCP
name: ui
type: NodePort
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: rabbit
spec:
serviceName: rabbit
replicas: 3
selector:
matchLabels:
app: rabbit
template:
metadata:
labels:
app: rabbit
spec:
containers:
- name: rabbitmq
image: rabbitmq
nodeSelector:
rabbitmq: "clustered"
最佳答案
@arghya-sadhu 的回答是正确的。
注意我不熟悉 RabbitMQ,但您可能需要使用不同的图像(参见 'Management Plugin`)来包含 UI。
请参阅下面的更多细节。
您应该能够通过以下方式在一个(!) Pod 上破解您的 UI:
PORT=8888
kubectl port-forward pod/rabbit-0 --namespace=${NAMESPACE} ${PORT}:15672
然后浏览
localhost:${PORT}
(如果 8888
不可用,请尝试另一个)。我 嫌疑人 (!)除非您将图像与管理插件一起使用,否则这将不起作用。
加
Service
需要选择StatefulSet
的 pod 服务内
spec
你应该添加也许:selector:
app: rabbit
imagePullSecrets
)。 如果您不想使用 DockerHub,您可以删除
imagePullSecrets
部分。在
StatefulSet
ports:
- containerPort: 5672
- containerPort: 15672
调试
NAMESPACE="default" # Or ...
确保创建了 StatefulSet:
kubectl get statesfulset/rabbit --namespace=${NAMESPACE}
检查 Pod:
kubectl get pods --selector=app=rabbit --namespace=${NAMESPACE}
您可以检查 Pod 是否绑定(bind)到 (!) 服务:
kubectl describe endpoints/rabbit --namespace=${NAMESPACE}
注意您应该看到 3 个地址(每个 Pod 一个)
获取 NodePort:
kubectl get service/rabbit --namespace=${NAMESPACE} --output=json
kubectl describe service/rabbit --namespace=${NAMESPACE}
你会 需要使用 NodePort 访问 MQTT 端点和 UI。
关于docker - 在 Kubernetes 集群中看不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60267204/