• 设置kubernetes Pod的shared memory

    问题描述 背景知识1:shared memory System V POSIX 背景知识2:kubernetes shared memory kubernetes empty dir 使用empty dir的缺点 cgroup限制 内存的cgroup限制 共享内存受cgroup限制吗? 最终的设计 问题描述 用户可以使用共享内存来做一些进行通信(vs golang的 “通...


  • 小贴士:Docker清理作弊手册

    清理所有无用对象 清理docker容器 清理所有stopped的容器 停止并清理所有容器 清理镜像 清理dangling镜像 清理所有没有使用的镜像 清理volumes 清理networks 我在MBP上跑的Docker Desktop,可以方便的制作镜像、做一些实验验证。但是由于家境贫寒,MBP硬盘只有256GB,用了几年现在只剩下几十GB,镜像做多了,占据空间比较大,清理多余i...


  • 消失的Prometheus指标

    问题现象 kubelet与cadvisor cadvisor与runtime cadvisor与docker 真正的原因 解决办法 总结 记一个线上故障的解决过程。 问题现象 我们有一些GPU的机器,需要统计GPU的相关信息,数据是从Prometheus拿的,但有一天突然发现,部分GPU节点metrics的某些label是空的。 下面是正常节点的metrics。 container_accelerator_duty_cycle{acc_id="GPU-d838...


  • 追踪nginx ingress最大打开文件数问题

    问题现象 初步分析 linux基础:fs.file-max vs ulimit fs.file-max fs.file-nr ulimit 深入分析 解决办法 ulimit可以吗? 修改docker daemon的ulimit默认值 /etc/security/limits.conf 修改计算方式 修改回退 不跟你们玩:配置项 ...


  • kubernetes笔记:Service Catalog

    概念 架构设计 应用架构 部署Service Catalog 部署一个简单的service broker 实战 创建一个服务实例 绑定服务实例 总结 概念 Service Catalog (服务目录)是Kubernetes社区的孵化项目Kubernetes Service Catalog Project,旨在接入和管理第三方提供的Service Broker,使kubernetes上托管的应用可以使用service b...


  • 小贴士:Golang的空数组是否为nil?

    在阅读kubernetes代码时,有时会看到一些代码对数组与nil进行了比较。 // bindAPIUpdate gets the cached bindings and PVCs to provision in podBindingCache // and makes the API update for those PVs/PVCs. func (b *volumeBinder) bindAPIUpdate(podName string, bindings []*bindingInfo, cl...


  • nodePort的副作用

    问题现象 问题原因 灵魂拷问 解决办法 问题现象 某天遇到了一个问题:访问某个web服务时,部分请求失败了,返回了Connection Refused。 这个web服务因为某些原因,网络是hostNetwork类型,跟宿主机是同一个网络namespace。登录到Node上去,可以看到监听socket还是在的,但是直接curl请求的时候,返回了Connection Refused。 为什么呢?通常Connection Refused表示监听Socket没打开,没有打开对应端口...


  • 开启kubernetes的抢占模式

    Pod优先级、抢占 创建PriorityClass 设置Pod的PriorityClassName 君子:Non-preempting PriorityClasses 对比 Cluster Autoscaler Pod优先级、抢占 Pod优先级、抢占功能,在kubernetes v1.8引入,在v1.11版本进入beta状态,并在v1.14版本进入GA阶段,已经是一个成熟的特性了。 顾名思义,Pod优先级、抢占功能,通过将应用细分为不同的优先级,将资源优先提供给高优先级的...


  • MetalLB:穷人的LoadBalancer

    MetalLB介绍 地址分配 外部声明 MetalLB部署 Layer 2模式部署 BGP模式部署 openwrt安装quagga openwrt配置BGP协议 kubernetes上配置BGP协议 BGP模式解析 failover 总结 MetalLB介绍 在说说我的homelab里,伊布介绍了家里的homelab,其中包括了kubernet...


  • kubernetes容器中域名解析优化

    多余的DNS查询 kubernetes的容器域名解析 search和ndots kubernetes为什么使用搜索域 kubernetes搜索域 ndots默认值 ndots修改 dns cache 总结 多余的DNS查询 一些需要解析外部DNS域名的应用,当运行在容器中时,如果我们在容器的network namespace中对dns报文(udp port 53)进行抓包,可能会发现在正确解析之前,还经过了若干...