我正在使用busybox来检测kubernetes v1.18 pod中的网络问题。我这样创建了busybox:
{
"query": {
"bool": {
"filter": [
{
"term": {
"field1": "field1Value"
}
}
]
}
}
}
并登录以找到kubernetes集群的网络状况:
apiVersion: v1
kind: Pod
metadata:
name: busybox
namespace: default
spec:
containers:
- name: busybox
image: busybox:1.28
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
restartPolicy: Always
令我惊讶的是,busybox不包含卷曲。为什么bosybox没有打包curl命令?我从互联网上搜索,没有文档谈论如何将curl添加到busybox。我尝试安装curl,但是找不到任何方法。是否有将 kubectl exec -it busybox /bin/bash
软件包添加到busybox中以便我可以使用它?
答案 0 :(得分:5)
简短的答案是,你不能。
因为busybox没有像yum,apk或apt-get那样的软件包管理器。
1。要么使用修改后的busybox
您可以使用其他progrium/busybox之类的busybox映像,该映像提供 opkg-install 作为程序包管理器。
image: progrium/busybox
然后:
kubectl exec -it busybox -- opkg-install curl
2。或者,如果您想使用最小的图像,则可以使用高山
image: alpine:3.12
然后:
kubectl exec -it alpine -- apk --update add curl
答案 1 :(得分:4)
不。考虑将alpine
作为基础映像,而不是包含BusyBox加上程序包管理器的基本映像,或者构建(或查找)具有需要预先安装的工具的自定义映像。
BusyBox被构建为单个二进制文件,其中包含许多常见Linux工具的实现。 BusyBox documentation包含所包含命令的列表。您必须先编写C代码,才能在其中“安装”更多命令。
BusyBox确实包含wget
的实现,该实现可能适合您的目的(wget -O- http://other-service
)。
答案 2 :(得分:3)
正如@abdennour 所暗示的那样,我不再坚持使用 console
。正如其他人在此处建议的那样,Alpine 是一个非常轻量级的 Linux 容器映像,您可以在其中安装任何方便的类 UNIX 工具来完成您的故障排除任务。事实上,我在 busybox
的 dotfiles 中使用这个函数来旋转一个方便的临时准备摇滚 Alpine pod:
.bashrc