首页 > 其他分享 >k8s各组件作用和pod通信原理

k8s各组件作用和pod通信原理

时间:2023-04-13 15:55:23浏览次数:32  
标签:node 控制器 节点 manager 组件 pod k8s Pod

https://www.cnblogs.com/cyh00001/p/16488539.html
kube-apiserver

kube-apiserver负责和etcd交互, 提供了k8s各类资源对象的增删改查及watch等HTTP Rest接口,这些对象包括pods、services、replication controllers等,API Server 为REST操作提供服务,
并为集群的共享状态提供前端,所有其他组件都通过该前端进行交互。同时也是外部的唯一入口

kube-scheduler
kubernetes调度器是一个控制面进程,负责将Pods指派到节点上。通过调度算法为待调度Pod列表的每个Pod从可用Node列表中选择一个最适合的Node,并将信息写入etcd中。node节点上的kubelet通过API Server监听到kubernetes Scheduler 产生的Pod绑定信息,然后获取对应的Pod清单,下载Image,并启动容器。

策略:

LeastRequestedPriority:优先从备选节点列表中选择资源消耗最小的节点(CPU+内存)
CalculateNodeLabelPriority:优先选择含有指定Label的节点
BalanceResourceAllocation:优先从备选节点列表中选择各项资源使用率最均衡的节点

kube-controller-manager

kube-controller-manager:Controller Manager还包括一些子控制器(副本控制器、节点控制器、命名空间控制器和服务账号控制器等),控制器作为集群内部的管理控制中心,负责集群内部的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群中的pod副本始终处于预期的工作状态。

controller-manager控制器每间隔5秒钟检查一次节点的状态。
如果controller-manager控制器没有收到自节点的心跳,则将该node节点标记为不可达。
controller-manager将在标记为无法访问之前等待40秒。
如果该node节点被标记为无法访问后5分钟还没有恢复,controller-manager会删除当前node节点的所有pod并在其它可用节点重建这些pod。
pod高可用机制:

node monitor period:节点监视周期,5s
node monitor grace period:节点监视器宽限期,40s
pod eviction timeout:pod驱逐超时时间,5m


Kubelet
kubelet是运行在每个worker节点的代理组件,它会监视已分配给节点的pod,具体功能如下:

向master汇报node节点的状态信息
接受指令并在Pod中创建docker容器
准备Pod所需的数据卷
返回pod的运行状态
在node节点执行容器健康检查




coredns

pod向coredns提供服务名,coredns负责进行域名解析,解析为ip返回pod,pod在用ip去和msater交互。


tiger:
服务名是固定的,但是cluster ip 是不断变化的。如果跨namespace 访问,则可以直接通过curl servicename.namesapce这样访问
单个node内的pod通信机制:
主机网卡etho0,docker0网桥,pod内虚拟网卡veth0的作用:

主机网卡eth0是用来跨node节点pod通信用的。
docker0网桥类似一个虚拟交换机,她是支持该节点上不同pod之间进行ip寻址和通讯的设备。
veth0则是pod1的虚拟网卡,是支持该pod内容器互通和对外访问的虚拟设备。docker0和veth0都是linux支持和创建的虚拟网络设备。
比如一个pod内有三个容器,则这三个容器就共享一个虚拟网卡veth0.内部的这些容器可以通过localhost访问,但他们不能使用同一个端口,
否则会有网络冲突。

每一个pod内还有pause容器,这个pause容器的唯一目的就是为pod建立共享的veth0的网络接口






 

 

标签:node,控制器,节点,manager,组件,pod,k8s,Pod
From: https://www.cnblogs.com/tigergaonotes/p/17315106.html

