代码之家  ›  专栏  ›  技术社区  ›  Hacker

从另一个豆荚kubernetes进入豆荚

  •  0
  • Hacker  · 技术社区  · 5 年前

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: influxdb
      labels:
        app: influxdb
    spec:
      template:
        metadata:
          labels:
            app: influxdb
        spec:
          containers:
          - name: influxdb
            image: influxdb
            ports:
            - containerPort: 8083
              name: admin
            - containerPort: 8086
              name: http
            resources:
              limits:
                memory: 2048Mi
                cpu: 100m  
            volumeMounts:
            - name: influxdb-data
              mountPath: /var/lib/influxdb
          volumes:
          - name: influxdb-data
            persistentVolumeClaim:
              claimName: influxdb-pvc-vol
    

    服务文件

    apiVersion: v1
    kind: Service
    metadata:
      name: influxdb
      labels:
        app: influxdb
    spec:
      ports:
        - port: 3306
      selector:
        app: influxdb
      clusterIP: None
    

    clusterIP: None 是吗?他公开了3306端口并将其映射到节点端口3306。所以我相信我可以用3306端口和它的IP从其他的pod访问。但在这里我可以通过 http://influxdb:8086 如何通过 http://influxdb:8086 ?

    0 回复  |  直到 5 年前
        1
  •  1
  •   itaysk    5 年前

    我可以解释发生了什么以及为什么这样做,但我仍然认为这种配置没有意义。

    部署创建一个Pod,该Pod运行infloxdb,默认情况下在端口8086上侦听。这个 containerPort Pod spec reference :

    主要是信息。此处不指定端口不会阻止该端口被公开。任何侦听容器内默认“0.0.0.0”地址的端口都可以从网络访问。

    现在转到使用端口3306创建的服务,这很奇怪,但在本例中无关紧要,因为这是 Headless Service ClusterIP: None 你本质上是让这成为一个无头的服务。鉴于此服务实际上并不为任何流量提供服务,因此此处的“端口”字段毫无意义。

    现在让我们回顾一下当您访问 http://influxdb:8086

    1. http客户端解析主机 influxdb 到吊舱IP。这是可能的多亏了无头服务。再次注意,主机解析为Pod IP,而不是服务IP。
    2. 因为吊舱是在8086上服务的,而且你直接通过它的私有IP到达它,它接受你的请求,你有你的回复。
        2
  •  0
  •   Dan Murphy    5 年前

    定义ClusterIP:none的服务称为 headless service

    对于定义选择器的headless服务,endpoints控制器在API中创建端点记录,并修改DNS配置以返回直接指向支持该服务的pod的记录(地址)

    由于只有一个infloxdb pod,因此不需要对其进行负载平衡,也不需要服务代理,请求直接路由到pod。