Kubernetes 1.25 ile geliyor. Açıklaması şöyle. Yani içinde shell olmayan bir container'ı bir şekilde bir başka container ile sarmalıyor ve shell erişimi veriyor.
Ephemeral containers are useful for interactive troubleshooting when kubectl exec is insufficient because a container has crashed or a container image doesn’t include debugging utilities, such as with distroless images.You can use the kubectl debug command to add ephemeral containers to a running Pod.
Örnek
Şöyle yaparız. Image distroless olduğu için içinde shell yok ve hata alırız
# run the containerkubectl run node --image=gcr.io/distroless/nodejs18-debian11:latest --command -- /nodejs/bin/node -e "while(true) { console.log('hello') }" # Try opening a shell to the container kubectl exec -it node -- sh // Output OCI runtime exec failed: exec failed: unable to start container process: exec: "sh": executable file not found in $PATH: unknown command terminated with exit code 126
Şöyle yaparız. Burada sarmalamak için bash kullanılıyor
kubectl debug -it \ --image=bash \ # Image to attach. As we want a shell, we are using bash --target=node \ # Name of the container to attach to node # For some reason I don’t understand, we must repeat it
Örnek
Şöyle yaparız. Burada sarmalamak için busybox kullanılıyor
kubectl alpha debug -it podname --image=busybox --target=containername
Örnek
Şöyle yaparız. Burada sarmalamak için busybox kullanılıyor
kubectl debug pod/myapp-pod -it \ --image=busybox \ --copy-to=myapp-debug --container=myapp-container