Kubernetes学习笔记-了解kubernetes机理-高可用集群&kubernetes机理总结20220724

一、服务是如何实现的

service允许长时间对外暴露一系列pod、稳定的ip地址以及端口
1、引入kube-proxy
和service相关的任何事情都由每个节点上运行的kube-proxy进程处理。开始的时候,kube-proxy确实是一个proxy;等待连接,对每个进来的连接,连接到一个pod。这称为userspace(用户模式)代理模式。后来性能更好的iptables代理模式取代了它。iptables代理模式目前是默认模式。
service的几个知识点:每个service都有自己的ip地址和端口。客户端(通常为pod)通过连接该ip和端口使用服务。il地址是虚拟的,没有被分配给任何网络接口,当数据包分离节点时也不会列为数据包的源或目的ip地址。service的一个关键细节是,他们包含一个ip、端口对(或针对多个端口service有多个ip、端口对),所以服务ip本身并不代表任何东西。
2、kube-proxy如何使用iptables
当在api服务器中创建一个服务时,虚拟ip地址立刻就会分配给它。之后很短时间内,api服务器会通知所有运行在工作节点上的kube-proxy客户端有一个新的服务已经被创建。然后,每个kube-proxy都会让该服务在自己的运行节点上可寻址。原理是通过建立一些iptables规则,确保每个目的地为服务的ip/端口对的数据包被解析,目的地址被修改,这样数据包就会被重新定向到支持服务的一个pod
除了监控api对service的更改,kube-proxy也监控对endpoint对象的更改。因为endpoibt对象保存了所有支持服务的pod的ip/端口对(一个ip/端口对也可以指向除pod之外的其他对象)

二、运行高可用集群

在kubernetes上运行应用的一个理由就是,保证运行不被中断,或者说尽量少的人工介入基础设施导致的宕机。为了能够不中断服务,不仅应用要一直运行,kubernetes控制平面的组件也要不间断运行。

1、让应用变得高可用

当kubernetes运行应用时,有不同的控制器来保证应用平滑运行,即使节点当即也能保持特定的规模,为了保证你的应用高可用性,只需要通过deployment资源运行应用,配置合适数量的复制集,其他的就交给kubernetes处理。

1)运行多实例来减少宕机可能性

应用需要水平扩展,不过即使不可以,也可以使用deployment,将复制集数量设为1.如果复制集不可用,会快速替换一个新的,尽管不会同时发生。让所有相关控制器都发现有节点宕机、创建新的pod复制集、启动pod容器可能需要一些时间,不可避免中间有小段宕机时间。

2)对不能水平扩展的应用使用领导选举机制

为了避免宕机,需要在运行一个活跃应用的同时再运行一个附加的非活跃复制集,通过一个快速起效租约或领导选举机制来确保只有一个是有效的。

2、让kubernetes控制平面变的高可用

为了使kubernetes高可用,需要运行多个主节点,即运行组件多个实例:

  • etcd的分布式数据存储,所有api对象存于此处
  • api服务器
  • 控制器管理器,所有控制器运行的进程
  • 调度器

1)运行etcd集群

因为etcd被设计为一个分布式系统,其核心特性之一就是可以运行多个etcd实例,所以他做到高可用并非难事。要做的就是将其运行在合适数量的机器上(3个、5个或7个),使得他们能够互相感知。实现方式通过在每个实例的配置中包含其他实例的列表。

etcd会垮实例复制数据,所以三节点其中一个宕机并不会影响处理读写操作。为了增加错误容忍度,不仅仅支持一台机器宕机,需要运行5个或7个etcd节点,这样集群可以分别容忍2个或者3更节点宕机。

2)运行多实例api服务器

对比api服务器可以同时运行多个复制集,运行控制器管理器活着调度器的多实例情况美那么简单,因为控制器和调度器都会积极的监听集群状态,发生变更时作出相应操作。

控制器管理器和调度器可以和api服务器、etcd搭配运行,活着也可以运行在不同机器上。当搭配运行时,可以直接和本地api服务器通信;否则就是通过负载均衡连接到api服务器。

3)控制平面组件使用的领导选举机制

领导选举机制的实现方式时在api服务器中创建一个资源,而且甚至不少什么特殊种类的资源---endpoint资源就可以拿来用于达到目的

使用endpoint对象来完成该工作没有什么特别之处,使用endpoint对象的原因时只要没有同名的service存在,就没有副作用,也可以使用其他资源。

kubernetes机理总结

  • kubernetes有哪些组件组成,以及每个组件的责任是什么
  • api服务器、调度器、运行在控制器管理器的各种控制器,以及kubelet是如何协同工作让pod运行起来
  • 基础设施容器是如何将同一个pod的容器联系在一起
  • 想同节点上的pod如何通过网桥通信?不同节点上的网桥上如何连接的?运行在不同节点上的pod是如何通信
  • 如何通过配置各个节点上iptables规则,让kube-proxy在同一服务中垮pod发挥负载均衡功能
  • 控制平面每个组件的多个实例是如何运行来保证集群的高可用性

至此,kubernetes机器这章终于学完了,感觉有点乱,看了个皮毛,后面用到还要在翻出来细看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值