10.service 详解
10.service 详解
什么是service:
Kubernetes中的Service 是一个抽象的概念,它定义了Pod的逻辑分组和一种可以访问它们的策略,这组Pod能被Service访问,使用YAML (优先)或JSON 来定义Service,Service所针对的一组Pod通常由LabelSelector实现
service是依赖于dns。  CoreDNS,kube-dns。
   node network    service network   pod network
service的实现有三种工作模型
     1.userspace  效率低  1.10及之前的k8s版本使用
     2.iptables   1.10之后
     3.ipvs       1.11开始默认使用,如果没有ipvs,则降级使用iptables,要启用需要在部署过程中指定KUBE_PROXY_MODE=ipvs   ip_vs,ip_vs_rr,ip_vs_wrr,ip_vs_sh,nf_conntrack_ipv4  这几个内核模块需要安装
service类型:
ClusterIP   集群内部访问,私网地址,可以被各个节点及pod访问,无法被外部访问。
        NodePort    集群外部访问
        ExternalName  访问集群之外部服务,例如调用外部的api等
            FQDN
              CNAME-->FQDN
        LoadBalancer   暂时做不了,需要共有云环境,要支持LBaas
        Headless   无头service,没有clusterIP。          #设置 CluserIP=None
  使用场景: 1. 自主选择权,有时候client想自己来决定使用哪个Real Server,可以通过查询DNS来获取Real Server的信息。
         2. Service的对应的每一个Endpoints,即每一个Pod,都会有对应的DNS域名;这样Pod之间就可以互相访问。(这样对于一些集群类型的应用就可以解决互相之间身份识别的问题)
service是属于4层代理,属于osi模型四层模型,对于https不支持
使用清单来定义service:
    ClusterIP类型:
[root@k8s-master manifests]# vim svc.ClusterIP.yaml
apiVersion: v1
kind: Service
metadata:
  name: redis
  namespace: default
spec:
  selector:           #注意 这里的selector下面没有matchLabels等字段
    app: redis
    role: logstor
  clusterIP: 10.97.97.97                #这个选项一般不设置,使用控制器自动会分配
  type: ClusterIP
  ports:
  - port: 6379           #service port
    targetPort: 6379          #pod port
NodePort类型:
[root@k8s-master manifests]# cat svc.NodePort.yaml 
apiVersion: v1
kind: Service
metadata: 
  name: myapp-nginx
  namespace: default
spec:
  selector:           #注意 这里的selector下面没有matchLabels等字段
    run: nginx-deploy
  clusterIP: ""               #这个选项一般不设置,使用控制器自动会分配
  type: NodePort
  ports:
  - port: 80         #service port
    targetPort: 80          #pod port
    nodePort: 30080   #这个端口如果不指定30000 到32767之间的端口会被随机分配出来。
===         
    nodePort: 可以不用指定,会自动分配
===
    ExternalName类型:
    eg:
    配置方式同前两种
Session Affinity: ClienIP #这个值设置为Clientip后会会话保持,让同一个ip的访问到的后端pod为同一个,默认值是None,为None时候是负载均衡,随机到各个后端pod
Headless类型:
    eg:
[root@k8s-master manifests]# cat  svc.headless.yaml 
apiVersion: v1
kind: Service
metadata:
  name: myapp-svc
  namespace: default
spec:
  selector:           #注意 这里的selector下面没有matchLabels等字段
    app: myapp
    role: canary
  clusterIP: None           #在Headless类型中,这里值设置为None
  ports:
  - port: 80           #service port
    targetPort: 80      #pod port
===
        资源记录:SVC_NAME.NS.DOMAIN.LTD.
        svn.cluster.local
        redis.default.svc.cluster.local
10.service 详解的更多相关文章
- 史上!最最最简洁明了的 Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳
		
Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳 JERRY_Z. ~ 2020 / 8 / 30 转载请注明出处!️ 目录 Java JDK 安装目录及其子目录含义 10分钟详解 ...
 - 深入浅出 Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳
		
Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳 JERRY_Z. ~ 2020 / 8 / 30 转载请注明出处!️ 目录 Java JDK 安装目录及其子目录含义 10分钟详解 ...
 - 10分钟详解Spring全家桶7大知识点
		
