Kubernetes:无法telnet到我的群集内的ClusterIP服务

时间:2017-08-26 13:50:27

标签: jenkins kubernetes

我想在本地Kubernetes集群(没有云)上部署Jenkins。 我将在Jenkins之上创建2个服务。 一个端口8080的NodePort类型的服务(映射到随机端口,我可以在集群外部访问它。我也可以使用ClusterIP:8080)在集群内访问它。一切都很好。

我的第二项服务是我的詹金斯奴隶可以连接。 我选择ClusterIP(默认)作为我的服务类型:

我读到了有关3种类型的服务:

  • clusterIP:
  

在群集内部IP上公开服务。选择此值   使服务只能从群集中访问。

  • NodePort:50000不需要公开外部群集
  • 负载均衡器:我不是在云中工作

这是我的.yml来创建服务:

  kind: Service
  apiVersion: v1
  metadata:
    name: jenkins-ui
    namespace: ci
  spec:
    type: NodePort
    selector:
      app: master
    ports:
      - protocol: TCP
        port: 8080
        targetPort: 8080
        name: master
---
  kind: Service
  apiVersion: v1
  metadata:
    name: jenkins-discovery
    namespace: ci
  spec:
    #type: ClusterIP
    selector:
      app: jenkins
    ports:
      - protocol: TCP
        port: 50000
        targetPort: 50000
        name: slaves

问题是我的奴隶无法连接到端口50000。 我试图telnet服务jenkins-discovery的ClusterIP:port,我拒绝了连接。我可以telnet到jenkins-ui服务的ClusterIP:port。我做错了什么或有一部分我不明白?

1 个答案:

答案 0 :(得分:0)

它已经解决了。错误是选择器,这是我不清楚的一部分。我正在使用不同的节点选择器,这似乎导致了这个问题。这很有效:

 kind: Service
  apiVersion: v1
  metadata:
    name: jenkins-ui
    namespace: ci
  spec:
    type: NodePort
    selector:
      app: master
    ports:
      - protocol: TCP
        port: 8080
        targetPort: 8080
        name: master
---
  kind: Service
  apiVersion: v1
  metadata:
    name: jenkins-discovery
    namespace: ci
  spec:
    #type: ClusterIP
    selector:
      app: master
    ports:
      - protocol: TCP
        port: 50000
        targetPort: 50000
        name: slaves