云其它

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > 云其它 > K8s EphemeralContainer临时容器

K8s EphemeralContainer临时容器解读

作者:大新屋

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

总结

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

您可能感兴趣的文章:
阅读全文