Spring框架自2002年诞生以来一直备受开发者青睐,它包括SpringMVC.SpringBoot.Spring Cloud.Spring Cloud Dataflow等解决方案.有人亲切的称之为 ...
 - windows xp/7/8/8.1/10安全模式详解和系统修复讲解
		
如果你的电脑因为各种原因(强关电脑等原因导致的电脑蓝屏,或者引导文件受损等)开不了机,进不了电脑桌面,那么就可以看看我这篇文章了. 先贴上百度百科,说得挺好的.最下面有我贴的图片操作过程详解. 百度百 ...
 - Android中的Service详解
		
今天我们就来介绍一下Android中的四大组件中的服务Service,说到Service, 它分为本地服务和远程服务:区分这两种服务就是看客户端和服务端是否在同一个进程中,本地服务是在同一进程中的,远 ...
 - 淘宝(阿里百川)手机客户端开发日记第六篇 Service详解(四)
		
DEMO1:在Activity里声明一个回调方法,当service完成任务后,调用这个回调方法. 首先,我们先继承service,来创建服务,代码如下: package com.example.ser ...
 - SpringMVC + Spring 3.2.14 + Hibernate 3.6.10 集成详解
		
注:此文档只说明简单的框架集成,各个框架的高级特性未涉及,刚刚接触框架的新人可能需要参考其他资料. PS:本次练习所用jar包都能在此下载到:http://pan.baidu.com/s/1sjmgd ...
 - Kubernetes服务发现之Service详解
		
一.引子 Kubernetes Pod 是有生命周期的,它们可以被创建,也可以被销毁,然后一旦被销毁生命就永远结束.通过ReplicationController 能够动态地创建和销毁Pod(列如,需 ...
 - kubernetes 实践五:Service详解
		
Service 是 k8s 的核心概念,通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求负载分发到后端的各个容器应用上. Service 的定义 Servic ...
 
随机推荐
- 在php中连接数据库 pdo
			
在php中连接数据库 pdo //数据库信息 $mysql_conf = array( 'host' => '127.0.0.1', 'db' => 'meteorolog_foreign ...
 - Go语言根据数据表自动生成model以及controller代码
			
手写model的用法请参考: https://www.jianshu.com/p/f5784b8c00d0 这里仅说明自动生成model文件的过程 bee generate appcode -tabl ...
 - (十四)Linux kernel mmc 框架说明,包括mmc_test使用方法
			
1.Linux 总线模型 Linux下的任何驱动在内核中最终都抽象为bus, driver以及device三者间的相互作用. 总线是处理器和一个或多个设备之间的通道,在设备模型中,所有 ...
 - 对于写Python学习笔记的看法
			
学习写笔记是一个不错的学习方法,好些同学在学习Python过程中也会写学习笔记.俗话说好记性不如烂笔头,我很赞同这个说法. 我列举几个学习Python写笔记的好处: 1.Python知识的二度巩固 通 ...
 - sklearn--回归
			
一.线性回归 LinearRegression类就是我们平时所说的普通线性回归,它的损失函数如下所示: 对于这个损失函数,一般有梯度下降法和最小二乘法两种极小化损失函数的优化方法,而scikit-le ...
 - JavaScript教程——函数(arguments 对象)
			
arguments 对象 定义 由于 JavaScript 允许函数有不定数目的参数,所以需要一种机制,可以在函数体内部读取所有参数.这就是arguments对象的由来. arguments对象包含了 ...
 - BZOJ3157 国王奇遇记——神奇的推式子
			
先膜一发Miskcoo,大佬的博客上多项式相关的非常全 原题戳我 题目大意 求 \[\sum\limits_{i=1}^{n}i^mm^i\] 题解 设一个函数\(f(i)=\sum\limits_{ ...
 - C# Tcp和Socket 网络(五)
			
TcpReceive public Form1() { InitializeComponent(); new Thread(() => { IPAddress ip = IPAddress.Pa ...
 - Codeforces Round #591 (Div. 2, based on Technocup 2020 Elimination Round 1) C. Save the Nature
			
链接: https://codeforces.com/contest/1241/problem/C 题意: You are an environmental activist at heart but ...
 - Codeforces Round #591 (Div. 2, based on Technocup 2020 Elimination Round 1) A. CME
			
链接: https://codeforces.com/contest/1241/problem/A 题意: Let's denote correct match equation (we will d ...