Kubernetes kubelet
文章平均质量分 81
k8sssssssssssssssssssssssssssss
富士康质检员张全蛋
人生实难,唯有自渡。只有接受了真实现的现状和真实的自己,调整好心态,才能脚踏实地的活着,然后去发现角落处的那些惊喜和美好,去相信一切苦难困境都会过去!“即使身处阴沟,也要记得仰望星空”。
展开
-
Kubelet 核心指标监控
就其本质而言,它是在操作系统本身中作为服务运行的代理,与集群中作为 Kubernetes 实体运行的其他组件非常不同。为每个集群节点发现一个目标,其地址默认为 Kubelet 的 HTTP 端口,因此您仍然可以依赖此 Prometheus 角色从您的 Prometheus 实例中抓取 Kubelet 指标。检查 Kubelet Pod 工作器持续时间指标的百分位数也是值得的,这样您将更好地了解不同操作在所有节点上的执行情况。现在,您将看到 Prometheus 实例中可用的 Kubelet 指标。原创 2024-09-20 14:29:04 · 806 阅读 · 0 评论 -
kubelet 运行机制、功能 全面分析
如果发现本地的 Pod 被修改,则 Kubelet 会做出相应的修改,比如删除 Pod 中某个容器时,则通过 Docker Client 删除该容器。如果发现删除本节点的 Pod,则删除相应的 Pod,并通过 Docker Client 删除 Pod 中的容器。每个 Kubelet 进程会在 API Server 上注册所在Node节点的信息,定期向 Master 节点汇报该节点的资源使用情况,并通过 cAdvisor 监控节点和容器的资源。Pause 容器用于接管 Pod 中所有其他容器的网络。原创 2024-09-19 11:23:40 · 773 阅读 · 0 评论 -
为什么kubectl top命令查看节点内存使用超过100%?
实际节点内存利用率 = 节点已使用量 / 节点内存总量 = 2413824Ki / 4030180Ki = 59.9%节点内存使用率 = 节点已使用量 / 节点可分配 = 2413824Ki / 2213604Ki = 109%是调用kubelet的metrics API来获取数据的,因此。看到的是节点上已使用的资源总和除以可分配的所有资源。从界面上看节点内存使用率并不是很高,但使用。查看节点内存使用率已超过100%。例如,某节点的参数可通过。原创 2024-09-13 17:30:01 · 994 阅读 · 0 评论 -
Kubernetes 为pod指定DNS
所以说当创建pod的时候,并没有指定使用的是哪个DNS服务器,pod里面指定的是clusterfirst,优先使用集群里面的dns,kubelet知道既然使用集群里面的dns,那么集群里面的dns就是clusterdns 10.96.0.10。这里有dnsPolicy,设置为ClusterFirst ,表示优先使用集群里面的DNS服务器,那么集群里面的DNS服务器是谁呢?那么创建pod的时候可不可以去修改它所使用的dns呢?这样创建的pod不再使用集群里面的dns了,而是使用指定的dns,原创 2024-07-09 20:10:51 · 1617 阅读 · 0 评论 -
Kubelet 认证
然后apiserver访问kubelet,检测这个用户与组的权限。,所有通过认证的请求(包括通过认证的匿名请求)有权限访问kubelet所有的API。这显然是不合理的,所以我们需要像apiserver那样对不同的请求赋予不同的权限。如果要拒绝将匿名请求认证为以上的用户与组,配置kubelet的如下启动参数,那么匿名请求就会认证失败。,且还要提供一定的认证与授权机制,防止任何知道kubelet端口的人都能访问它的API。kubelet与apiserver的API不一样,当访问kubelet的API时,原创 2024-07-09 14:07:59 · 2129 阅读 · 0 评论 -
kubectl top用法
kubectl top命令是Kubernetes的一个子命令,用于查看集群中各个资源对象的CPU和内存使用情况。通过kubectl top命令,我们可以实时监控集群中各个Pod、Node资源对象的资源消耗情况,从而进行性能调优和资源管理。原创 2024-04-30 15:28:30 · 1201 阅读 · 0 评论 -
Kubernetes 弃用Docker后 Kubelet切换到Containerd
如果你使用了云服务商提供的托管 Kubernetes 服务,那你不用担心,像 GKE、AKS 等云服务商都已经在新版集群中把默认的运行时切换到 containerd。Kubernetes 从 v1.20 开始弃用 Docker,并推荐用户切换到基于容器运行时接口(CRI)的容器引擎,如 containerd、cri-o 等。可以发现,容器运行时已经切换到了 containerd,其版本为 1.4.3。那对于那些自管的集群,又如何把容器运行时从 Docker 切换到 Containerd 呢?原创 2024-04-30 10:27:31 · 1456 阅读 · 2 评论 -
Kubelet containerd 管理命令 ctr常用操作
导入可能会出现类似于 ctr: content digest sha256:xxxxxx not found 的错误,要解决这个办法需要 pull 所有平台镜像。--all-platforms:所有平台(amd64 、arm、386 、ppc64le 等),不加的话下载当前平台架构。把已下载的容器镜像挂载至当前文件系统,是为了方便查看镜像中包含的内容。同时导出可以使用--platform导出其它平台的(例如arm)--all-platforms为导出所有平台。-q 只打印镜像名称。原创 2024-04-30 09:58:12 · 1531 阅读 · 0 评论 -
Kubeconfig 切换上下文
【代码】Kubeconfig 切换上下文。原创 2022-10-28 15:29:01 · 4537 阅读 · 0 评论 -
Kubernetes 聚焦Kubelet职责
kubelet会去watchapiservre,apiserver那边有pod创建出来了,并且和这个节点相关,这个节点上的kubelet就会去工作)它首先要知道节点上要启动哪些pod,这就涉及到如何获取pod清单,kubelet有几种方式去获取pod清单,第一种就是文件的方式,也就是staticpod,扫描到目录下有pod清单文件,就将这些pod启动起来。和节点管理相关更加重要的是pod的管理,因为节点的注册管理是一次性的,然后有kublet不断的上报状态,更重要的是应用的管理,也即是pod。...原创 2022-07-23 11:28:56 · 418 阅读 · 0 评论 -
Kubernetes Kubelet管理pod核心流程
然后针对每一个pod,它就会去执行syncpod的操作,syncpod里面最重要的行为就是computepodactions,也就是针对这个pod采取什么样的行为,它会去比对当前节点上面的已经在运行的容器进程,然后去判断说,如果pod是新的我就create,如果pod是已经存在的,比如说是delete事件,那么我就应该去删除,如果是一个更新事件,那么我就要去判断运行的容器进程和你当前的pod是不是匹配的,比如它的哈希值变的话,那么我就要重建,这就是computepodactions所做的事情。.......原创 2022-07-23 10:49:18 · 650 阅读 · 0 评论 -
Kubernetes Kubelet Pod 启动流程
CheckAdmitkubelet在syncpod也就是做pod同步的时候,首先也会去做准入,比如它要去启动pod,如果节点资源不够,你非要将nodename设置为该节点,因为和节点产生绑定关系,那么就需要启动这个容器了,启动的时候我要去check一下,也需要去做准入的,要去看你的cpu的需求满足不满足,如果不满足就直接报错了,outofcpu的error,写回到这个pod状态里面。你的容器进程可靠吗?在容器启动之前,网络就需要就绪,网络是要在容器之前就绪的,这就需要额外的容器进程先启动起来。...原创 2022-07-25 11:44:46 · 2462 阅读 · 0 评论 -
Kubelet CRI 容器运行时 Containerd
如果是通过kubelet去调用docker的话,这个请求是在kubelet的cri接口调用docker-shim,docker-shim再连接到docker-daemon,docker-daemon里面红圈的这部分才是有用的,也就是和image相关的操作,以及正真去去调用containerd的这部分操作是有用的,上面存储网络,已经docker提供的cli这些都是不需要的,那么这些都是冗余的。不再使用docker自身的daemon了,但是可以用你docker自身所带的containerd的。...原创 2022-07-26 06:02:56 · 1244 阅读 · 0 评论 -
Kubernetes kubelet 硬核知识 架构
controller-manager包含了一组控制器,它是整个集群的大脑,每个控制器会关注自己所关注的对象,这些控制器里面都会有一个固定的模式,每个控制器都会通过listwatcher,去watch它所关注的对象,当这些对象发生变化以后,以事件通知的形式,告知controller,controller会注册这些事件的回调函数,并且将这些事件放在一个队列里面,同时会去启动一堆worker线程,来从队列里面取出这些对象,并且进行相关的处理。......原创 2022-07-23 10:13:50 · 514 阅读 · 0 评论 -
Kubernetes kubelet 状态上报/节点资源的管理
状态如何上报的,在早期kubelet的版本里面,通常健康状况和资源使用情况是一起上报的,那么每次上报第一要确保时效性,因为你周期太短的话,节点坏了,APIserver看你还不知道,那么就需要保持时效性,汇报的频度就比较快,汇报频度快,每次都带着详细信息,那么就意味着数据传输量比较大,节点层面信息量不一定大,但是集群很大的时候,那么apiserver承受的并发压力还是不小的。这里面定义了holderidentity是谁,也就是lease是谁持有的,然后租约是多久40s,renew是多久去更新它的。......原创 2022-08-21 10:46:23 · 1811 阅读 · 0 评论 -
生产环境 Kubernetes 中出现了很多 Evicted Pod,我该怎么办呢?
由于在之前的公司中对于稳定性的高度重视,线上节点并未开启驱逐实例的功能,因此也不会存在 Evicted 状态的实例,当节点资源严重不足时会有告警人工介入处理,以及还会有二次调度、故障自愈等一些辅助处理措施。本次针对 Evicted 相关实例的分析,发现 k8s 与操作系统之间存在了很多联系,如果要彻底搞清楚某些机制需要对操作系统的一些原理有一定的了解。转载 2022-08-21 10:46:07 · 1627 阅读 · 0 评论 -
Kubernetes 节点异常检测
我们需要通过某种机制来检查硬件的问题,基础服务的问题,比如NTP,社区提供了一个机制,它提供了node-problem-detector组件,它是一个demonset,在每个节点上面运行守护进程,这个守护进程就会对节点去做健康的诊断,它发现问题之后,就要以某种机制上报给kubernetes。这个组件在生产化集群里面它是一个非常必要的组件,可以去扩展你任何想要做的监控,当出现问题的时候,你去更新节点的信息,比如condition或者发送event来通知说这个节点出现了问题。内核问题∶内核死锁,文件系统损坏;.原创 2022-08-27 09:55:23 · 1015 阅读 · 0 评论 -
Kubernetes Kubelet 线程泄漏
继续分析历史日志,发现这个pod是 ks-controller-manager 残留的历史文件。livenessProbe/readinessProbe 健康检查最佳实践。查看日志/var/log/messages发现有孤儿pod。巡检node上大量使用线程的pod。巡检node上大量使用线程的pod。20211102 操作记录。后续巡检需要用到的命令。查询对应的pod命令。原创 2022-08-19 11:11:23 · 816 阅读 · 0 评论 -
记一次k8s集群节点镜像存储容量报警问题
imagefs是可选的。方式查看每个文件夹大小,发现docker目录下containers目录占用空间巨大,进去看原来是每个运行的容器存放日志的目录,我们找出占用空间最大的日志目录,发现容器日志特别的大。我们开始重视起来,开始检视节点上工作的容器,发现在日志爆炸的节点上运行了定时任务,开发人员将定时任务的日志输出到控制台,于是我们回到节点docker的工作目录,运维的同事报给我们之后,我们首先想到的是节点镜像过多,于是我们提供一个命令用于清理当前节点上无用的、报错的、镜像和docker资源文件。...转载 2022-07-23 11:44:31 · 863 阅读 · 0 评论 -
Kubelet --cgroup-driver=systemd
上面可以看到cgroup是通过一系列的文件来管控所有的资源分配的,包括创建了一个cgroup,同时将一个cgroup和这个进程进行关联,也就是将进程号echo到那个procs文件里面,同时修改cpu的quota来限制其使用的资源,这一整套都是cgroup的文件系统,cgroup本身可以有不同的driver。当操作系统使用systemd作为init system时,初始化进程生成一个根cgroup目录结构并作为cgroup管理器。systemd与cgroup紧密结合,并且为每个systemd unit分配cg原创 2022-06-16 21:48:46 · 3250 阅读 · 0 评论 -
Kubernetes Kubeadm Kubelet 证书自动续签
Kubelet 证书自动续签K8s证书一般分为两套:K8s组件(apiserver)和Etcd假如按角色来分,证书分为管理节点和工作节点。• 管理节点:如果是kubeadm部署则自动生成,如果是二进制部署一般由cfssl或者openssl生成。• 工作节点:工作节点主要是指kubelet连接apiserver所需的客户端证书,这个证书由controller-manager组件自动颁发,默认是一年,如果到期,kubelet将无法使用过期的证书连接apiserver,从而导致无法正常工作,日志会原创 2021-02-25 10:54:23 · 4595 阅读 · 3 评论 -
Kubelet 启动异常排查
服务器启动异常排查的方法故障一这种kubelet启动失败的排查方法和所有systemd管理的服务排查方法相同,从检查服务状态和日志开始: 检查kubelet服务状态: systemctl status kubelet 显示输出:● kubelet.service - kubelet: The Kubernetes Node Agent Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendo...原创 2022-04-15 10:36:39 · 11122 阅读 · 0 评论 -
Kubelet Bootstrap 机制 APIServer基于引导token认证
众所周知 TLS 的作用就是对通讯加密,防止中间人窃听;同时如果证书不信任的话根本就无法与 apiserver建立连接,更不用提有没有权限向 apiserver 请求指定内容。在开启了 TLS 的集群中,每当与集群交互的时候少不了的是身份认证,使用 kubeconfig(即证书) 和 token 两种认证方式是最简单也最通用的认证方式。当集群开启了 TLS 认证后,每个节点的 kubelet 组件都要使用由 apiserver 使用的 CA 签发的有效证书才能与 apiserver 通讯;此时如果节.原创 2022-04-07 20:08:31 · 2913 阅读 · 2 评论 -
Kubelet 运行机制分析 节点管理
kubernetes 集群中,在每个 Node 节点(又称 Minion )上都会启动 kubelet 服务进程。该进程用于处理 Master 节点下发到本节点的任务,管理 Pod及Pod 中的容器。每个kubelet 进程会在 API Server 上注册节点自身信息,定期向 Master 节点汇报节点资源的使用情况,并通过cAdvisor 监控容器和节点资源。节点管理 节点通过设置 kubelet 启动参数 “--rgister-node ”,来决定是否向 API Server..原创 2022-03-17 17:38:07 · 1092 阅读 · 0 评论 -
Kubelet 运行机制分析 容器健康检查
容器健康检查 Pod 通过两类探针来检查容器的健康状态。一个是 LivenessProbe 探针,用于判断容器是否健康,告诉 kubelet 一个容器什么时候处于不健康的状态。如果 LivenessProbe 探针探测到容器不健康,则 kubelet 将删除该容器,并根据容器的重启策略做相应的处理。如果一个容器不包含LivenessProbe 探针,那么 kubelet 认为该容器的 LivenessProbe 探针返回的值永远是“ Success ”。另外一类是 ReadinessProb转载 2022-03-26 14:14:37 · 820 阅读 · 0 评论 -
Kubernetes 核心组件 kubelet
kubelet · Kubernetes指南https://feisky.gitbooks.io/kubernetes/content/components/kubelet.htmlKubelet每个Node节点上都运行一个 Kubelet 服务进程 默认监听 10250 端口,接收并执行 Master 发来的指令,管理 Pod 及 Pod 中的容器。 每个 Kubelet 进程会在 API Server 上注册所在Node节点的信息,定期向 Master 节点汇报该节点的资源使用情况。 通.转载 2022-02-17 20:41:39 · 2965 阅读 · 0 评论 -
Kubelet 运行机制分析 Pod 管理
kubelet 通过以下几种方式获取自身 Node 上所要运行的 Pod 清单。 (1)文件: kubelet 启动参数 “一config ”指定的配置文件目录下的文件(默认目录为“ etc/ kubernetes manifests/)。通过 file-check-frequency 设置检查该文件目录的时间间,默认为 20s。staticPodPath: /etc/kubernetes/manifests(2)HTTP 端点 CURL ):通过“一manifest-url ”.转载 2022-03-20 12:41:51 · 678 阅读 · 0 评论 -
Kubelet 工作节点控制平面组件简介
kubelet kubelet 是运行在每个节点上的负责启动容器的重要的守护进程。在启动时,Kubelet进程加载配置参数,向API Server 处创建一个Node 对象来注册自身的节点信息,例如操作系统、Kernel 版本、IP 地址、总容量(Capacity)和可供分配的容量(Allocatable Capacity)等。然后kubelet 须定时(默认值是每10s 通过NodeStatusUpdateFrequency 设置参数)向API Server 汇报自身情况,例如磁盘空间是否用满、转载 2022-02-07 21:39:17 · 1159 阅读 · 0 评论 -
Kubelet 状态上报 节点资源管理 驱逐
节点资源管理 计算节点除CPU、内存和存储等硬件相关资源外,还有操作系统资源,例如进程上限、磁盘I/O 等。在Kubernetes 集群中,同一节点上会运行多个不同应用的容器进程。不可避免地,这些进程会共享节点资源,并可能发生资源竞争。合理的节点资源管理能提高节点资源利用率,避免相邻进程彼此干扰,保证系统服务正常运行。Kubernetes 计算节点资源管理方案已渐趋成熟:具体体现在状态汇报、资源预留、防止节点资源耗尽的防御机制驱逐及容器和系统资源的配置。 状态上报 kube..转载 2022-02-21 11:42:45 · 538 阅读 · 0 评论 -
在 Kubernetes 集群中使用 NodeLocal DNSCache
之前在解决 CoreDNS 的5秒超时问题的时候,除了通过dnsConfig去强制使用 tcp 方式解析之外,我们提到过使用NodeLocal DNSCache来解决这个问题。NodeLocal DNSCache通过在集群节点上运行一个 DaemonSet 来提高 clusterDNS 性能和可靠性。处于ClusterFirst的 DNS 模式下的 Pod 可以连接到kube-dns的 serviceIP 进行 DNS 查询。通过kube-proxy组件添加的iptables规则将...转载 2022-02-17 20:16:17 · 1753 阅读 · 0 评论 -
Kubelet clusterDNS参数
Kubelet config file -- > clusterDNSclusterDNS:- "10.32.0.10"The above is a flag passed to the kubelet file, i dont know what it refers to clsuter DNS ? Is it refers to VPC CIDR or any subnet CIDR ?1 AnswerActiveOldestScoreIt is the address原创 2022-02-13 15:15:55 · 1596 阅读 · 0 评论 -
Kubelet 各个端口作用 10250
--port int32Default: 10250 The port for the kubelet to serve on. (DEPRECATED: This parameter should be set via the config file specified by the kubelet's--configflag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/...转载 2022-02-10 14:15:10 · 36341 阅读 · 0 评论 -
Kubelet 如何管理 Kubernetes 集群状态以实现高可用性
Whether you’ve been using Kubernetes for a while, or you’re still testing it out, it’s more than likely that you’ve come across Kubernetes events before. But what exactly are they and is there a way to manage a Kubernetes Cluster State for high availabi...转载 2022-02-07 22:16:12 · 452 阅读 · 0 评论 -
Kubernetes Kubelet 状态更新机制 node-status-update-frequency
How to Manage a Kubernetes Cluster State for High Availabilityhttps://blog.hackajob.co/how-to-manage-a-kubernetes-cluster-state-for-high-availability/https://medium.com/tailwinds-navigator/kubernetes-tip-how-to-make-kubernetes-react-faster-when-nodes-fail-原创 2022-01-23 15:42:20 · 2727 阅读 · 0 评论 -
Kubernetes Kubelet 常见参数解析
(1) --node-status-update-frequency duration 默认值:10skubelet 自身会定期更新状态到 apiserver,通过参数--node-status-update-frequency指定上报频率,默认是 10s 上报一次。指定 kubelet 向主控节点汇报节点状态的时间间隔。注意:更改此常量时请务必谨慎, 它必须与节点控制器中的nodeMonitorGracePeriod一起使用。 已弃用:应在--config所给的配置文件中进行设置。 (进...原创 2022-01-23 15:06:31 · 653 阅读 · 0 评论 -
kubelet 保护节点不被容器抢占所有资源 垃圾回收机制的设计与实现 image-gc-high-threshold
kubelet保护节点不被容器抢占所有资源:如果镜像占用磁盘空间的比例超过高水位(默认值为90%,可以通过参数ImageGCHighThresholdPercent 进行配置),kubelet 就会清理不用的镜像。 当节点CPU、Memory 或磁盘少于某特定值或者比例(由参数EvictionHard 配置)时,kubelet 就会驱逐低优先级的Pod(例如BestEffort 的Pod)。通过这些操作,保障节点上已有的Pod 能够在保证的QoS(Quality of Service)下继续正常运行。转载 2022-02-14 14:44:34 · 1899 阅读 · 0 评论 -
Kubernetes Kubelet –max-pods 限制节点启动的Pod数量
Node节点默认的Pod数量Kubernetes Node节点每个默认允许最多创建110个Pod,有时可能会由于系统硬件的问题,从而需要控制Node节点的Pod的运行数量。即:需要调整Node节点的最大可运行Pod数量。一般来说,我们只需要在kubelet启动命令中增加–max-pods参数,然后,重启kubelet 服务,就生效。重启kubelet,不影响现有运行中的容器,不会造成容器重启。 ...原创 2021-12-16 23:39:01 · 4837 阅读 · 0 评论 -
Kubernetes Pod Eviction 简介
谈谈K8S Pod Eviction 机制_YP小站的博客-CSDN博客Pod Eviction 简介Pod Eviction是k8s一个特色功能,它在某些场景下应用,如节点NotReady、Node节点资源不足,把pod驱逐至其它Node节点。从发起模块...https://blog.csdn.net/qq_24794401/article/details/106626042Controller Manager 控制器是Kubernetes 集群的自动化管理控制中心,里面包含30 多个控制器,..转载 2022-01-14 12:04:54 · 1054 阅读 · 0 评论