相关文章

  • 65、K8S-部署管理-Helm基础知识、安装、入门示例
    Kubernetes学习目录1、基础知识1.1、需求在kubernetes平台上,我们在部署各种各样的应用服务的时候,可以基于手工或者自动的方式对各种资源对象实现伸缩操作,尤其是对于有状态的应用,我们可以结合持久性存储机制实现更大场景的伸缩动作。但是,无论我们怎么操作各种资源对象,问......
  • Ubuntu 18.04 LTS 环境下 双差定位 hypoDD 安装及配置
    hypoDD1$tar-xvfHYPODD_1.3.tar.gz2$mvHYPODD~/opt/HYPODD3$cd~/opt/HYPODD/src4#修改所有目录下Makefile,修改将FC=f775$make6$vi~/.bashrc exportPATH=/home/wangjq/opt/HYPODD/src/hypoDD:${PATH} exportPATH=/home/wangjq/opt/HYPODD/s......
  • 深入了解Kubernetes(K8s):现代化容器编排和管理平台
    Kubernetes(简称K8s)是一种开源的容器编排和管理平台,用于自动化应用程序在容器化环境中的部署、扩展、管理和运维。Kubernetes最初由Google开发,并于2014年发布为开源项目,现在由CloudNativeComputingFoundation(CNCF)维护和管理。Kubernetes的设计目标是简化容器应用的部署、管理和......
  • 批量上传GPT知识库,前端elementui的upload上传组件,后端Golang的上传接口实现
    为了实现批量上传GPT的知识库并且功能,那么这个上传组件就必不可少,需要能把文档上传到服务器中。前端部分,我是采用的cdn引入的形式,引入的elmentui。该框架是有上传组件的,可以参考我的用法:action部分就是上传接口,其他三个是上传之前的处理,上传成功和失败后的回调函数......
  • 自己动手,通过源码找回 Ant-Design-Blaozr 中 Tree 组件的搜索筛选效果
    最近更新一个Blazorserver的项目,顺带把用到的Ant-Design-Blazor升级到了最新的0.14.4,结果发现之前在0.8.4版本中Tree组件的搜索显示效果变了,从仅显示找到的节点变成了在全部节点中高亮显示匹配的结果,为了节省用户沟通成本(就是懒得跟最终用户费口舌解释),于是自己动手把这个......
  • k8s 查看 deployment 管理的所有 pod 日志
    背景k8s可以使用Deployment生成并管理多个pod,如果需要查看某个多pod实例的应用日志,一个一个pod依次排查过去未免太麻烦,需要有一种更高效的方式。实现使用如下命令即可查看一个Deployment的所有pod日志:kubectllogsdeployment/deployment的名字一些可选的命令参......
  • k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装
    标签(空格分隔):kubernetes系列一:k8s1.27.x的概述1.1:k8s1.27.x更新Kubernetesv1.27正式发布,这是2023年的第一个版本!此版本包含60个增强功能。其中18个增强功能进入Alpha阶段,29个进入Beta阶段,13个进入Stable阶段。版本主题和标志Kubernetesv1.27:ChillVibes......
  • k8s 查看 deployment 管理的所有 pod 日志
    背景k8s可以使用Deployment生成并管理多个pod,如果需要查看某个多pod实例的应用日志,一个一个pod依次排查过去未免太麻烦,需要有一种更高效的方式。实现使用如下命令即可查看一个Deployment的所有pod日志:kubectllogsdeployment/deployment的名字一些可选的命令参......
  • RestSharp组件中止线程问题
      背景:下单流程里面,生成发货单是在独立线程池完成的,有些批发订单数据巨大,频繁拆包生成多个发货单排查:由于ES刷新是在一个独立的api里面,一开始怀疑是异步线程频繁请求api导致中断的SemaphoreSlim:对同时访问资源或资源池的线程数加以限制,结果:无效lock:顺序执行,使线程等待,结......
  • 如何解决 K8s 多租户集群的安全隔离难题?
    解决多租户集群的安全隔离问题对于企业上云而言至关重要。本文讨论了Kubernetes多租户集群的概念和常见的应用模式、企业内共享集群的业务场景以及Kubernetes现有的安全管理功能。什么是多租户集群首先,我们讨论一下“租户”是什么。租户的概念不仅是集群用户,还包括构成计算、网......