
Kubernetes
文章平均质量分 51
Kubernetes
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
时空无限
为信仰而生
展开
-
k8s pod Unable to attach or mount volumes xxx timed out waiting for the condition
(2)后续挂载均会跳过chown,因为挂载点根目录的group和pod.securityContext.fsGroup已经一致(只关心挂载点根目录,不会管存储里面的内容);(1)第一次挂载可能会触发chown -R的操作,是为了保证挂载点根目录的group和pod.securityContext.fsGroup一致;大多数情况下,使用卷的 Pod 应该每次都使用相同的 fsgroup,而无需在多个 Pod 之间进行更改。目前,fsgroup 的设置每次挂载时都会递归进行。pod 中添加如下配置。原创 2025-06-01 22:07:06 · 10 阅读 · 0 评论 -
k8s 证书相关问题
这个命令表示更新 kube-apiserver 连接 etcd 使用的证书,如果证书目录(默认是 /etc/kubernetes/pki)下没有。这两个证书有问题会导致 kube-apiserver 连接 etcd 失败,kubectl 命令不可用。这个命令表示生成 kube-apiserver 连接 etcd 使用的证书,生成后如下。文件,这个命令会执行失败。原创 2025-04-23 16:47:16 · 174 阅读 · 0 评论 -
k8s 手动续订证书
运行命令后,您应该重新启动控制平面 Pod。静态 Pod由本地 kubelet 管理,而不是由 API Server 管理,因此无法使用 kubectl 删除和重启它们。要重新启动静态 Pod,您可以暂时从/etc/kubernetes/manifests/中删除其清单文件并等待 20 秒(请参阅KubeletConfiguration struct中的。然后您可以将文件移回原处,在另一个fileCheckFrequency周期后,kubelet 将重新创建 Pod,并且组件的证书更新可以完成。原创 2025-04-17 12:14:18 · 305 阅读 · 0 评论 -
grafana/loki 部署搜集 k8s 集群日志
默认情况下,受 Grafana 的 Tanka 设置启发,图表会安装网关组件,该组件是一个 NGINX,可公开 Loki API 并自动将请求代理到正确的 Loki 组件(读取或写入,或文件系统存储的情况下的单个实例)。Grafana 提供了多个 Helm Chart 用于在 Kubernetes 集群中部署 Loki 及相关组件,其中主要包括 grafana/loki 和 grafana/loki-stack。如果您需要单独部署和管理 Loki,或在生产环境中使用,建议选择 grafana/loki。原创 2025-04-11 11:49:41 · 402 阅读 · 0 评论 -
containerd 拉取镜像的工具以及优劣
nerdctl Docker + K8s moby(需手动切换到 k8s.io) ✅ ✅ ✅(需 --namespace=k8s.io) 体验像 Docker,支持 save/load 默认 moby namespace,需手动切换。nerdctl 是一个类似 docker 命令行的工具,可以直接操作 containerd,并支持 moby(Docker)和 k8s.io(Kubernetes)命名空间。✅ 支持 k8s.io 和 moby 命名空间,可用于 Kubernetes 和 Docker 生态。原创 2025-03-14 19:15:51 · 322 阅读 · 0 评论 -
k8s 修改节点驱逐阈值
编辑 /var/lib/kubelet/config.yaml 文件。的 ExecStart=/usr/bin/kubelet 后。否则直接将该参数加到文件。重启该节点的 kubelet。原创 2025-03-13 12:23:48 · 207 阅读 · 0 评论 -
helmfile 报错 another operation (install/upgrade/rollback) is in progress
注意: 替换成 prometheus 所在的 Kubernetes 命名空间,通常是 monitoring 或 default。查看该 release 状态,如果输出结果为空(没发现该 release),则执行。尝试强制回滚 (helm rollback prometheus 4 --force)由报错信息可知,是 prometheus 这个 release 导致的。如果还不行,卸载 Helm release 并重新安装。试试这些方法,如果有进一步错误,可以提供。的输出,我可以帮你分析问题原因。原创 2025-03-06 19:37:16 · 73 阅读 · 0 评论 -
k8s Container runtime network not ready
k8s 3 控制节点,docker 运行时,后期踢掉其中一个节点,使用了 containerd 运行时,但是在加入集群的时候,node 状态 notready。查看 kubelet 的日志发现如下报错。重启 containerd。原创 2025-02-20 11:55:30 · 386 阅读 · 0 评论 -
istio Missing Version
安装的 istio 各个组件版本不一致。原创 2024-12-03 14:38:17 · 65 阅读 · 0 评论 -
etcd defrag
prometheus监控告警,告警信息如下。整理 192.168.1.1 节点的碎片。整理 192.168.1.2 节点的碎片。整理 192.168.1.3 节点的碎片。原创 2024-11-18 14:56:41 · 336 阅读 · 0 评论 -
k8s启动pod报错 plugin type=xxerror getting ClusterInformation: the server has received too many requests
这是etcd集群的问题,需要排查etcd问题,文中是因为etcd所在的一个节点 down 了。查看问题节点是哪个,如下,报错的那个就是问题节点。文中解决方法是剔除了出问题的 etcd 节点。查看问题节点的 id。原创 2024-10-29 15:25:09 · 143 阅读 · 0 评论 -
etcd 备份还原
在你给出的命令中,有一些参数需要被替换为具体的值来匹配你的 etcd 集群配置。#–initial-cluster-token 参数用于 etcd 集群中的节点在初次启动时相互发现。#–initial-advertise-peer-urls 参数指定了 etcd 节点在集群中用于通信的 URL。#/opt/etcd/backup/etcdbackup.db 是你要从中恢复数据的 etcd 快照文件的路径。在恢复过程中,你需要指定集群中所有节点的名称和它们的客户端 URL。这通常与集群中的特定节点相关联。原创 2024-10-28 15:16:12 · 265 阅读 · 0 评论 -
grafana failed to load dashboard from file= ... json error=EOF
使用 prometheus-community/kube-prometheus-stack helm chart 部署 prometheus 监控后,查看 grafana pod 有如下报错。由于 dashboard 开了持久化存储,所以只注释掉导入 dashboard 的配置不足以解决这个日志报错。如下配置刚开始部署的时候并没有注释,注释掉后再次部署,关于这 3 个 dashboard 的报错仍然存在。1、注释掉导入 Ceph-CephFS dashboard 的配置。原创 2024-10-17 15:06:28 · 249 阅读 · 0 评论 -
k8s dial tcp 10.97.0.1:443: i/o timeout
使用 kubeadm 部署完 k8s ,使用 projectcalico/tigera-operator 这个 chart 部署 calico ,卡在了 tigera-operator 这个 namespace 下的 pod tigera-operator-54b47459dd-n4x72,该 pod 一直重启,查看该 pod 日志发现如下报错。查看 endpoints,发现 kubernetes 的 ENDPOINTS 地址不对,这个地址是 node 上另外一个段的,这个段不是所有的主机都能通。原创 2024-08-29 18:17:02 · 678 阅读 · 0 评论 -
k8s Failed to delete cgroup paths
该问题为 k8s bug (截止到2024.08.28仍未处理)原创 2024-08-28 11:13:45 · 433 阅读 · 0 评论 -
k8s Volume is already exclusively attached to one node and can‘t be attached to another
问题现象启动 pod 卡在 containercreate 状态,使用kubectl describe pod [pod name]命令查看详细报错。原创 2024-08-23 17:59:53 · 251 阅读 · 0 评论 -
k8s Unable to fetch container log stats failed to get fsstats for
如果需要手动处理,就进到 /var/log/syslog 输出日志中的 log 路径。然后删除 0.log 即可。官方已经解决该 bug。原创 2024-08-22 16:58:02 · 494 阅读 · 0 评论 -
k8s kubelet 日志报错 There were many similar errors. Turn up verbosity to see them err=“orphaned pod
根据日志中输出的 pod id 2a22ee1c-3914-45e7-a916-06f70ab5c8bc。由代码可知,只会删除孤立 pod 的空目录,至于目录下有文件就不会删除该目录。/var/log/syslog 中有很多如下日志存在,每隔 2 秒刷新一次。硬重启机器,使 kubelet 没有机会清理 Pod 目录,即目录变为孤立。删除 vol_data.json 文件。再进入该 pod volume 目录。进入到该 pod 数据目录下。原创 2024-08-21 17:27:26 · 256 阅读 · 0 评论 -
grafana pod 无法启动 Only one datasource per organization can be marked as default
注意文件中 isDefault: {{ default false .Values.loki.isDefault }} ,由这个代码可知 values.yaml 文件中如何指定 loki datasource isDefault 字段的值。grafana 的 datasource cm 为 prometheus-kube-prometheus-grafana-datasource。本文改的是 loki 的配置。loki 的 datasource cm 为 loki-loki-stack。原创 2024-08-21 14:58:12 · 242 阅读 · 0 评论 -
k8s 日志轮换问题 ReopenContainerLog from runtime service... failed Failed to rotate log for container...
这是因为 kubelet 和 docker 指定的两个关于 log 最大文件数和 单个文件最大容量的值不一样导致的。修改 kubelet 或者 docker 的配置,本文修改的是 docker 的配置。在文件 /etc/docker/daemon.json中修改如下配置。查看 /var/log/syslog 日志中有很多类似的错误如下。kubeadm 部署的 k8s 集群,版本v1.26.15。kubelet 关于这两个参数的默认值如下参考。查看 docker 配置中指定的值如下。可以看出明显配置不一致。原创 2024-08-21 12:20:25 · 328 阅读 · 0 评论 -
k8s rbd image replicapool/xxx is still being used
由报错 rbd image replicapool/csi-vol-6e37576b-c7cf-4e9b-a6b7-1049068cb354 is still being used 可知,rbd image 被使用中,查看是哪个客户端 ip 在使用。使用 csi-vol-6e37576b-c7cf-4e9b-a6b7-1049068cb354 后的 6e37576b-c7cf-4e9b-a6b7-1049068cb354 过滤挂载点。登录 rook-ceph 的 tool pod 操作。原创 2024-08-20 12:24:59 · 313 阅读 · 0 评论 -
k8s问题处理
执行 kubectl api-resources 报错如下。原创 2024-08-13 18:03:05 · 524 阅读 · 0 评论 -
ceph报错整理
可以冥想看出是ceph-01的mon进程挂了,不过还是靠命令查。操作系统根分区空间不足。原创 2024-06-06 12:07:54 · 706 阅读 · 0 评论 -
k8s kube-proxy pod 启动失败 failed to try resolving symlinks in path ... no such file or directory
exec format error 这是镜像跟 cpu 架构不匹配导致的。由于问题容器太多,先删除一下,它会自动再启动。删除 kube-proxy pod。上问题 pod 的宿主机上执行。过滤下 proxy 相关容器。由于删除了一次,只剩两个容器。原创 2024-07-19 12:16:53 · 1278 阅读 · 0 评论 -
ceph mgr [errno 39] RBD image has snapshots (error deleting image from trash)
再查看 rdb task 为空,日志也就没有了告警。说明:这个知识消除了日志中的输出报错。从 trash 中恢复 image。ceph mgr 报错。原创 2024-07-08 19:31:07 · 643 阅读 · 0 评论 -
helm 报错处理
deploy 资源中字段配置和 helm charts 中配置不一致导致的。原创 2024-06-21 18:56:18 · 287 阅读 · 0 评论 -
grafana Not saving new dashboard due to restricted database access
grafana 容器中是否存在非唯一的仪表板 uid 和 title,例如。再通过重复的 uid 718Bruins 查看是哪些 json 文件重复了。再通过重复的 uid Oxed_c6Wz 查看是哪些 json 文件重复了。根据过滤出的重复 uid 和 title 修改相应的 json 文件即可。检查 grafana 容器中是否存在非唯一的仪表板 title,例如。检查 grafana 容器中是否存在非唯一的仪表板 uid,例如。grafana 容器日志报错。上诉命令可以合在一起。原创 2024-06-21 15:55:19 · 543 阅读 · 0 评论 -
kube-prometheus-stack 识别 k8s 集群内所有的 ServiceMonitor 和 PrometheusRule
默认情况下,kube-prometheus-stack 只自己创建的 ServiceMonitor,如果 k8s 集群内有多个非 kube-prometheus-stack 创建的 ServiceMonitor,不会被识别到。PrometheusRule 同理。要识别所有的 ServiceMonitor 和 PrometheusRule ,需要在 values.yaml 配置如下。原创 2024-05-29 18:25:25 · 492 阅读 · 0 评论 -
istiod 部署及使用
1.执行任何必要的。2.检查。3.或更高的版本。4.配置 Helm 存储库。原创 2024-05-28 19:49:26 · 218 阅读 · 0 评论 -
部署 istio gateway pod 无法启动
为了支持这一点,网关部署的命名空间不得有标签istio-injection=disabled。如果有,您将看到 Pod 无法启动并尝试拉取映像auto,该映像是一个占位符,旨在在创建 Pod 时替换。注意: istio/gateway 版本没必要和 istiod 版本一致。这里部署的是 1.22.0 版本的 istio/gateway。部署istio/gateway 的 namespace 不能有标签istio-injection=disabled。再次部署 istio/gateway 成功。原创 2024-05-24 12:12:17 · 165 阅读 · 0 评论 -
metailb 为 k8s 创建 LoadBalancer 类型的 svc (istio)
说明:192.168.0.100/24 为 k8s node 的 ip 段。将如下内容添加到 ip.yaml 文件中metadata:addresses:使配置生效更多详情请参考 MetalLB 官网。原创 2024-05-23 19:16:16 · 348 阅读 · 0 评论 -
k8s pvc pending waiting for first consumer to be created before binding
使用WaitForFirstConsumer的StorageClass创建PV失败,PVC Event提示persistentvolume-controller waiting for first consumer to be created before binding。所以使用nodeName创建的Pod,无法使用WaitForFirstConsumer的StorageClass。是否存在引用当前PVC的Pod,若没有,则需要创建。PVC未检测到Pods被调度到的节点。创建使用当前PVC的Pod。原创 2024-05-21 11:31:40 · 1275 阅读 · 0 评论 -
k3s cpu load 和 cpu 使用率很高处理
在这期间还执行过缩减 sqlite3 数据库操作,不知道是哪个操作起了作用,亦或者两个操作有影响,删除 ns 促进了数据库缩减的执行(没删除之前数据库缩减不成功,db文件大小未减小,但不确定是不是执行完 VACUUM 之后需要时间 db 文件才会减小,或者是因为删除了 ns 才导致其减小),再或者是两个操作都起了作用。kubectl get ns 发现有很多卡在删除状态的 ns。k3s 官网关于这个问题的谈论。执行如下脚本删除掉这些 ns。有人详细说过这个问题。原创 2024-04-25 18:04:15 · 374 阅读 · 0 评论 -
k8s rook-ceph rpc error: code = Internal desc = stat /var/lib/… globalmount: permission denied
kubeadm 部署的 k8s 集群,rook-ceph 部署的存储。登录该 pod 所在的宿主机,可以看到挂载的问题挂载点,这里是。客户端 pod 挂载 cephfs 的 pvc 报错。但是,按照这个操作,pod 会报新的错误,如下。1、直接重启 pod 所在的宿主机。describe pod 信息如下。ls 查看会报没有权限的错误。中提到了另外一种解决方法,原创 2024-04-24 11:35:01 · 148 阅读 · 0 评论 -
k8s rook-ceph MountDevice failed for volume pvc An operation with the given Volume ID already exists
如果挂载不上使用 telnet xx.xx.xx.xx:6789 ,正常是能通的,或者 curl xx.xx.xx.xx:6789(注意curl要取消操作系统中的代理配置)正常也是通的。kubeadm 搭建的 k8s 集群,rook-ceph 部署的 ceph 存储,mon pod 所在宿主机和挂载客户端机器 pod 所在机器不在一个二层网络里。xxxxxxxx 为 /etc/ceph/keyring中的key,这个文件在 rook-ceph-tools-xxxxx 这个 pod 中有。原创 2024-04-24 11:15:07 · 375 阅读 · 0 评论 -
ubuntu 安装 infiniband 和 RoCE 驱动
安装完成后重启 openibd 服务。原创 2024-03-12 16:34:43 · 669 阅读 · 0 评论 -
k8s infiniband 和 RoCE(RDMA over Converged Ethernet)
vendors 为设备厂商编号,注意这里不是 ibv_devinfo 命令看到的vendor_id 的值,而是 lspci -n |grep “网卡的bdf” 得到的。如上文所述,启动了两个测试 pod ,登录其中一个 pod(该 pod roce 设备 ip 为 10.56.217.79)如上文所述,启动了两个测试 pod ,登录其中一个 pod(该 pod ip 为 10.96.225.24)说明:文中用到的镜像是自定义的,文末有其Dockerfile 文件。修改该文件,增加污点容忍的内容,如下。原创 2024-03-05 11:53:06 · 1235 阅读 · 0 评论 -
k8s network-attachment-definition
这里列举了 3 个示例metadata:spec:config: '{"ipam": {],}'---metadata:spec:config: '{"ipam": {],}'---metadata:spec:config: '{"ipam": {],},}'EOF执行创建查看创建的 network-attachment-definitionNAME AGE。原创 2024-03-01 15:08:46 · 613 阅读 · 0 评论 -
attachdetach-controller Multi-Attach error for volume Volume is already exclusively attached to on
由于未知原因,pod 挂载了 rook-ceph 的 rbd pv,启动pod 失败。报错如下。原创 2024-02-28 12:53:42 · 566 阅读 · 0 评论 -
dragonfly 加 harbor 实现镜像预热
会话超时时间 和 令牌过期时间都是 默认 30分钟,加上限速 1M/s,因此当一个镜像 layer 超过 2G 的时候会预热失败(不通过 harbor 的方式预热),这个问题看 dragonfly issue。【项目】-选择设置了 P2P 预热并且想要预热的项目点进去-【P2P预热】-【新建策略】-选中策略-【其他操作】-【执行】-【确定】【项目】-选择触发了 P2P 预热的项目点进去-【P2P预热】-【新建策略】-选中策略。【项目】-选择一个项目点进去-【P2P预热】-【新建策略】原创 2024-01-16 19:05:33 · 758 阅读 · 0 评论