首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么``oom kill-disable`对` `kubectl create pod`无效,而对我自己系统中的` `docker run container `有效?

oom kill-disable是一种用于禁用Linux内核的OOM(Out of Memory)杀死机制的命令。当系统内存不足时,OOM机制会选择性地终止一些进程以释放内存资源,以防止系统崩溃。然而,有时候我们可能希望禁用OOM机制,以便更好地控制系统行为。

在这个问答中,提到了oom kill-disablekubectl create poddocker run container的影响。下面我将分别解释为什么oom kill-disable对这两种情况的影响不同。

  1. oom kill-disablekubectl create pod无效:
    • kubectl create pod是Kubernetes命令行工具,用于在Kubernetes集群中创建一个Pod对象。Pod是Kubernetes中最小的可部署单元,它可以包含一个或多个容器。
    • 当使用kubectl create pod创建Pod时,Pod会被调度到集群中的某个节点上,并由Kubernetes进行管理。在这种情况下,oom kill-disable命令对Pod本身并没有直接的影响。
    • Kubernetes会为每个Pod创建一个独立的命名空间,并为其分配一定的资源限制(如内存和CPU)。当Pod的资源使用超过限制时,Kubernetes会采取相应的措施,如重启Pod或将其调度到其他节点上。这些措施是由Kubernetes自身的调度和管理机制决定的,与oom kill-disable命令无关。
  • oom kill-disable对自己系统中的docker run container有效:
    • docker run container是Docker命令行工具,用于在Docker引擎中创建和运行一个容器。
    • 当使用docker run container创建容器时,容器会在宿主机上运行,并与宿主机共享资源,包括内存。
    • 在这种情况下,oom kill-disable命令可以禁用宿主机上的OOM机制,从而防止宿主机在内存不足时终止容器进程。这样可以确保容器的稳定性和可用性。
    • 然而,需要注意的是,禁用OOM机制可能会导致宿主机的内存资源被过度消耗,进而影响其他正在运行的进程和系统的整体性能。因此,在禁用OOM机制时,需要谨慎评估系统的资源使用情况和容器的资源需求。

综上所述,oom kill-disablekubectl create pod无效是因为Kubernetes具有自己的资源管理和调度机制,而oom kill-disable对自己系统中的docker run container有效是因为它可以禁用宿主机上的OOM机制,确保容器的稳定性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

047.集群管理-资源及配额管理

docker run命令,--cpu-share参数是一个相对权重值(RelativeWeight),这个相对权重值会决定Docker在资源竞争时分配给容器资源比例。...举例说明--cpu-shares参数在Docker含义:比如将两个容器CPU Requests分别设置为1和2,那么容器在docker run启动时对应--cpu-shares参数值分别为1024...docker run命令另外一个参数--cpu-period默认被设置为100000,表示Docker重新计量和分配CPU使用时间间隔为100000μs(100ms)。...因此容器Limits配置需要进行准确测试和评估。与内存Limits不同是,CPU在容器技术属于可压缩资源,因此CPULimits配置一般不会因为偶然超标使用而导致容器被系统杀。...Requests而不到Limits内存量,此时同一机器上另外一个Pod B之前只使用了远少于自己Requests值内存,此时程序压力增大,Pod B向系统申请总量不超过自己Requests值内存

1.4K30

Kubernetes中资源限制一些笔记整理

写在前面 今天和小伙伴们分享K8spod资源限制一些笔记 博文内存涉及pod通过request和limits实现资源申请和限制 理解不足小伙伴帮忙指正,生活加油 ^_^ 我们痛苦来源于“夸父追日...”一般“更好”追求,也来自于自己自卑与狂妄。...做资源限制,他会认为宿主机资源全是自己,会无休止使用,直到宿主机内存不足被OOM killer 直接杀了,为什么会被宿主机杀掉,容器本质即运行在宿主机上一个进程组。...但有些Pod可能担负着很重要职责,比其他Pod更重要,比如与数据存储相关、与登录相关、与查询余额相关,即使系统资源严重不足,也需要保障这些Pod存活。...内存请求和限制目的 通过为集群运行容器配置内存请求和限制,你可以有效利用集群节点上可用内存资源。通过将 Pod 内存请求保持在较低水平,你可以更好地安排 Pod 调度。

52031

kubernetes分析ExitCode

01 问题 最近总有开发小伙伴来找我,为什么容器总退出呢,在哪能看到原因。故写篇文章整理下docker退出状态码。...02 如何查看退出码 查看pod容器退出码 $ kubectl describe pod xxx Port: Host Port: <none...查看 $ docker ps --filter "status=exited" $ docker inspect --format='{{.State.ExitCode}}...Exit Code 137 此状态码一般是因为 pod 容器内存达到了它资源限制(resources.limits),一般是内存溢出(OOM),CPU达到限制只需要不分时间片给程序就可以。...cgroup 限制杀掉进程还是因为节点机器本身资源不够导致进程死掉,都可以从系统日志中找到记录( journalctl -k ) Exit Code 139 表明容器收到了SIGSEGV信号,无效内存引用

3.5K20

Kubernetes分析ExitCode

问题 最近总有开发小伙伴来找我,为什么容器总退出呢,在哪能看到原因。故写篇文章整理下docker退出状态码。...如何查看退出码 查看pod容器退出码 $ kubectl describe pod xxx Port: Host Port: ...查看 $ docker ps --filter "status=exited" $ docker inspect --format='{{.State.ExitCode}}...Exit Code 137 此状态码一般是因为 pod 容器内存达到了它资源限制(resources.limits),一般是内存溢出(OOM),CPU达到限制只需要不分时间片给程序就可以。...cgroup 限制杀掉进程还是因为节点机器本身资源不够导致进程死掉,都可以从系统日志中找到记录( journalctl -k ) Exit Code 139 表明容器收到了SIGSEGV信号,无效内存引用

4.9K10

k8s实践(六):Pod资源管理

环境说明: 主机名 操作系统版本 ip docker version kubelet version 配置 备注 master Centos 7.6.1810 172.27.9.131 Docker 18.09.6...我们创建一个pod时,可以指定容器CPU和内存资源请求量及资源限制量,它们并不在pod里定义,而是针对每个容器单独指定。pod资源请求量和限制量是它所包含所有容器请求量和限制量之和。...为什么需要LimitRange   为单个容器设置资源requests和limits很有必要性:1.提升QoS等级,防止在OOM时被首先kill;2.默认情况下Pod会以无限制CPU和内存运行,很有可能因故吞掉所在工作节点上所有可用计算资源...created LimitRange资源支持限制ContainerPod和PersistentVolumeClaim三种资源对象系统资源用量 4....Use kubectl run --generator=run-pod/v1 or kubectl create instead. deployment.apps/quota-test created

1.9K41

【云原生 | Kubernetes篇】Kubernetes基础入门(三)

=nginx --port=80 Deployment(部署) 在k8s,通过发布 Deployment,可以创建应用程序 (docker image) 实例 (docker container)...run也可以独立跑一个Pod## kubectl run --helpkubectl run nginx --image=nginx总结:kubectl create 资源 #创建任意资源kubectl...Service 下一组 Pod 通常由 LabelSelector (请参阅下面的说明为什么您可能想要一个 spec 不包含selector服务)来标记。...Service 匹配一组 Pod 是使用标签(Label)和选择器(Selector),它们是允许 Kubernetes 对象进行逻辑操作一种分组原语。...spec: #期望Pod实现功能(即在pod中部署) containers:#生成container,与dockercontainer是同一种 - name: nginx

1.8K91

KUbernets实践之pod

-h $ kubectl create namespace -h kubectl 如何管理集群资源 kubectl get po -v=7 使用 k8s 管理业务应用 为什么引入 pod 与容器引擎解耦...内部容器可以通过 localhost 通信,每个 Pod 都会启动 Infra 容器,然后 Pod 内部其他容器网络空间会共享该 Infra 容器网络空间(Docker 网络 container...资源) requests.memory 没有对应 docker 参数,仅作为 k8s 调度依据 limits: 容器能使用资源最大值 设置为 0 表示使用资源不做限制, 可无限使用 当 pod...注意:若内存使用超出限制,会引发系统 OOM 机制,因 CPU 是可压缩资源,不会引发 Pod 退出或重建 yaml 优化 apiVersion: v1 kind: Pod metadata:...Pod 概念 k8s 使用 yaml 格式定义资源文件,yaml Map 与 List 语法,与 json 做类比 通过 kubectl create | get | exec | logs |

38210

kubectl top 命令解析

这篇文章会介绍其数据链路和实现原理,同时借 kubectl top 阐述 k8s 监控体系,窥一斑而知全豹。最后会解释常见一些问题: kubectl top 为什么会报错?...kubectl top pod 和exec 进入 pod 后看到 top 不一样? kubectl top poddocker stats得到为什么不同? ?...kube-aggregator 是 apiserver 有力扩展,它允许 k8s 开发人员编写一个自己服务,并把这个服务注册到 k8s api 里面,即扩展 API,metric-server...两者都不包含file cache 4.5 kubectl top poddocker stats得到为什么不同?...如果你 pod 只有一个 container,你会发现 docker stats 值不等于kubectl top 值,既不等于 container_memory_usage_bytes,也不等于container_memory_working_set_bytes

29.4K71

使用Kubernetes和Docker

/docker-for-mac/install/ 运行Hello World容器 busybox是一个集成最常用linux命令linux系统容器镜像 使用docker run命令指定镜像名字、执行命令...每个pod就像一个独立逻辑机器,有自己ip、主机名、进程等,运行一个独立应用程序 一个pod所有容器运行在同一个逻辑机器上,也可以出现在不同节点上 和Docker启动容器不同,Kubernetes...访问web应用 介绍:每个pod在集群内有自己ip,要让pod从外部访问,需要通过服务对象公开它,要创建一个特殊LoadBalance类型服务 创建一个服务对象 命令 $ kubectl expose...pod和它容器 在系统中最重要最基本组件是pod 它只包含一个容器,但是通常一个pod可包含任意数量容器 pod自己私有ip和主机名 ReplicationController角色 通常,rc...用于创建pod多个副本并让它保持运行 如果pod有任何原因消失或停止,那么rc将拉起或重新创建新pod 为什么需要服务 解决不断变化pod ip地址,pod可能因为故障而停止,这时会有新pod替换

98120

Kubernetes(k8s)常用资源使用、Pod常用操作

23 - containerPort: 80 在k8s,所有的资源单位,只要使用配置文件声明之后,使用create -f指定nginx_pod.yaml位置,就可以被创建了。...本地是下载下来了,如果下载不下来,也可以将安装包上传到服务器。可以使用命令kubectl get pod nginx进行查看,自己Nginx已经跑起来了。 ?...所以想要删除运行过images必须首先删除它container。 1 container正在运行(运行docker ps查看),先将其关闭。...使用docker ps查看容器列表时候发现了两个容器,一个是pod容器,它ip地址是172.16.101.2,还有一个是在Pod配置文件定义一个容器,它ip地址是没有的,它网络模式是container...spec,但是status创建之后,系统自动添加,不用管它。

1.2K20

Kubernetes(k8s)常用资源使用、Pod常用操作

23 - containerPort: 80 在k8s,所有的资源单位,只要使用配置文件声明之后,使用create -f指定nginx_pod.yaml位置,就可以被创建了。...本地是下载下来了,如果下载不下来,也可以将安装包上传到服务器。可以使用命令kubectl get pod nginx进行查看,自己Nginx已经跑起来了。...所以想要删除运行过images必须首先删除它container。 1 container正在运行(运行docker ps查看),先将其关闭。...使用docker ps查看容器列表时候发现了两个容器,一个是pod容器,它ip地址是172.16.101.2,还有一个是在Pod配置文件定义一个容器,它ip地址是没有的,它网络模式是container...spec,但是status创建之后,系统自动添加,不用管它。

1.4K30

【云原生|实战研发】2:Pod深入实践与理解

操作系统PID1进程是init进程,以守护进程方式运行,是所有其他进程祖先,具有完整进程生命周期管理能力。在Docker容器,PID1进程是启动进程,它也会负责容器内部进程管理工作。...而对于宿主机上其他网络资源,都是一个 Pod为 一组来分,并且被该 Pod 所有容器共享网络视图。...这也是为什么 K8s,允许去单独更新 Pod某一个镜像,即做这个操作,整个 Pod 并不会进行重建或者重启。...常用命令 #创建一个pod kubectl create -f po.yml #查看创建pod kubectl get po #创建一个指定命名空间pod kubectl create -f po.yml...-n kube-public #创建一个命名空间 kubectl create ns ns_name #删除一个pod kubectl delete po nginx #删除指定命名空间pod kubectl

6510

如何成功通过 CKA 考试?

CKA 考试软件环境如下,确保在考试前练习采用相同软件环境,以提前熟悉考试环境: 操作系统:Ubuntu 18.04 Shell:bash 编辑器:vi 命令行工具:kubectl jq tmux...为常用 kubectl 命令定义 alias 你可以根据自己习惯来设置 alias,如下: alias k=kubectl alias kgp="k get pod" alias kgd="k get...-oyaml > pod.yaml vi pod.yaml //添加 resource limit 设置 k create -f pod.yaml 由于在考试中会频繁使用到 --dry-run=client...例如 kubectl run --help 输出中有大量创建 pod 示例: kubectl run --help Create and run a particular image in a pod...你练习时间越长, kubectl 命令行操作越熟悉,即将到来考试越有信心,顺利通过考试几率则越大。

1.2K30

Kubernetes集群部署相关

这里需要注意是,kubernetes里/etc/hosts文件是单独挂载,这也是为什么kubelet能够hostname进行修改并且Pod重建之后仍然有效原因。...Linux给每个运行进程分配一个叫oom_score分数,它表示一个系统可用内存很低时候,一个进程被kill可能性有多大。分数越高,越可能被kill。...pod在k8s集群部署中就相当于docker部署方式container,所以问题就回到了如何来设置这个pod。...现在镜像是被拉取下来了,但是镜像拉取下来之后,为啥kubernetes显示runrun含义在docker里很明显了,就是docker run -n 容器名称 使用镜像,就是说只是拉取下来了并没有运行...# 为什么 在k8s,一些敏感信息最好处理方式,肯定不是直接声明在`yaml`文件,所以可以用`kubectl create secret` kubectl -f xx.yaml edit

55111
领券