k8s Service、Ingress

2019-10-26  本文已影响0人  搬板凳嗑瓜子

Service 是Kubernetes 最核心的概念、通过创建 Service 可以为一组具有相同功能的容器应用提供一个统一的入口地址。并且将请求进行负载分发到后端的各个容器应用上。

Ingress 资源
TCP 负载均衡器

无论是 iptables 还是 ipvs 模型的Service 资源都配置Linux 内核中的 Netfilter 之上进行四层调度。是一种类型更为通用的调度器。支持调度 HTTP、MySQL 等应用层服务。

HTTP(S) 负载均衡器

HTTP(s) 负载均衡器是应用层负载均衡机制的一种。支持根据环境做成更好的调度决策。与传输层调度器相比。它提供可自定义URL映射和 TLS 卸载功能。

Service

Service 资源基于标签选择器将一组 Pod 定义成一个逻辑组合。并通过自己的IP 地址和端口调度代理请求至组内的Pod 对象之上。

虚拟IP 和服务代理

Service IP 事实上是用于生成 iptables或ipvs 规则使用IP地址。它仅用于实现k8s 集群网络的内部通信。并且仅能够将规则中定义的转发服务的请求作为模板地址的响应。这也是它被称为虚拟IP原因

服务发现(Service Discovery)

存在着复杂的依赖关系且彼此之间通常需要进行非常频繁的交互和通信的群体。建立通信之前。服务于服务之间如何获取彼此的地址。但Pod 客户端中的应用得知某个特定 Service 资源的iP和端口。这个时候就需要引入服务发现的机制。

服务暴露
基本用法
    kind: Service
    spec:
      ports:
      - port: 80
       targetPort: 8080    #将Service 的80端口映射到 Pod 的8080
      clusterIP: None
      selector:
        app: nginx
        
      ports:
      - containerPort: 8080
       hostPort: 8081    # 通过设置容器级别 hostPort,将容器应用端口映射到物理机上 
       
    spec:
     hostNetwork: true
      ports:
      - containerPort: 8080   
      # 设置hostNetwork=true、该Pod 中所有容器的端口都将直接映射到物理机上。如果指定 hostPort.则 hostPort 必须等于 containerPort 的值。
     
    spec:  # 将Service 的端口映射到物理机
      type: NodePort #设置NodePort 映射到物理机器。这是Service的类型 NodePort
      ports:
      - port: 8080
       targetPort: 8080 
       nodePort: 8081
上一篇下一篇

猜你喜欢

热点阅读