k8s临时容器
1.环境依赖
k8s版本:v1.25+ #低于1.25自行百度开启临时容器功能
创建一个测试pod
debug容器镜像
2.创建临时容器
# debugger:容器名称 --copy-to:pod名称 --image:临时容器的镜像 --same-node:是否和被debug容器在同一节点上 --share-processes:是否和被debug容器共享进程空间
kubectl debug -n default pod-demo -c debugger --copy-to=my-debugger --image=registry.cn-hangzhou.aliyuncs.com/mq_basic/centos7-debug:v1 --same-node=true --share-processes=true
kubectl get pods
NAME READY STATUS RESTARTS AGE
my-debugger 2/2 Running 0 16m
pod-demo 1/1 Running 0 52m
3.进入容器
#注意 pod和容器名称和创建时保持一致
kubectl -n default exec -it my-debugger -c debugger -- /bin/bash
4.调试容器
[root@my-debugger ~]# ps aux #查看两个容器的所有进程
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
65535 1 0.0 0.0 956 4 ? Ss 06:41 0:00 /pause
root 6 0.0 0.0 13736 2360 ? Ss 06:41 0:00 nginx: master process nginx -g daemon off; #myapp 容器进程
100 12 0.0 0.0 14184 1272 ? S 06:41 0:00 nginx: worker process
root 13 0.0 0.0 4400 352 ? Ss 06:41 0:00 tail -f /dev/stdout #debug 容器进程
root 66 0.0 0.0 11828 1884 pts/0 Ss 07:01 0:00 /bin/bash
root 80 0.0 0.0 51732 1712 pts/0 R+ 07:01 0:00 ps aux
[root@my-debugger ~]# ls /proc/6/root/ # ls /proc/6/root/ #等同于在被debug容器中执行ls /,其中6表示被debug容器中启动进程的进程ID
bin dev etc home lib media mnt proc root run sbin srv sys tmp usr var
[root@my-debugger ~]# ls /proc/6/root/usr/share/nginx/html/ #查看被debug容器Nginx相关文件
50x.html index.html
[root@my-debugger ~]# ls /proc/13/root/ #同上,13为当前容器启动进程的进程ID
anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
"一劳永逸" 的话,有是有的,而 "一劳永逸" 的事却极少