一  服务如何通过kubernetes集群的组件来实现其功能

  

  1.1  节点上的所有的服务相关的功能实现都是通过节点上面的kube-proxy来实现的,服务提供了一个或者多个服务IP以及端口对客户端开放,将其中的流量转发到对应的后端的pod上面去,每个service都有其稳定的IP地址以及端口,IP地址是虚拟的,并没有分配给任何实际的设备,所有服务IP本身并不能代表任何东西,这就是你无法ping通它的真正原因

  1.2 kube-proxy如何将一个发到请求的service转到相应的后端,以及各个节点如何能够知道service的地址

    在API服务器创建了一个service的时候,立马会分配一个IP地址给它,之后API服务器在很短的时间内通知到所有的kube-proxy有一个服务已经创建了,然后kube-proxy会让该IP在其所在的节点上可寻址,原理是建立一系列iptables规则,使得到目的地为服务的IP和端口被修改,如此就能将请求重定向到pod中

    下面演示一个到服务的请求如何被重定向到其他的pod中

  • 当节点A上的podA向服务发起请求的时候,节点上的内核里面的iptables规则有一条规矩就是如果目的地址为服务的IP则随机替换到服务的endpoint里面一个pod里面去
  • 所有实际上,从头到尾,这个服务的IP就是一个极其虚拟的

二  运行高可用的集群

  2.1 让应用高可用

    将应用运行在集群上的理由是,kubernets天然给你提供负载均衡,高可用以及很多好的特性

    如果需要做到这一点,需要你的应用能支持这点,如果不支持也没关系,可以将副本设置为1,并且还可以利用选举机制,就是创建多个你的副本应用,但是在任意的时间内,只有一个是可以对外提供服务,当这个节点挂掉之后,其余节点会感知到并与其他节点互相竞选提供服务的节点

  2.2 让kubernetes集群高组件高可用

    让kubernets集群高可用的图示如下所示

  • etcd高可用,一般将其设置为奇数个,3,5,7等
  • api服务器的数量保持和etcd一致就可以了,etcd就不需要搭载负载均衡器,而API服务器则需要一个负载均衡器,这样可以保证客户端总能连接到健康的实例
  • 调度器和控制器一样的,都只能有一个是工作的状态,其余的则是等到active节点挂了的时候在去竞争

kubernets之服务的实现方式的更多相关文章

  1. 浅淡Webservice、WSDL三种服务访问的方式(附案例)

    Webservice Webservice是使应用程序以与平台和编程语言无关的方式进行相互通信技术. eg:站点提供访问的数据接口:新浪微博.淘宝. 官方解释:它是一种构建应用程序的普遍模型,可以在任 ...

  2. dubbo服务启动的方式

    dubbo服务启动的方式: 1.dubbo自带的脚本, 2.直接用main方法启动dubbo的spring容器,参见dubbo-test里的各个例子 3.dubbo的spring boot start ...

  3. SpringCloud-创建服务消费者-Feign方式(附代码下载)

    场景 SpringCloud-服务注册与实现-Eureka创建服务注册中心(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  4. 小D课堂 - 新版本微服务springcloud+Docker教程_4-01 常用的服务间调用方式讲解

    笔记 第四章 服务消费者ribbon和feign实战和注册中心高可用 1.常用的服务间调用方式讲解     简介:讲解常用的服务间的调用方式 RPC:             远程过程调用,像调用本地 ...

  5. C# RFID windows 服务 网络协议方式

    上篇话说是串口方式操作RFID设备. 下面介绍网络协议方式. 设备支持断线重连. 那我们的服务也不能差了不是. 所以这个服务类也是支持的哦. 不解释上代码: namespace Rfid { /// ...

  6. Windows服务定时执行方式

    采用System.Timers.Timer 间隔固定时间执行 方式一:间隔固定的时间执行一次,关键代码: protected override void OnStart(string[] args) ...

  7. Windows Azure虚拟机和云服务实例计费方式更新

    在之前的Windows Azure计费账单中,A0,A1,A2,A3,A4系列的虚拟机(云服务实例)都是以A1为基准计费单位的,即: 虚拟机大小 计费单位(小时) A0 A1*0.25 A1 A1*1 ...

  8. android服务之启动方式

    服务有两种启动方式 通过startService方法来启动 通过bindService来开启服务 布局文件 在布局文件中我们定义了四个按键来测试这两种方式来开启服务的不同 <?xml versi ...

  9. Webservice、WSDL三种服务访问的方式【转】

    http://www.cnblogs.com/yongfeng/archive/2013/01/30/2883146.html 用soapUI试了下wsdl的测试,但还是不知道webService和W ...

随机推荐

  1. expdp、impdp状态查看及中断方法

    一.expdp状态查看及中断方法 1.查询expdp的job的名字 SQL> select job_name from dba_datapump_jobs; JOB_NAME---------- ...

  2. KVM虚拟机网络

    某一天,我的QEMU/KVM虚拟机在打开的时候,出现了以下错误: 查看default配置状态(命令是sudo virsh net-list -all,注意sudo,管理员用户登录的当我没说): 上图是 ...

  3. Hbase备份以及清表脚本

    脚本主要是方便自己工作使用,服务器环境中配置了hbase相关环境变量 1.hbase备份脚本 #!/bin/bash tableList=("table1" "table ...

  4. 2020-2021-1 20209307《Linux内核原理与分析》第一周作业

    一.Linux基础命令操作 1.查看目录.新建文件.复制移除文件等 ls[选项] [文件或目录] -a 显示所有文件 包含隐藏文件 -l显示详细信息 -d查看目录属性 pwd显示当前目录 mkdir ...

  5. Windows安装Pytorch并配置Anaconda与Pycharm

    1 开发环境准备 Python 3.7+Anaconda3 5.3.1(64位)+CUDA+Pycharm Community 2 安装Anaconda 2.1 进入官网下载: 根据windows版本 ...

  6. pandas的学习5-导入导出数据

    import pandas as pd ''' pandas可以读取与存取的资料格式有很多种,像csv.excel.json.html与pickle等-, 详细请看官方说明文件 ''' # read ...

  7. 第五章 Gateway--服务网关

    欧克 ,我接着上篇第四章 Sentinel–服务容错,继续写下去 开始网关之旅 5.1网关简介 大家都都知道在微服务架构中,一个系统会被拆分为很多个微服务.那么作为客户端要如何去调用 这么多的微服务呢 ...

  8. JDK 8 新特性,从入门到精通

    default关键字 在jdk1.8以前接口里面是只能有抽象方法,不能有任何方法的实现的. 在jdk1.8里面打破了这个规定,引入了新的关键字:default,使用default修饰方法,可以在接口里 ...

  9. Python进阶学习_连接操作Redis数据库

    安装导入第三方模块Redis pip3 install redis import redis 操作String类型 """ redis 基本命令 String set(n ...

  10. 解决Windows2019登录黑屏问题

    打开服务 停止App Readiness服务并禁用即可恢复正常