GaGa's Blog

One GaGa, One World !

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 »

OpenSSL 是一个功能强大的开源工具,用于实现安全通信,提供了大量的加密算法、SSL/TLS 协议支持以及相关工具链。在 OpenSSL 中,主要组件和库包括以下几个:


1. libcrypto

  • 功能:
    提供各种加密算法的实现,如对称加密算法(AES、DES 等)、非对称加密(RSA、DSA、ECDSA 等)、哈希算法(SHA、MD5 等)以及消息认证码(HMAC)等。
  • 特点:
    OpenSSL 的核心加密库,为高层的协议支持库(如 libssl)以及其它应用提供基础加密操作支持。
Read more »

1. SSL (Secure Sockets Layer)

  • SSL 1.0

    • 1994 年由网景(Netscape)内部开发,但从未公开发布。
    • 主要目标是为 Web 浏览器与服务器之间提供加密通信,但在设计上存在严重缺陷。
  • SSL 2.0 (1995)

    • 第一个公开发布的版本,试图解决 SSL 1.0 的一些问题。
    • 存在许多安全问题,包括对消息完整性和加密协商的不充分保护,最终导致开发团队迅速推出新版。
  • SSL 3.0 (1996)

    • 作为 SSL 2.0 的改进版本,提供了更好的安全性和兼容性。
    • SSL 3.0 在协议设计、加密算法选择上做了较大改善,然而随着攻击方式的发展,如 POODLE 攻击,现今已不再被推荐使用。

2. TLS (Transport Layer Security)

Read more »

SSL 证书(Secure Sockets Layer Certificate)是用于在网络通信中实现加密和身份验证的数字证书。根据用途、验证级别和覆盖范围的不同,SSL 证书可以分为多种类型。


一、按验证级别分类

SSL 证书的验证级别决定了证书颁发机构(CA)对申请者的身份验证严格程度,适用于不同的安全需求。

Read more »

在 MySQL 8.0 中重置 root 密码的过程与早期版本略有不同,主要因为默认认证插件从 mysql_native_password 变成了 caching_sha2_password,并且安全机制有所增强。


前提条件

  • 你有服务器的管理员权限(例如通过 sudo 或 root 用户)。
  • MySQL 服务正在运行或可以被启动。
Read more »

Ansible 是一个开源的自动化工具,由 Red Hat 开发,用于配置管理、应用部署、任务自动化和 IT 编排。它以简单易用、无需代理(agentless)和强大的功能而著称,广泛应用于服务器管理、DevOps 流程和基础设施自动化。


env

  • ubuntu/jammy
  • ansible-2.10.7
Read more »
0%