文章

Linux 常见错误码

2022-3-15
technology
linux

下表是 Linux 操作系统一些常见的错误代码和对应的错误描述 1 EPERM Operation not permitted 2 ENOENT No such file or directory

load average 过高, mount nfs 问题处理

2022-3-14
technology
nfs, kubernetes

周末, 有一台服务器告警: 系统负载过高, 最高的时候都已经到 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 失败, 解决办法: ...

容器化部署 openldap

2022-3-3
technology
ldap, golang

使用容器化安装非常便捷, 参考 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, 可以使用了~

解决 kubelet cannot allocate memory 错误

2022-2-27
technology
kubelet, kubernetes

问题描述 # 查看 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的教程

2022-2-14
technology
kubespray, kubernetes

本文使用 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云控制台等. ...