K8s EphemeralContainer临时容器解读

 更新时间:2025年08月14日 09:57:36   作者:大新屋  
Kubernetes临时容器用于调试无shell容器,通过shareProcessNamespace参数实现安全登录与故障排查,排查后可删除,版本1.25及以上默认启用,需使用预装debug工具的镜像(如busybox)

提示:kubernetes 官网EphemeralContainer临时容器说明文档 https://kubernetes.io/docs/concepts/workloads/pods/ephemeral-containers/

EphemeralContainer临时容器主要用于临时登录Pod中没有bash或sh命令的容器,临时容器debug-tools工具通过shareProcessNamespace参数临时登录到Pod资源的容器进行故障排查问题等操作,临时容器排查完故障后,可立即删除该临时容器,提高了K8s安全性。

一、临时容器功能开启

提示:如果K8s 版本小于1.25需要手动开启临时容器功能,如果K8s版本大于1.25(包括1.25版本)默认已开启临时容器功能

1、开启临时容器(二进制方式安装的K8s)

### K8s版本小于1.25开启临时容器功能操作
vim /usr/lib/systemd/system/kube-apiserver.service
# 添加以下参数并保存
-feature-gates=EphemeralContainers=true

vim /etc/kubernetes/kubelet-conf.yml
# 添加以下参数并保存
featureGates:
EphemeralContainers: true

# 重启所有服务kube-apiserver和kubelet
systemctl restart kube-apiserver
sytemctl restart kubelet

2、开启临时容器(kubeadm方式安装的K8s)

### K8s版本小于1.25开启临时容器功能操作
vim /etc/kubernetes/manifests/kube-apiserver.yam
# 添加以下参数并保存
--feature-gates=EphemeralContainers=true

vim /var/lib/kubelet/config.yaml
# 添加以下参数并保存
featureGates:
EphemeralContainers: true

# 重启kubelet
sytemctl restart kubelet

二、临时容器使用

注意:Pod资源的容器已被注入了临时容器只要Pod重启后临时容器自动会消失

提示:busybox镜像已安装了debug-tools工具,没有debug-tools工具的镜像是无法注入临时容器到Pod资源的容器里

### 使用kubectl create命令创建一个Deployment
kubectl create deploy nginx-deploy -n default --image=registry.cn-shenzhen.aliyuncs.com/dockerghost/nginx:1.24
kubectl get deploy -n default
kubectl get pods -n default

### 测试Nginx容器中没有wget命令
kubectl exec nginx-deploy-77f75cbd7f-nmvzj -n default -- wget www.baidu.com

### 注入busybox临时容器到Pod资源的容器里
kubectl debug nginx-deploy-77f75cbd7f-nmvzj -it --image=registry.cn-shenzhen.aliyuncs.com/dockerghost/busybox -n default

### 此时Nginx容器可以使用wget命令
wget www.baidu.com

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • K8s实战教程之容器和 Pods资源分配问题

    K8s实战教程之容器和 Pods资源分配问题

    这篇文章主要介绍了K8s实战教程之容器和 Pods资源分配,本篇文章通过配置集群中运行的容器的 CPU 请求和限制,你可以有效利用集群上可用的 CPU 资源,通过将 Pod CPU 请求保持在较低水平,可以使 Pod 更有机会被调度,需要的朋友可以参考下
    2022-07-07
  • k3s安装部署流程

    k3s安装部署流程

    文章详细介绍了如何在国内配置K3s镜像源、部署仪表盘、配置角色和权限、获取仪表盘token、进行端口转发以及使用nerdctl和buildkitd构建容器镜像的方法,并附带了注意事项和验证步骤
    2026-01-01
  • k8s无法删除pv,pvc的问题及解决

    k8s无法删除pv,pvc的问题及解决

    在Kubernetes中删除PVC时,若未指定名称或使用错误参数,会报错"no name was specified",解决方法为:使用`kubectl delete pvc <pvc-name>`明确指定PVC名称,或通过`kubectl delete pvc --all`删除所有PVC,同时确保正确指定命名空间(-n)
    2025-09-09
  • Kubernetes调度管理优先级和抢占机制详解

    Kubernetes调度管理优先级和抢占机制详解

    这篇文章主要为大家介绍了Kubernetes调度管理优先级和抢占机制详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • 如何使用Kubernetes自定义资源(CRD)详解

    如何使用Kubernetes自定义资源(CRD)详解

    自定义资源定义(CRD)是Kubernetes API扩展,可以定义新的对象类型,下面这篇文章主要给大家介绍了关于如何使用Kubernetes自定义资源(CRD)的相关资料,需要的朋友可以参考下
    2022-09-09
  • CentOS 8.2 k8s 基础环境配置

    CentOS 8.2 k8s 基础环境配置

    这篇文章主要介绍了CentOS 8.2 k8s 基础环境配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • 在 k8s 中部署Jenkins的实践指南(最新推荐)

    在 k8s 中部署Jenkins的实践指南(最新推荐)

    本文介绍了在Kubernetes(K8s)中部署Jenkins的方法和步骤,包括准备K8s集群、选择Jenkins镜像、创建存储资源、账号授权、部署Jenkins、创建Service以及访问测试,Jenkins在K8s中的部署可以实现动态资源管理、提高可靠性和容错能力、快速响应变化和统一环境等优势
    2025-03-03
  • K8s Pod容器中的command和args指令详解

    K8s Pod容器中的command和args指令详解

    这篇文章主要介绍了K8s新手系列之Pod容器中的command和args指令的相关资料,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-05-05
  • Podman开机自启容器实现过程及与Docker对比

    Podman开机自启容器实现过程及与Docker对比

    这篇文章主要为大家介绍了Podman开机自启容器实现过程,通过示例代码的形式进行演绎过程,有需要的朋友可以参考下,希望可以有所帮助
    2021-09-09
  • 详解Kubernetes 中容器跨主机网络

    详解Kubernetes 中容器跨主机网络

    这篇文章主要为大家介绍了Kubernetes中容器跨主机网络是怎么样的,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04

最新评论