k8s存储pv/pvc中的subPath的使用详解

有些场景下我们需要在多个POD中使用同一个volume,这种情况在就不能直接直接写在同一个目录下,而需要使用该目录下针对每个POD的子目录,这个时候就可以使用subPath。同时如果configMap/Secret挂载在容器的路径是会覆盖原有路径的下所有文件,这种场景在使用subPath也可以很好的解决该问题。我们来看下用法吧。我们先创建一套测试的pv/pvccat test-storage.yamlkind: PersistentVolumeapiVersion: v1metadata: &nbs...

阅读全文

containerd环境下通过的进程PID查询POD的方法

之前我们有记录过一个笔记,是docker环境下通过查看到的进程PID号来查找到拥有该进程的POD,具体可以查看我之前的笔记:https://sulao.cn/post/925.html近期基本都在将docker环境切换到containerd环境,所以这次根据需求来更新下containerd环境下根据PID查找对应POD的方法。查找的方法基本和原来没有太大区别,只是有个别步骤会一样,下面我们来一起看看怎么查询。首先我们还是获取我们要查询的PID号。例如我查询的是我的使用GPU资源的进程例如我们要查询tf_cnn_benchmarks这个进程ps ...

阅读全文

k8s容器退出码详细信息介绍

由于经常使用k8s,所以在遇到退出码含义的时候经常要去查询,所以记录到博客上方便进行查找对应的含义关系。当一个容器达到Exited状态时,Docker会在日志中报告一个退出码,告诉你容器发生了什么导致它退出。了解容器退出码下面我们将更详细地介绍每个退出码。退出码含义...

阅读全文

pod修改共享内存shm大小的方法

默认的Linux发行版中的内核配置都会开启tmpfs,映射到了/dev/下的shm目录,这个就是共享内存目录,可以通过df命令查看,例如在pod中我们查看默认就是64M。/dev/shm/是linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存里,直接使用/dev/shm/就可达到很好的优化效果。默认系统就会加载/dev/shm,它就是所谓的tmpfs,像虚拟磁盘一样,tmpfs可以使用您的RAM,但它也可以使用您的交换分区来存储,tmpfs是一个文件系统,而不是块设备,只是安装它,它就可以使用了。动态文件系统的大小,/dev/sh...

阅读全文

k8s调度GPU节点并挂载GPU设备

k8s已经支持GPU设备的调度和POD容器挂载,需要做以下配置1.首先我们需要再宿主机安装驱动2.需要安装nvidia-container-runtime3.GPU节点打标签并部署k8s-device-plugin上面1和2可以直接搜我之前的笔记,我们直接部署k8s-device-plugin,这个可以上报GPU节点的GPU数量到k8s中,然后在业务yaml文件中添加requests/limits请求配置中添加GPU相关配置即可自动调度到GPU节点并挂载GPU设备将以下内容保存为k8s-device-plugin.yaml,lable需要自己按照需求进行...

阅读全文

容器内执行nvidia-smi报错提示Failed to initialize NVML

使用GPU的容器运行了一个训练任务,一段时间以后查看训练任务失败,进POD容器内执行nvidia-smi返回"FailedtoinitializeNVML:UnknownError"。目前该问题是一个已知问题,是由于在docker环境中daemon.json文件中配置了"exec-opts": ["native.cgroupdriver=systemd"]同时通过systemctldaemon-reload等命令守护进程重载命令,导致容器化的GPU工作负载可能会突然失去对G...

阅读全文

k8s使用nfs报错selfLink was empty, can't make reference

我们重新部署了k8s环境,centos7环境下使用的k8s1.27.0这个版本,今天在部署k8s上使用storageclass资源资源部署nfs使用时,POD挂载nfs资源报错提示“unexpectederrorgettingclaimreference:selfLinkwasempty,can'tmakereference”出现上述这个问题是因为在k8s1.21之后的版本移除了selfLink机制,kube-apiserver的解决方法是作为–feature-gates=RemoveSelfLink=false参数传递,这种...

阅读全文

k8s多master集群更新证书

我本地环境是三个master的k8s集群192.168.1.72   master1192.168.1.73   master2192.168.1.74   master3首先第一个master节点更新证书,我们首先需要导出资源清单kubectl get cm kubeadm-config -n kube-system -o yaml >/etc/kubernetes/ku...

阅读全文

centos7删除POD一直Terminating无法销毁

目前我的k8s环境容器是使用的containerd,删除POD以后一直terminating,无法销毁,然后查看terminating的POD有以下事件报错  Normal   Killing        8m16s                 &nbs...

阅读全文

containerd镜像仓库相关配置

之前使用docker配置的可以查看这个笔记https://sulao.cn/post/786.html进行配置现在使用containerd以后需要在config.toml中配置仓库的相关信息修改/etc/containerd/config.toml文件找到[plugins."io.containerd.grpc.v1.cri".registry]的配置然后添加的下面这样的[plugins."io.containerd.grpc.v1.cri".registry]  [plugins.&quo...

阅读全文