0x01 前言
临时容器主要用于调试和排查问题。当 Pod 中的容器镜像很小,缺少常用工具(如 netstat、curl、ping 等)时,临时容器可以帮助你在不改变 Pod 原有配置的情况下,快速加载这些工具进行诊断。临时容器是独立于 Pod 主容器的,不会影响其运行,可以在需要时添加并删除,便于实时调试和故障排除。
0x02 使用临时容器debug
1、前置条件
(1)临时容器功能是在 Kubernetes v1.16 版本中引入的,确保自己的集群版本号支持:kubectl version --short
(2)编辑 kube-apiserver 的配置文件,并添加 --feature-gates=EphemeralContainers=true,然后重启 API server。
要检查是否启用了 EphemeralContainers,你可以运行以下命令:kubectl api-resources | grep ephemeral
如果启用,该命令的输出将包含 ephemeralcontainers。
2、使用临时容器
可以通过 kubectl debug 命令来注入临时容器到一个已存在的 Pod。kubectl debug 允许你在一个运行中的 Pod 中添加一个临时容器进行调试。
# 获取一个pod名字
[root@k8s-test-master ~]# kubectl get pod -n dev-test |grep dxp
xfshcloud-dxp-557c4c9c96-t4ljj 1/1 Running 1 24h
# 给指定的 Pod 注入一个临时容器进行debug
kubectl debug xfshcloud-dxp-557c4c9c96-t4ljj -n dev-test --image=172.30.82.223:5443/base/centos:7.9-tcping --target=xfshcloud-dxp-557c4c9c96-t4ljj --container=debug-container --stdin --tty
发表评论