GaGa

One GaGa, One World !

在 Linux 系统中,pam_limits.so 是 PAM(Pluggable Authentication Modules)框架中的一个模块,用于在用户登录时应用资源限制。它通过读取 /etc/security/limits.conf 文件或 /etc/security/limits.d/ 目录下的配置文件,设置用户或组的系统资源使用限制,例如最大进程数、内存使用量、打开文件数等。

  • /etc/security/limits.conf
  • /etc/security/limits.d/xxx.conf

1. 模块功能

Read more »

Linux PAM(Pluggable Authentication Modules,可插拔认证模块)是一个灵活的认证框架,用于在 Linux 系统上为应用程序提供统一的认证、账户管理和会话管理功能。它最初由 Sun Microsystems 开发,后来被广泛应用于 Linux 和其他类 Unix 系统。PAM 的核心思想是将认证逻辑从应用程序中分离出来,通过模块化的方式实现可配置性和可扩展性


PAM 的主要特点

  1. 模块化:PAM 使用独立的可插拔模块(如 pam_unix.sopam_limits.so)来实现不同的认证功能,管理员可以根据需求组合这些模块。
  2. 灵活性:通过配置文件,系统管理员可以为不同的应用程序(如 sshsudo)定制认证策略,而无需修改应用程序代码。
  3. 统一性:提供标准化的 API,应用程序只需调用 PAM 接口即可完成复杂的认证流程。
  4. 可扩展性:支持添加自定义模块以满足特定需求。
Read more »

一、ssh_config 配置

ssh_config 是 SSH 客户端的配置文件,通常位于用户主目录下的 ~/.ssh/config(用户级别)或系统级别的 /etc/ssh/ssh_config。通过它,你可以预定义连接参数,简化 ssh 命令的使用。

配置语法

  • 文件由多个 Host 块组成,每个块定义特定主机的连接规则。
  • 每行是一个键值对,格式为 关键字 值
  • 支持通配符(如 *)匹配多个主机。
Read more »

nsenter是 Linux 提供的一个命令行工具,可以让我们进入特定的命名空间(Namespace)。它适用于调试容器、Kubernetes Pod,或直接进入某个进程,使用宿主机系统的命令进行调试,排查(其原理是通过指定选项进入目标命名空间:如容器的 mount namespace,或选择保留宿主机的 mount namespace 以使用其文件系统)。解决容器缺少命令的问题。

nsenter 的原理

nsenter 是一个 Linux 命令行工具,全称是 “namespace enter”,用于进入一个或多个 Linux 命名空间(namespace),并在其中执行指定的命令。它是利用了 Linux 内核提供的命名空间隔离机制,直接操作进程的命名空间,而无需通过容器运行时(如 Docker 或 Podman)的间接方式。

Linux 命名空间简介

Read more »

在 Kubernetes 中,Ephemeral Containers(临时容器)是一种特殊的容器类型,设计用于调试和故障排查运行中的 Pod。它们是在 Kubernetes 1.16 版本中引入的,并在后续版本中逐步完善(到 1.23 版本成为 Beta 特性)。临时容器的主要特点是它们是临时的、轻量级的,可以动态添加到现有的 Pod 中,而无需修改 Pod 的原始定义或重新部署


1. 什么是 Ephemeral Containers?

临时容器是一种运行在现有 Pod 中的容器,但它的生命周期是短暂的,通常用于一次性任务,例如检查 Pod 的状态、运行调试工具或查看日志等。与 Pod 中的普通容器(containers 字段定义的容器)不同,临时容器不会被 Pod 的生命周期管理(比如重启策略)所影响,也不会出现在 Pod 的原始规范中。

Read more »

开启临时容器(ephemeral containers),临时容器是 Kubernetes 中用于调试 Pod 的一种机制,但它需要在集群中启用相关特性才能使用。


env

  • kubernetes-v1.19
  • centos8
Read more »

kubectl debug 命令是在 Kubernetes 1.18 版本中首次引入的,当时作为一个 alpha 特性。从 Kubernetes 1.20 开始,它升级为 beta 特性,并逐渐稳定。以下是具体的时间线:

  • Kubernetes 1.18(2020年3月发布):kubectl debug 作为 alpha 特性引入,需要启用 EphemeralContainers 特性门(Feature Gate)。
  • Kubernetes 1.20(2020年12月发布):升级为 beta 特性,默认启用 EphemeralContainers,无需手动开启。
  • Kubernetes 1.25(2022年8月发布):EphemeralContainers 特性正式稳定,kubectl debug 成为一个成熟的工具。

如果你想使用 kubectl debug,建议确保你的 kubectl 版本至少是 1.18 或更高版本。为了获得更稳定的体验,推荐使用 1.20 或更新的版本。如果你在使用较旧的集群,请检查集群是否启用了 EphemeralContainers 特性。

Read more »

前言

由于镜像中只包含核心命令,运行成Pod容器之后,在其中做一些调试动作,比如tcpdump抓包,ping测试,curl访问等,命令都是没有的。当然你可能想用apt,yum等命令安装它们,但是很遗憾,大部分情况apt,yum命令也是没有的。

应对这类问题,本文介绍两种容器中网络调试的方法:nsenter命令和netshoot镜像****

  • nsenter (宿主机进入容器进程namespace)
  • netshoot (附加到容器上)
Read more »
0%