docker - 在 Kubernetes 集群中看不到

标签 docker kubernetes rabbitmq google-kubernetes-engine

我创建了一个 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
    
  • 大概(!?)您正在使用私有(private) repo (因为您有 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/

    相关文章:

    docker - 将参数传递给父 Dockerfile

    docker ENV 与 RUN 导出

    kubernetes - 在这个例子中,如何捕获zookeeper-service的IP地址,并将其正确设置到需要它的kafka-broker中?

    kubernetes - 在 kubernetes 中挂载传播

    ubuntu - 无法在 ubuntu 10.04 上启动 rabbitmq 服务器

    docker - 使用buildroot发行版作为docker * host *

    git - golang docker 私有(private) github 存储库

    kubernetes - 如何保证我的 Kubernetes EBS 卷与部署位于同一个 AZ 中?

    node.js - 在 amqplib 连接上配置套接字超时

    python - Django Celery队列卡住了