zoukankan      html  css  js  c++  java
  • service

    service作用: 可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求负载分发到后端的各个容器应用上,实现分布式应用统一入口和负载均衡机制;
    注意: pod和service都是kubernetes集群范围内的虚拟概念, 集群外的客户端无法通过podip或service的虚拟ip和虚拟端口访问它们,
    为什么需要service:

    1.pod的ip地址不可靠 
    2.容器进行分布式部署, 通过多个实例提供共同服务, 需要在这些实例前面设置一个负载均衡器来实现请求的分发
    

    kubernetes支持两种分发策略:

    1.RoundRobin : 默认模式, 轮询模式, 既轮询将请求转发到后端的各个pod上
    2.SessionAffinity: 基于客户端ip地址进行会话保持的模式, 可以使用service.spec.sessionAffinity=ClientIP基于客户端会话保持
    

    1)service基本用法

    apiVersion: v1 
    kind: Service
    metadata:
      name: nginx-service
      namespace: default 
      labels:
        app: nginx
    spec:
      sessionAffinity: None
      selector: 
        app: nginx
      ports:
      - name: http
        port: 80 
        protocol: TCP 
        targetPort: 80 
    #说明: port: 80  name为service name,  port 为service port, targetPort为pod容器port, selector是后端pod拥有的label, sessionAffinity: None表示分发策略为RoundRobin
    

    2)service用法: 多端口

    apiVersion: v1 
    kind: Service
    metadata:
      name: nginx-service
      namespace: default 
      labels:
        app: nginx
    spec:
      sessionAffinity: None
      selector: 
        app: nginx
      ports:
      - name: http
        port: 80 
        protocol: TCP 
        targetPort: 80 
      - name: https
        port: 443
        protocol: TCP 
        targetPort: 443
    

    3)service用法: headless service(无头service)
    无头service特点:

    1. 解析service name返回pod的ip列表, 客户端可以自己觉得那个real server
    2. 在statefulset中会为每个pod分配一个dns记录, {pod name}.{service name}
    
    apiVersion: v1 
    kind: Service
    metadata:
      name: nginx-service
      namespace: default 
      labels:
        app: nginx
    spec:
      sessionAffinity: None
      selector: 
        app: nginx
      clusterIP: None
      ports:
      - name: http
        port: 80 
        protocol: TCP 
        targetPort: 80 
    

    4)service用法: node port 集群外访问pod

    apiVersion: v1 
    kind: Service
    metadata:
      name: nginx-service
      namespace: default 
      labels:
        app: nginx
    spec:
      type: NodePort
      selector: 
        app: nginx
      ports:
      - name: http
        port: 80 
        protocol: TCP 
        targetPort: 80 
        NodePort:  8888
    
    #注意: NodePort: 8888 可以指定, 也可以不指定
    
  • 相关阅读:
    div中子div在firefox ie 水平居中对齐
    Access数据库自定义连接字符串(详细有图百度文档)
    ASP页面乱码
    国内开源asp.netCMS汇总
    sql 2005
    卡巴斯基授权key导入方式方法及其导入key基本原理
    关于SqlServer服务无法启动的症状分析和解决方法
    js下流媒体的在线播放
    用JS+vml作三维报表
    了解嵌入式数据库(sqlite,firebird)
  • 原文地址:https://www.cnblogs.com/lovelinux199075/p/11251668.html
Copyright © 2011-2022 走看看