首页 > 其他分享 >K8S基本组件梳理

K8S基本组件梳理

时间:2024-10-03 16:33:26浏览次数:9  
标签:容器 节点 controller 组件 Pod K8S 梳理 pod

Master组件

apiserver:对资源对象进行curd操作,例如pod和server;将所有的状态储存到etcd中。

schedule:监控未调度的pod,根据pod的资源需求、资源可用性和其他约束,选择最合适的节点来运行pod。

controller-manage:监控集群的状态,实现集群的自愈和自动化管理。

​ Replication controller:确保指定个数的pod副本在集群上运行。

​ Node controller:监控集群中节点(Node)的状态,确保节点的健康状况。

​ Endpoints controller:为services对象维护和更新其关联的Pod列表。

​ Namespace controller:管理K8S的中的命名空间,包括监控和清理被删除的。

​ Service controller:管理和维护LoadBalancer类型服务的外部负载均衡器。

​ LoadBalancer是用于在多台服务器(或 Pod)之间分发网络流量的组件:

​ - 流量分发:将来自外部的请求均匀地分配到多个后端实例(如 Pod 或服务器),以避免某一实例负载过重,提高应用的可 用性和响应速度。

​ - 高可用性:当某些后端实例不可用时,LoadBalancer 可以自动将流量重定向到健康的实例,确保服务的连续性。

​ - 扩展性:通过负载均衡,系统可以动态添加或移除后端实例,以应对流量的变化,从而实现弹性伸缩。

​ ServiceAccount controller:为每个新创建的namespace自动创建默认的ServiceAccount对象,确保token被分配到这些 ServerAccount中。

Node组件

kube-proxy:维护节点上的网络规则,服务负载均衡,根据据服务的虚拟 IP 地址和端口,将流量分发到后端的 Pod 上,确保流量能够 均匀地分布在多个副本上。并根据这些变化动态更新自己的网络规则,确保流量始能够正确转发到当前有效的 Pod 。

kuberlet:是一个代理,他会根据主节点的指令,确保制定容器在节点的正确运行;他会监控容器的健康情况,向apiserver发送节点 的状态,apiserver接收到这些节点的状态信息之后,会将它们更新到etcd中;kubelet也通过apiserver监听Pod信息,从而 对Node机器上的Pod进行管理:如创建,更新,删除Pod。

容器运行时:每个工作节点需要一个容器运行时来运行和管理容器。

calico:提供容器网络和网络策略的解决方案,能实现容器和容器间的通信、流量控制和安全策略来增强器群的网络能力。
(通俗的讲就是给Pod和Service分配ip的)

其他组件

Etcd:是一个高可用的键值存储数据库,存储K8S的资源状态信息和网络信息,Etcd中的数据变更通过apiserver来进行。(基数选主,至少三个做高可用)

Coredns:是一个dns服务器,能够K8S Services提供dns记录(可以对Service名字进行解析,解析成Service的IP)

标签:容器,节点,controller,组件,Pod,K8S,梳理,pod
From: https://www.cnblogs.com/eilen6316/p/18445798

相关文章

  • 59_初识搜索引擎_搜索相关参数梳理以及bouncing results问题解决方案
    1、preference决定了哪些shard会被用来执行搜索操作_primary,_primary_first,_local,_only_node:xyz,_prefer_node:xyz,_shards:2,3bouncingresults问题,两个document排序,field值相同;不同的shard上,可能排序不同;每次请求轮询打到不同的replicashard上;每次页面上看到的搜索......
  • 工作-k8s问题处理篇
    前言:公司这边为集团,所以项目较多,我目前总负责的项目架构有十六个,其中还有海外项目,不过底下也有一定的细分,同事解决不了的问题会升级到我这,只k8s容器平台常用的就有三种,一种是技术中心部门研发的二开版,一种是国产XC化推广的xc容器平台,还有一种就是开源的-红帽公司研发的OpenShift(......
  • 10_shard&replica机制再次梳理以及单node环境中创建index图解
    1、shard&replica机制再次梳理2、图解单node环境下创建index是什么样子的1、shard&replica机制再次梳理(1)index包含多个shard(2)每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力(3)增减节点时,shard会自动在nodes中负载均衡(4)primaryshard和......
  • k8s设置默认sc
    编辑sc,修改如下注意 storageclass.kubernetes.io/is-default-class:"true"为设置默认scapiVersion:v1items:-allowVolumeExpansion:trueapiVersion:storage.k8s.io/v1kind:StorageClassmetadata:annotations:meta.helm.sh/release-name:nfs-c......
  • k8s cache.DeletedFinalStateUnknown
    针对已删除对象Obj,删除事件因与apiserver断连而丢失,DeletedFinalStateUnknown只会在relist时可能出现,缓存了已被删除对象,放入DeltaFIFO,删除本地缓存对象。relist场景1:watch超时时间内没有收到事件。2:watch指定的resourceVersion在etcd已不存在。3:apiserver主动与client-go断连,避......
  • ListTile组件的用法
    文章目录1.知识回顾2.使用方法3.示例代码我们在上一章回中介绍了扩展内容相关的知识,本章回中将介绍单选列表和复选列表.闲话休提,让我们一起TalkFlutter吧。1.知识回顾我们在本章回中将介绍单选和复选列表,它们是常用的组件,不只在移动平台中使用,在其它平......
  • Vue.js 组件开发
    Vue.js是一个渐进式的JavaScript框架,主要用于构建用户界面。它采用了组件化的开发方式,使得前端开发更加高效、灵活且易于维护。组件是Vue.js的核心概念之一,理解和掌握组件的开发,有助于我们高效地构建现代Web应用。本文将涵盖Vue.js的组件开发基础,提供实际操作案例,并通过丰富......
  • Qt项目中,在main.cpp中定义了一个自定义组件,但是在编译的时候报错`undefined reference
    1、问题描述我在测试Qt项目的main.cpp中编写了如下代码:classMyWidget1:publicQWidget{Q_OBJECT};//main程序入口argc命令行变量的数量argv命令行变量的数组intmain(intargc,char*argv[]){//应用程序对象,在Qt中应用程序对象有且仅有一个QAppl......
  • 如何解决k8s CNI 子网不够问题
    问题现象CNI状态CrashLookBackOff问题原因默认环境下k8s每个node的CNIsubnet子网是一个24位掩码的子网。当集群总结点数超过255个将导致CNI子网不足。我们有两种方式结局解决方案init集群指定kube-controller-manager参数apiVersion:kubeadm.k8s.io/v1bet......
  • Vue.js组件开发详解
    Vue.js组件开发详解Vue.js是一个用于构建用户界面的渐进式框架,其核心思想是通过数据驱动视图的变化,同时提供了一系列强大的工具来帮助开发者高效地开发复杂的单页应用。在Vue.js中,组件是构建复杂应用的基本单元,通过组件化开发,我们可以将应用拆分成可复用的、独立的模块,......