比较冷门但有用的 kubectl 命令
2022-3-22
以下冷门命令能实现某种具体的功能, 都是在实际工作中摸索总结的经验, 获取到相关的资源名称之后, 就可以配合常用的 kubectl 命令获取其他详细信息.
以下冷门命令能实现某种具体的功能, 都是在实际工作中摸索总结的经验, 获取到相关的资源名称之后, 就可以配合常用的 kubectl 命令获取其他详细信息.
pod is in the cache, so can’t be assumed, 这是调度器 scheduler 缓存失效导致的异常事件, 大致原因是 pod 已经调度, 并绑定到指定节点, 由于该节点异常导致启动失败, 重新启动 prometheus statefulset, 让集群重新调度, 其实就是将现有到 prometheus pod 副本数将至 0, 再恢复正常即可.
calico-node-4fpgp Readiness probe failed, orphaned pod found, but volume paths are still present on disk : There were a total of N errors similar to this. Turn up verbosity to see them.
这篇文档主要演示了 opensnoop(Linux eBPF/bcc) 工具的使用. opensnoop 在系统范围内跟踪 open() 系统调用,并打印各种详细信息.
这篇文档主要演示了 tcplife(Linux eBPF/bcc) 工具的使用. tcplife 总结了在跟踪期间打开和关闭的 TCP 会话. 比如
下表是 Linux 操作系统一些常见的错误代码和对应的错误描述 1 EPERM Operation not permitted 2 ENOENT No such file or directory
周末, 有一台服务器告警: 系统负载过高, 最高的时候都已经到 100 +, 以下是排查&处理的具体过程. 发现的问题/现象 # uptime 显示 load average 都在70+ # 因为服务器是40核心, 原则上负载40是满负荷, 现在明显存在大量等待的任务. 继续往下分析进程, 看具体那个进程一直在堵塞. ps -ef 执行到某一个进程就卡住了 # 命令执行如下: $ ps -ef ... root 40004 2912 0 Mar08 ? 00:00:33 containerd-shim -namespace moby -workdir /data/docker/containerd/daemon/ io.containerd.runtime.v1.linux/moby/<container-hash> 卡住了 根据命令中的 找到对应的 pod, 将其从当前节点移除. 移除之后, ps 命令以及其他系统命令可以成功执行. 被移除的 pod 分别是: 2个 prometheus、 1个 mysql. 无法执行 umount 卸载 # 测试 mount 挂载正常, 但是 umount 失败, 解决办法: ...
使用容器化安装非常便捷, 参考 osixia/openldap仓库使用说明安装即可, 如下: docker stop openldap && docker rm openldap && \ docker run --name openldap --detach \ -p 389:389 \ -p 636:636 \ --env LDAP_ORGANISATION="Rutron Net" \ --env LDAP_DOMAIN="rutron.net" \ --env LDAP_ADMIN_PASSWORD="your-password" \ --env LDAP_READONLY_USER=true \ --env LDAP_TLS_VERIFY_CLIENT=try \ --volume /data/openldap/data:/var/lib/ldap \ --volume /data/openldap/slapd.d:/etc/ldap/slapd.d \ --hostname ldap.rutron.net \ osixia/openldap:1.5.0 好了, 现在该服务同时支持 ldap 和 ldaps 协议, 有一个初始化的账号 readonly/readonly, 可以使用了~
问题描述 # 查看 pod 相关 events 如下: Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 18m default-scheduler Successfully assigned container-186002196200947712/itms-5f6d7798-wrpjj to 10.206.65.144 Warning FailedCreatePodContainer 3m31s (x71 over 18m) kubelet unable to ensure pod container exists: failed to create container for [kubepods burstable pod31f4c93c-c3a1-49ad-b091-0802c5f1d396] : mkdir /sys/fs/cgroup/memory/kubepods/burstable/pod31f4c93c-c3a1-49ad-b091-0802c5f1d396: cannot allocate memory 这是内核bug,建议升级内核
本文使用 kubespray 容器部署 kubernetes v1.22, 提供了从国外搬运的离线软件包/容器镜像. 仅需要几步即可部署高可用集群. 所有离线文件都来自官方下载 kubespray 安装过程会进行软件包验证, 放心使用. 前提 # 禁用防火墙 重要: 本文使用 kubespray 的容器环境部署, 为避免影响节点部署(特别是 Runtime 部署), 所以需要一台独立于集群外的服务器执行下面的命令, 这台服务器安装 docker 19.03+ 并到所有节点SSH免密进入. 目标服务器要允许 IPv4 转发, 如果要给 pods 和 services 用 IPv6, 目标服务器要允许 IPv6 转发. 注意: 下面配置是适合 kubespray 的配置, 实际配置取决于集群规模. Master Memory: 1500 MB Node Memory: 1024 MB 文件和镜像搬运 # 由于国内网络的限制, 直接使用Kubespray是无法成功安装集群的. 所以我写了一个脚本, 将文件上传至阿里云OSS, 镜像上传至阿里云ACR. 下面是脚本的内容, 请在国外服务器上运行, 比如GitHub Actions、Google云控制台等. ...