docker报错打开太多文件(too many open files)
在Linux系统内默认对所有进程打开的文件数量有限制(也可以称为文件句柄,包含打开的文件,套接字,网络连接等都算是一个文件句柄)
查看当前系统限制最大文件打开数量12cat /proc/sys/fs/file-max2000000
查询当前系统已打开文件数量12cat /proc/sys/fs/file-nr8640 0 2000000 # 左边的值为当前系统已打开文件数量,右侧表示当前系统限制最大文件打开数
以上查询得知当前系统打开文件句柄数未达到上限,往下排查Docker进程的最大文件句柄数限制及已打开文件数
查询当前Docker进程最大可打开文件数量及已打开文件数量123456systemctl status docker | grep PID #获取Docker进程的PID号Main PID: 14644 (dockerd)cat /proc/`pidof dockerd`/limits# 或者使用ls -l /proc/`pidof dockerd`/fd/* | wc -l ## 获取当前Docker进程已打开的文件数量65342 ...
kubelet状态更新和自驱逐参数优化
环境信息
kubelet: v1.19.10
os:centos7.9
deploy:kubeasz
概览当 Kubernetes 中 Node 节点出现状态异常的情况下,节点上的 Pod 会被重新调度到其他节点上去,但是有的时候我们会发现节点 Down 掉以后,Pod 并不会立即触发重新调度,这实际上就是和 Kubelet 的状态更新机制密切相关的,Kubernetes 提供了一些参数配置来触发重新调度的时间,为了简单起见,将跳过 HA 的部分,仅描述 Kubelet<->Controller Manager 通信流程。
默认情况下,正常行为:
kubelet 自身会定期更新状态到 apiserver,通过参数 –node-status-update-frequency 指定上报频率,默认是 10s 上报一次。
Kubernetes controller manager 每隔 –node-monitor-period 检查 Kubelet 的状态。默认值为 5 秒。
如果状态在 –node-monitor-grace-period 时间内更新,Kubernetes c ...
pod容器内ping延迟大问题
问题描述1、根据业务方的反馈,有2个容器之前存在网络延迟,但同一集群并未有其他人反馈异常
pod1(10.165.74.252) —> pod2(10.165.210.88) ping延迟稳定4个包出现一个包延迟200-400ms
根因分析1、检查物理机管理控制台日志,排查是否存在异常日志,登录带外检查并未发现异常。
2、检查了容器网络,我们集群CNI用的是calico,检查主机上calico-node状态正常,并且日志并未发现异常。
123# 2个容器所在节点上calico-node状态正常,日志并未发现异常日志。calico-node-7np2p 1/1 Running 0 322d 10.165.6.25 10.165.6.25 <none> <none>calico-node-gcn4c 1/1 Running 0 11d 10. ...
CentOS7安装基于BPF的bcc-tools系统性能工具库
准备
OS版本:CentOS7.6.1810
内核版本:5.4.207-1.el7.elrepo.x86_64
依赖包:1234567#内核依赖包rpm -qa | grep kernel-ltkernel-lt-tools-5.4.207-1.el7.elrepo.x86_64kernel-lt-tools-libs-5.4.207-1.el7.elrepo.x86_64kernel-lt-devel-5.4.207-1.el7.elrepo.x86_64kernel-lt-5.4.207-1.el7.elrepo.x86_64kernel-lt-headers-5.4.207-1.el7.elrepo.x86_64
安装内核必须升级到4.x版本以上,才可以使用。我的内核版本已经升级过,具体升级内核过程这里不展开,建议使用elrepo 安装高版本内核。
12345678910111213#安装bcc-toolsyum install -y bcc-tools#添加环境变量export PATH=$PATH:/usr/share/bcc/tools# 测试#cachestat ...
CKAD模拟题:2-CronJob
题目要求
在清单文件 /ckad/CKAD00016/periodic.yaml 中定义此 Pod
在一个 busybox:stable 容器中运行命令 date 该命令必须每分钟运行一次,并且必须在 10 秒内完成运行,或者被 Kubernetes 终止运行。注意: CronJob 名称和容器名称都必须为 hello
在上述清单文件中创建此资源,并验证此 Job 至少成功执行一次。
参考https://kubernetes.io/zh-cn/docs/tasks/job/automated-tasks-with-cron-jobs/
https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/job/
解答123456789101112131415161718192021222324252627282930313233343536373839404142# 1.编辑文件vim /ckad/CKAD00016/periodic.yaml# 2.根据要求编辑文件内容apiVersion: batch/v1kind: C ...
CKAD模拟题:7-金丝雀部署
题目要求namespace goshawk 中名为 chipmunk-service 的 Service 指向名为 current-chipmunk-deployment 的 Deployment 创建的 5 个 Pod
你可以在 /ckad/goshawk 中找到 current-chipmunk-deployment 的清单文件。
在同一 namespace 中创建一个 相同的 Deployment 名为 canary-chipmunk-deployment
修改 Deployment 以便
在 namespace goshawk 中运行的 Pod 的最大数量为 10 个
chipmunk.service 流量的 40% 流向 Pod canary-chipmunk-deployment
参考https://kubernetes.io/zh-cn/docs/concepts/cluster-administration/manage-deployment/#canary-deployments
解答123456789101112131415161718192021222 ...
Kubernetets CPU绑核配置
CPU绑核配置默认情况下,kubelet 使用 CFS 配额 来执行 Pod 的 CPU 约束。 当节点上运行了很多 CPU 密集的 Pod 时,工作负载可能会迁移到不同的 CPU 核, 这取决于调度时 Pod 是否被扼制,以及哪些 CPU 核是可用的。许多应用对这种迁移不敏感,因此无需任何干预即可正常工作。有些应用对CPU敏感,CPU敏感型应用有如下特点。
对CPU throttling 敏感
对上下文切换敏感
对处理器缓存未命中敏感
对跨socket内存访问敏感
期望运行在同一物理CPU的超线程
如果您的应用有以上其中一个特点,可以利用kubernetes中提供的绑核策略去给应用绑核,提升应用性能,减少应用的调度延迟。cpu manager会优先在一个Socket上分配资源,也会优先分配完整的物理核,避免一些干扰。
如何为Pod绑核想要让Pod能够绑核,有如下几点要求:
节点上开启静态绑核策略。
Pod的定义里都要设置request和limits,request和limits要一致。
对于要绑核的容器,request值必须是整数。
如果有init container希望进行绑 ...
kubelet统计磁盘inode耗时导致负载升高问题
问题描述1、磁盘容量告警
2、对主机进行磁盘检查并尝试清理磁盘占用较高的pod,有5900多个文件描述符被打开没有关闭。
通过平台删除该pod: product-center-query-pro-remain-5bfb5f4c98-m2l55
3、主机负载冲高,触发告警
根因排查1、根据系统日志发现磁盘最早在5月28日就出现了磁盘inode统计超时情况。
2、发现有个容器在/tmp目录创建了很多小文件,占用了大量的磁盘空间及Inode,可能是导致磁盘响应变慢的直接原因。
解决方案
立即对主机进行疏散,避免再次出现异常,导致主机负载升高,影响业务pod。
增加该kubelet日志告警(fs: disk usage and inodes count on following dirs took 1),提前发现及时人工介入进行处理。
CKAD模拟题:28-Jobs
题目要求
用执行命令**’date; echo Hello from the Kubernetes cluster’**的镜像 busybox ,创建一个名为 busybox-job 的 Job 。
修改此 Job ,确保在执行时间超过 3000 秒后,kubernetes 会自动终止该 Job。
如果容器失败,则尝试重启容器,但最多尝试重启 5 次。
检查此Job的日志
参考https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/job/
12345678910111213141516# 参考命令kubectl explain job.spec# 配置示例apiVersion: batch/v1kind: Jobmetadata: name: pispec: template: spec: containers: - name: pi image: perl:5.34.0 command: ["perl", "-Mbign ...
CKAD模拟题:27-Secret 秘钥
题目要求在 test 命名空间,创建一个名为 mysecret 的密钥,其值 username 为 devuser 和 password为A!B*d$zDsb= 在 test 命名空间,创建一个 pod,镜像使用 nginx:1.16 ,名字为 mypod ,将秘密 mysecret 挂载到路径 /etc/foo 上的卷中
参考https://kubernetes.io/zh-cn/docs/tasks/configmap-secret/managing-secret-using-kubectl/
https://kubernetes.io/zh-cn/docs/concepts/configuration/secret/#using-secrets-as-files-from-a-pod
解答123456789101112131415161718192021222324252627282930# 创建一个namespacekubectl create ns **test# 创建秘钥配置echo -n 'devuser' > ./username.txtech ...