0%

Podman 完整安装与配置指南

一、安装 Podman

各平台安装方法:

  1. Linux 系统

    1
    2
    3
    4
    5
    6
    7
    8
    
    # Ubuntu/Debian
    sudo apt update && sudo apt install -y podman
    
    # RHEL/CentOS
    sudo yum install -y podman
    
    # Fedora
    sudo dnf install -y podman
  2. macOS 系统

    1
    2
    3
    4
    5
    6
    
    # 使用 Homebrew 安装
    brew install podman
    
    # 初始化虚拟机
    podman machine init
    podman machine start
  3. Windows 系统

    1
    2
    3
    4
    5
    6
    
    # 使用 Winget 安装
    winget install RedHat.Podman
    
    # 初始化 WSL 环境
    podman machine init
    podman machine start

官方安装文档: https://podman.io/docs/installation

Go pprof 性能分析工具指南

1. 概述

本文档系统介绍了 Go 语言中 pprof 性能分析工具的使用方法,重点分析不同 profiling 工具(goroutine、profile、heap 等)的适用场景,帮助开发者针对性地选择性能分析工具。

2. 各工具使用场景

2.1 Goroutine 分析

适用场景

  • goroutine 泄漏检测:程序运行中 goroutine 数量持续增长不下降
  • 阻塞问题排查:怀疑存在 goroutine 阻塞或死锁问题
  • 并发模型分析:需要了解程序并发模型和 goroutine 分布情况
  • 高并发调优:高并发场景下的性能问题排查

1、panic、阻塞 链路场景

1、在 Go 语言中,channel 如果使用不当,可能会导致 panic。以下是操作 channel 时可能引发 panic 的常见场景:

  1. 向已关闭的 channel 发送数据

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    package main
    
    import "fmt"
    
    func main() {
        ch := make(chan int)
        close(ch)
        ch <- 1 // panic: send on closed channel
    }

    原因:一旦 channel 被关闭,再向其发送数据会触发 panic。

    修复:确保只有发送方可以关闭 channel,并通过同步机制(如 sync.WaitGroup)避免并发关闭或发送。可以设计一个明确的关闭策略,例如使用状态标志来指示 channel 是否已关闭。

kubelet cri containerd cni runc 之间的业务交互流程

1. kubelet 与底层交互的过程演变:

底层 cri 演变过程

背景:

在 Kubernetes 集群中部署容器化应用时,若依赖的远程数据源出现异常且无法在本地测试环境模拟相同数据条件,可能导致问题难以在开发环境中重现。此时,需要使用远程 dlv 调试技术对生产环境中的容器实例进行实时诊断和问题追踪。

实现过程: