一  服务如何通过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. Object.assign 之后 点对象 找不到

    export function CopyObject(val) {   return JSON.parse(JSON.stringify(val)); }

  2. Spark性能调优篇三之广播方式传输数据

    广播大变量,重复用到的变量 原因见 https://www.jianshu.com/p/2c297b23ebda

  3. Python爬取热搜存入数据库并且还能定时发送邮件!!!

    一.前言 微博热搜榜每天都会更新一些新鲜事,但是自己处于各种原因,肯定不能时刻关注着微博,为了与时代接轨,接受最新资讯,就寻思着用Python写个定时爬取微博热搜的并且发送QQ邮件的程序,这样每天可以 ...

  4. python初学者-从小到大排序

    x=input("x=") y=input("y=") z=input("z=") if x>y: x,y=y,x if x>z ...

  5. java中token的生成和验证

    package com.zjn.token; /** * token编码工具类 * @author ouyangjun */ public class TokenEncryptUtils { // 编 ...

  6. setHeader方法的参数说明

    转自:http://blog.sina.com.cn/s/blog_510fdc8b0100v8sg.html response.setHeader 是用来设置返回页面的头 meta 信息, 使用时 ...

  7. Q227 Basic Calculator II

    /* 看的答案,设置一个符号变量记录这个数前边的符号是什么,不同的符号进行不同的操作.这点自己想到了. 没想到的是由于乘除相当于一个优先级高的线程,所以要先处理,还有存取前一个乘数或者分子,应该怎么办 ...

  8. Linux嵌入式学习-USB端口号绑定

    由于ubuntu USB设备号为从零开始依次累加,所以多个设备每次开机后设备号不固定,机器人每次开机都要蛋疼的按顺序插, 在网上找到一种方法:udev的规则 udev的规则说明,可以参考博客说明:ht ...

  9. request常用方法servlet初步

    1 package com.ycw.newservlet; 2 3 import java.io.IOException; 4 import javax.servlet.ServletExceptio ...

  10. MongoDB插入数据,除去Class key

    本文来源于: 来源:CSDN 原文:https://blog.csdn.net/ClementAD/article/details/50849680 去除class字段的本质为设置 DefaultMo ...