首页 > 其他分享 >k8s名词巩固

k8s名词巩固

时间:2024-03-05 09:34:43浏览次数:27  
标签:巩固 名词 kubelet API pod Pod k8s 节点 kube

Deployment

Deployment控制器通过ReplicaSet来创建并管理Pod,同时具有版本升降级的功能。
ReplicaSet相对于ReplicationController来言拥有更先进的标签选择器,ReplicationController只支持旧式的标签选择器。

DaemonSet

DaemonSet可以确保每个工作节点上最多运行一个应用副本,这个应用副本类似于Linux操作系统中的daemon进程,这也正是DaemonSet名称的由来。
DaemonSet通常用于管理那些执行系统级的应用,比如:
每个工作节点运行一个存储服务,供该工作节点上其他应用使用;
每个工作节点运行一个日志收集服务,用于收集该节点上的运行日志;
每个工作节点运行一个监控指标收集服务,用于提供该节点的监控信息;

kube-controller-manager

kube-controller-manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等。

kubelet

kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理。

每个计算节点中都包含一个 kubelet,这是一个与Control Plane通信的微型应用。kublet 可确保容器在Pod内运行。
当Control Plane需要在节点中执行某个操作时,kubelet 就会执行该操作。

kube-proxy

kube-proxy负责为Service提供cluster内部的服务发现和负载均衡。

每个计算节点中还包含 kube-proxy,这是一个用于优化 Kubernetes 网络服务的网络代理。
kube-proxy 负责处理集群内部或外部的网络通信(靠操作系统的数据包过滤层,或者自行转发流量)。

调度过程

待调度Pod被提交到 apiServer -> 更新到 Etcd -> 调度器 Watch Etcd 感知到有需要调度的Pod(Informer) -> 取出待调度Pod的信息 -> 
Predicates: 挑选出可以运行该Pod的所有Node -> Priorities:给所有Node打分 -> 将Pod绑定到得分最高的Node上 -> 
将Pod信息更新回 Etcd -> node的 kubelet 感知到 Etcd 中有自己node需要拉起的Pod -> 取出该Pod信息,做基本的二次检测(端口,资源等) -> 在node 上拉起该pod

创建流程

1、客户端提交创建请求,通过API Server的Restful API,或者用kubectl命令行工具。支持的数据类型包括JSON和YAML。
2、API Server处理用户请求,存储Pod数据到etcd。
3、kube-scheduler通过API Server查看未绑定的Pod。尝试为Pod分配主机。
4、kube-scheduler通过预选算法过滤掉不符合要求的主机。比如Pod指定了所需要的资源量,那么可用资源比Pod需要的资源量少的主机会被过滤掉,端口被占用的也被过滤掉;
5、kube-scheduler通过优选算法给主机打分,对预选筛选出的符合要求的主机进行打分,在主机打分阶段,调度器会考虑一些整体优化策略,比如把一个deployment类型的pod分布到不同的主机上,
   使得资源均衡;或者将两个亲和的服务分配到同一个主机上。
6、选择主机:选择打分最高的主机,进行binding(调用apiserver将pod和node绑定)操作,结果存储到etcd中。
7、kubelet监听Api Server,根据调度结果执行Pod创建操作:绑定成功后,scheduler会调用API Server的API在etcd中创建一个bound pod对象,描述在一个工作节点上绑定运行的所有pod信息。
   运行在每个工作节点上的kubelet也会定期与etcd同步bound pod信息,一旦发现应该在该工作节点上运行的bound pod对象没有更新,则调用Docker API创建并启动pod内的容器。
8、kubelet调用CNI(Docker 运行或通过 rkt)运行 Pod 的容器。并周期性的对容器生命周期进行探测。(健康检查readness-隔离、liveness-重启)

标签:巩固,名词,kubelet,API,pod,Pod,k8s,节点,kube
From: https://www.cnblogs.com/qcy-blog/p/18053282

