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 详解的更多相关文章

  1. 史上!最最最简洁明了的 Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳

    Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳 JERRY_Z. ~ 2020 / 8 / 30 转载请注明出处!️ 目录 Java JDK 安装目录及其子目录含义 10分钟详解 ...

  2. 深入浅出 Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳

    Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳 JERRY_Z. ~ 2020 / 8 / 30 转载请注明出处!️ 目录 Java JDK 安装目录及其子目录含义 10分钟详解 ...

  3. 10分钟详解Spring全家桶7大知识点

    Spring框架自2002年诞生以来一直备受开发者青睐,它包括SpringMVC.SpringBoot.Spring Cloud.Spring Cloud Dataflow等解决方案.有人亲切的称之为 ...

  4. windows xp/7/8/8.1/10安全模式详解和系统修复讲解

    如果你的电脑因为各种原因(强关电脑等原因导致的电脑蓝屏,或者引导文件受损等)开不了机,进不了电脑桌面,那么就可以看看我这篇文章了. 先贴上百度百科,说得挺好的.最下面有我贴的图片操作过程详解. 百度百 ...

  5. Android中的Service详解

    今天我们就来介绍一下Android中的四大组件中的服务Service,说到Service, 它分为本地服务和远程服务:区分这两种服务就是看客户端和服务端是否在同一个进程中,本地服务是在同一进程中的,远 ...

  6. 淘宝(阿里百川)手机客户端开发日记第六篇 Service详解(四)

    DEMO1:在Activity里声明一个回调方法,当service完成任务后,调用这个回调方法. 首先,我们先继承service,来创建服务,代码如下: package com.example.ser ...

  7. SpringMVC + Spring 3.2.14 + Hibernate 3.6.10 集成详解

    注:此文档只说明简单的框架集成,各个框架的高级特性未涉及,刚刚接触框架的新人可能需要参考其他资料. PS:本次练习所用jar包都能在此下载到:http://pan.baidu.com/s/1sjmgd ...

  8. Kubernetes服务发现之Service详解

    一.引子 Kubernetes Pod 是有生命周期的,它们可以被创建,也可以被销毁,然后一旦被销毁生命就永远结束.通过ReplicationController 能够动态地创建和销毁Pod(列如,需 ...

  9. kubernetes 实践五:Service详解

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

随机推荐

  1. 第一章、接口规范之web-api接口

    1.什么是Web API接口 通过网络,规定了前后台信息交互规则的url链接,也就是前后台信息交互的媒介 Web API接口和一般的url链接还是有区别的,Web API接口简单概括有下面四大特点 u ...

  2. shell脚本——作业二(循环作业)

    1.通过位置变量创建linux系统账户及密码 $1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数 #!/bin/bash #创建用户与密码 declare -i c=0 if [ -z $1 ...

  3. docker container 导入和导出

    目录 docker container 导入和导出 1.前言 2.docker container 的导出 3.docker container 的导入 4.镜像和容器 导出和导入的区别 docker ...

  4. 制作docker 离线仓库

    目录 制作docker 离线仓库 1.前言 2.步骤 安装docker-distribution 编辑docker-distribution服务的配置,使用yaml进行的配置 启动仓库服务 编辑doc ...

  5. Vue介绍:vue项目搭建

    一.环境搭建 二.项目创建 三.认识项目 四.项目功能 一.环境搭建 *安装node 官网下载安装包,傻瓜式安装:https://nodejs.org/zh-cn/ *安装cnpm npm insta ...

  6. 牛客第十场 F.Popping Balloons

    第一维直接遍历 第二维用线段树维护每个最左端可以得到的贡献 在线段树上每次删除一个点会影响到 X   X-R   X-2*R  3个值 最多操作1e5次 复杂度 6*n*logn(删了还要加回来 #i ...

  7. 如何让Python2与Python3共存

    一.摘要 最近做服务测试的时候,实在被第三方模块折磨的够呛,从安装就存在兼容Py2和Py3的问题,产品提供的服务越来越多,做服务验证也不得不跟进支持测试,这眼前的Hadoop/Hive/Hbase/H ...

  8. 登录网站的autohotkey脚本

    ;如果需要这个软件的代码逻辑,删除敏感信息只需要把上面3行代码删除即可. !:: ;login经过测试必须用ie浏览器,在默认软件里面浏览器设置成ie即可,其他浏览器不让send密码 ;虽然通过程序把 ...

  9. CF15E Triangles

    思路 有四种方法,L,R,L->R,只走上面的小三角形 然后组合方案数\(2f^2+8f+10\) 然后求f,递推一下就好啦(其实是太麻烦了) 时间和空间复杂度都是\(O(n)\) 代码 #in ...

  10. Codeforces Round #456 (Div. 2) 912D D. Fishes

    题: OvO http://codeforces.com/contest/912/problem/D 解: 枚举每一条鱼,每放一条鱼,必然放到最优的位置,而最优位置即使钓上的概率最大的位置,即最多的r ...