胡伟煌

个人博客

kubeadm管理证书

通过kubeadm搭建的集群默认的证书时间是1年(由于官方期望每年更新一次k8s的版本,在更新的时候会默认更新证书),当你执行命令出现以下报错,说明你的证书已经到期了,则需要手动更新证书。 12345# kubectl get nodeUnable to connect to the server: x509: certificate has expired or is not yet va......

PVC创建流程

pvc流程 流程如下: 用户创建了一个包含 PVC 的 Pod,该 PVC 要求使用动态存储卷; Scheduler 根据 Pod 配置、节点状态、PV 配置等信息,把 Pod 调度到一个合适的 Worker 节点上; PV 控制器 watch 到该 Pod 使用的 PVC 处于 Pending 状态,于是调用 Volume Plugin(in-tree)创建存储卷,并创建 PV 对象(......

部署csi-cephfs

0. 说明 要求Kubernetes的版本在1.11及以上,k8s集群必须允许特权Pod(privileged pods),即apiserver和kubelet需要设置--allow-privileged为true。节点的Docker daemon需要允许挂载共享卷。 涉及镜像 quay.io/k8scsi/csi-provisioner:v0.3.0 quay.io/k8scsi/csi......
CSI

Pod创建流程

Pod创建基本流程图 Pod创建完整流程图 图片来源:https://fuckcloudnative.io/posts/what-happens-when-k8s/ 参考: https://fuckcloudnative.io/posts/what-happens-when-k8s/ var isMobile = navigator.userAgent.......

csi-cephfs-plugin

1. 编译CSI CephFS plugin CSI CephFS plugin用来提供CephFS存储卷和挂载存储卷,源码参考:https://github.com/ceph/ceph-csi 。 1.1. 编译二进制 1$ make cephfsplugin 1.2. 编译Docker镜像 1$ make image-cephfsplugin 2. 配置项 2.1. 命令行参数 O......
CSI

PVC Terminating

问题描述 1pvc terminating pvc在删除时,卡在terminating中。 解决方法 1kubectl patch pvc {PVC_NAME} -p '{"metadata":{"finalizers":null}}' var isMobile = navigator.userAgent.......

kata配置

1. 配置文件路径 默认的配置文件位于/usr/share/defaults/kata-containers/configuration.toml,如果/etc/kata-containers/configuration.toml的配置文件存在,则会替代默认的配置文件。 查看配置文件的路径命令如下: 123# kata-runtime --kata-show-default-config-p......

nvidia-device-plugin介绍

1. 简介 NVIDIA device plugin 通过k8s daemonset的方式部署到每个k8s的node节点上,实现了Kubernetes device plugin的接口。 提供以下功能: 暴露每个节点的GPU数量给集群 跟踪GPU的健康情况 使在k8s的节点可以运行GPU容器 2. 要求 NVIDIA drivers ~= 384.81 nvidia-docker ve......

Pod驱逐

问题描述 节点Pod被驱逐 原因 1. 查看节点和该节点pod状态 查看节点状态为Ready,查看该节点的所有pod,发现存在被驱逐的pod和nvidia-device-plugin为pending 123root@host:~$ kgpoallowide |grep 192.168.1.1department-56 173e397c-ea35-4aac-85d8-07106e55d7b......

Dynamic Volume Provisioning 介绍

Dynamic Volume Provisioning Dynamic volume provisioning允许用户按需自动创建存储卷,这种方式可以让用户不需要关心存储的复杂性和差别,又可以选择不同的存储类型。 1. 开启Dynamic Provisioning 需要先提前创建StorageClass对象,StorageClass中定义了使用哪个provisioner,并且在provisi......