在Kubernetes集群中看不到

时间:2020-02-17 16:58:37

标签: docker kubernetes rabbitmq google-kubernetes-engine

我创建了一个Yaml文件来创建Rabbitmq kubernetes集群。我可以看到豆荚。但是当我写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"

2 个答案:

答案 0 :(得分:2)

@ arghya-sadhu的答案是正确的。

NB 我不熟悉RabbitMQ,但您可能需要使用其他图像(请参见'Management Plugin`)来包含UI。

有关更多详细信息,请参见下文。

您应该可以通过以下一种方法(!)在Pod上入侵UI:

PORT=8888
kubectl port-forward pod/rabbit-0 --namespace=${NAMESPACE} ${PORT}:15672

然后浏览localhost:${PORT}(如果8888不可用,请尝试其他操作)。

怀疑(!),除非您将图像与管理插件一起使用,否则它将无法工作。

  • Service需要选择StatefulSet的豆荚

在服务spec中,您可能应该添加:

selector:
  app: rabbit
  • 大概(!?)您正在使用私人存储库(因为您有imagePullSecrets)。

如果您不希望使用DockerHub,则可以删除imagePullSecrets部分。

  • 尽管不是必需的,但记录(!)容器端口也很有用:

StatefulSet

ports:
- containerPort: 5672
- containerPort: 15672

调试

NAMESPACE="default" # Or ...

确保创建了StatefulSet:

kubectl get statesfulset/rabbit --namespace=${NAMESPACE}

检查豆荚:

kubectl get pods --selector=app=rabbit --namespace=${NAMESPACE}

您可以检查Pod已绑定到(!)服务:

kubectl describe endpoints/rabbit --namespace=${NAMESPACE}

NB 您应该看到3个地址(每个Pod一个)

获取NodePort之一:

kubectl get service/rabbit --namespace=${NAMESPACE} --output=json
kubectl describe service/rabbit --namespace=${NAMESPACE}

您将需要使用NodePort来访问MQTT端点和UI。

答案 1 :(得分:1)

statefulsetsdeployments是不同的kubernetes资源。您已经创建了有状态集。这就是为什么您看不到部署的原因。如果这样做

kubectl get statefulset,您应该看到它,并且statefulset和Deployment都最终创建了pod,因此,如果执行kubectl get pods

,您应该能够看到Rabbitmq Pod。

自从创建Nodeport服务以来。您应该能够通过http://nodeip:nodeport来访问它,其中nodeip是kubernetes集群中任何工作节点的ip。

您可以通过以下方式了解什么是Nodeport(介于30000-32767之间的数字)

kubectl describe services rabbit 

这里是doc,用于从群集外部访问Nodeport服务。