相关文章

  • K8S集群调度
    K8S集群调度K8S的watch机制Kubernetes是通过List-Watch的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦。用户是通过kubectl根据配置文件,向APIServer发送命令,在Node节点上面建立Pod和Container。APIServer经过API调用,权限控制,调用资源......
  • 说说对正则表达式的零宽断言的名词翻译理解
    我用一队学生里面找人的例子。一条队伍里面有多个叫小明的同学。如何找到自己想要的那个小明呢?可以根据小明前后同学的差别来区分,比如找后面跟着小红的那个小明。这就是零宽断言。类似的你可以说其他三种:后面跟着不是小红,前面是小红,前面不是小红.这里面有个疑惑就是名......
  • k8s有关问题
    1.pod报错:unabletoensurepodcontainerexists:failedtocreatecontainerfor[kubepodsburstablepod7e45f702-c697-4b39-b34b-db8792445622]:mkdir/sys/fs/cgroup/memory/kubepods/burstable/pod7e45f702-c697-4b39-b34b-db8792445622:cannotallocatememory解决:......
  • 在K8S中,如何在指定节点上部署Pod呢?
    在Kubernetes(K8s)中,要在指定节点上部署Pod,可以使用两种方法:方法一:使用nodeName字段明确指定在Pod的YAML定义中,可以直接在.spec.nodeName字段指定目标节点的名称。这样,Pod将会被调度到指定的节点上。示例YAML配置:apiVersion:v1kind:Podmetadata:name:my-pod-on-specif......
  • 在K8S中,Resource Quotas是什么?如何做资源管理的?
    在Kubernetes(K8s)中,ResourceQuotas是一种集群管理员用来限制Namespace内资源消耗总量的机制。这种机制允许管理员对特定Namespace定义资源使用上限,确保Namespace内的用户或团队不会过度消耗集群资源,进而影响其他Namespace或整个集群的稳定性。ResourceQuotas具体是如何工......
  • 基因序列中的一些名词区别
      1.基因分为编码区和非编码区,编码区包含外显子和内含子,一般非编码区具有基因表达的调控功能,如启动子在非编码区。编码区则转录为mRNA并最终由外显子部分翻译成多肽(蛋白质)。2. 内含子(intron)是真核生物细胞DNA中的间插序列。这些序列被转录在前体RNA中,经过剪接被去除,最终不存......
  • 基于现有k8S 集群 CA 证书更新100年
    #先提前编译kubeadm到100年1、先备份conf文件和证书文件cp-rp /etc/kubernetes//etc/kubernetes.bak2、生成新的crt证书,默认在/etc/kubernetes/pki路径fori in cafront-proxy-caapiserver-kubelet-clientfront-proxy-clientapiserver;dokubeadminitphase......
  • 在K8S中,pending状态一般由什么原因导致的?
    在Kubernetes(K8S)中,资源或Pod处于Pending状态可能由多种原因引起。以下是一些常见的原因和详细解释:资源不足:当集群中的资源不足以满足Pod或服务的需求时,它们可能会被置于Pending状态。这通常涉及到CPU、内存、存储或其他资源。解决方案是检查集群的资源使用情况,并考虑增加节点......
  • 在K8S中,有哪几种控制器类型?
    在Kubernetes(K8s)中,控制器(Controller)是用来确保实际集群状态与所需状态保持一致的关键组件。它们监视并自动调整系统以达到预期状态,以下是Kubernetes中主要的几种控制器类型:ReplicationController(RC):在早期版本的Kubernetes中用于保证指定数量的Pod副本始终运行。后来......
  • 在K8S中,如何把某个worker节点设置为不可调度?
    在Kubernetes中,如果你想要把一个worker节点设置为不可调度,意味着你不想让Kubernetes调度器在这个节点上调度新的Pod。这通常用于维护或升级节点,或者当节点遇到硬件故障或性能问题时。要将某个worker节点设置为不可调度,你可以使用以下方法之一:方法1:使用kubectlcordon命令kubect......