clusterIP作为k8s中的服务,
也是其他三个服务的基础
~]$ kubectl create service
clusterip externalname loadbalancer nodeport
客户端的流量到service
service分发给pod,pod由控制器自动部署,自动维护
那么问题是service的可用性如何保证?
这里以clusterip这个服务举例。
clusterip作为流量的分发者,如果保证自身的高可用?
clusterip是一个虚拟服务
用户访问clusterip的流量
被分配到后端的pod
那么clusterip服务的稳定性如何保证呢?
用kube-proxy保证
kube-proxy调用ipvs内核
实现流量在内核级别的四层负载均衡
clusterip是kube-proxy调用ipvs模块虚拟出来的一个服务器
所以kube-proxy可用性ok
那么clusterip服务的可用性就ok
------------------------------------------------------------------------
那么kube-proxy的高可用如何保证呢?
kube-proxy是以pod的形态存在
每个物理节点都有一个kube-proxy的pod
如果某个节点上的kube-proxy休息了
那么控制器就会自动在该节点新建一个kube-proxy的pod
-------------------------------------------------------------------------
那么在这个新建的过程中,哪怕只有1秒钟
会影响集群的流量分发吗
由于k8s集群的实际负责计算的pod是分布式的在多个节点上的
所以单个节点的kubeproxy的pod掉线
其他节点照常可以负责其他节点的流量分发和计算
不太影响整个集群
但是对于单个节点的流量分发会有少量影响的
但是这个影响对于整体服务来讲
是比较小的。
总之单个节点的kube-proxy的pod掉线小几秒
属于正常波动
而且这种情况发生的概率不大
为什么?
因为kubeproxy的pod不是管理员手工去管理的
kubeproxy的pod,由控制器daemonset来批量部署和维护
当一个节点上的kubeproxy的pod掉线了
daemonset控制器会立马用镜像重建一个新的kubeproxy的pod
仍旧是每个节点上一个kubeproxy的pod
所以,kubeproxy的高可用性由daemonset控制器来保证
------------------------------------------------------------------------------------
那么daemonset控制器的可用性用什么保证呢?
用kube-controller-manager
控制器管理器
控制器管理器会监控着这些控制器
包括daemonset
同时,
prometheus监控着集群的各个组件
包括daemonset控制器
监控界面通过grafana展现
同时prometheus设置alertmanager告警系统
如果集群有组件故障
alertmanager通知管理员
并且可以提前设计预案
alertmanager告警之后
自动执行故障相应系统,以及特定的脚本。
-------------------------------------------------------------
那么prometheus的可用性怎么保证呢?
可以配置冗余
由管理员负责
-------------------------------------------------------------
管理员的管理工作的可用性怎么保证呢?
通过企业对于系统管理的审计
说白了,由部门领导管理
---------------------------------------------------------------
那么部门领导的工作的可用性怎么保证呢?
由公司副总管理
----------------------------------------------------------------
公司副总的工作的可用性怎么保证呢?
由公司老板管理
----------------------------------------------------------------
那么公司老板的监管工作的可用性怎么保证呢?
不用保证。
因为公司技术运营的好,老板多赚
公司技术运营监管的一般,老板少赚点而已
所以
技术到这一层就不用监管了
已经到达权益的主要所有者了
少赚还是多赚,老板自己看着办就行了。
-----------------------------------------------------------------------
clusterip到光、电、半导体的链路是怎样的?
clusterip把流量分发给pod
pod把任务交给容器
容器里面的进程找操作系统
说,帮我弄个这,帮我干个那
去找cpu干活
cpu拿到各种0和1
一顿操作
通过操作系统和主板上的半导体材料
和本机的各个硬件交互
通过网络和本机之外的资源交互
cpu说,跟硬件打交道的活
就交给cpu吧
应用层等消息就行。
这就实现了从clusterip到光通信、电路板、半导体材料的链路
然后再从物理层响应至应用层
实现服务的可用性。