在 kubernetes pod 中需要一个可用的 CURL 二进制文件
Need a CURL binary availble inside kubernetes pod
我想将自己放在 kubernetes pod 中并执行 CURL 命令。不幸的是,我在任何地方都找不到可以使用 curl(并且与 kubernetes 兼容)的工作图像...
- 我用 Alpine 和 CURL 尝试了一些 docker 图像,但每次都以 crashLoopBackOff 结束。我猜这意味着容器退出了,因为 docker 图像在执行自身后退出...
- 我也尝试单独使用 alpine 和 ubuntu 的图像,但每次它也以 crashloopBackOff 结束。
- 我设法在一些图像中执行,但它从未安装 CURL,APT-GET 或 APK 都无法正常工作。
要执行到容器中,我正在做一个简单的 kubectl exec -it POD_ID /bin/bash
有人知道包含 CURL 二进制文件且不会在 kubernetes 中崩溃的最小 docker 图像吗?
PS:这是为了测试目的,所以它不需要坚如磐石或任何东西
感谢
更新 1
这是我用来部署所有潜在图像的 yaml :
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: blue
namespace: default
spec:
replicas: 1
template:
metadata:
labels:
name: blue
spec:
containers:
- name: blue-website
image: SOME_IMAGE:latest
resources:
requests:
cpu: 0.1
memory: 200
我不认为它坏了,因为它适用于某些图像。
你可以使用这张图片nightfury1204/alpine-curl
我为了自己的测试目的创建了上面的图像。
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: curl
labels:
name: curl
spec:
serviceName: "curl"
selector:
matchLabels:
app: curl
replicas: 1
template:
metadata:
labels:
app: curl
spec:
containers:
- name: curl
image: nightfury1204/alpine-curl
command:
- "sh"
- "-c"
- >
while true; do
sleep 3600;
done
要执行到 pod 中,请使用此 kubectl exec -it curl-0 sh
您得到 CrashLoopBackOff
是因为容器在启动后完成,因为它没有任何任务要处理。简单的解决方法是 运行 容器中的命令以无限期地保持它 运行ning。这样你就可以执行到容器中并 运行 curl.
在这里,修改yaml来做到这一点:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: blue
namespace: default
spec:
replicas: 1
template:
metadata:
labels:
name: blue
spec:
containers:
- name: blue-website
image: scrapinghub/httpbin:latest
command:
- sleep
- "3600"
resources:
requests:
cpu: 0.1
memory: 200
您可以跳过清单并根据需要使用 kubectl run
启动其中一个 pods。
即
kubectl run curl -it --rm --image=curlimages/curl -- sh
这将从 curlimages/curl
图像创建一个名为 curl
的部署,并在其中为您提供交互式 (-it
) shell。当您退出时,部署将被删除 (--rm
)。
使用来自 https://hub.docker.com/r/byrnedo/alpine-curl/ 的 byrnedo/alpine-curl
图片。
也没有必要在部署中使用 latest
标记。没有它也能工作,只是
containers:
- name: blue-website
image: byrnedo/alpine-curl
我想将自己放在 kubernetes pod 中并执行 CURL 命令。不幸的是,我在任何地方都找不到可以使用 curl(并且与 kubernetes 兼容)的工作图像...
- 我用 Alpine 和 CURL 尝试了一些 docker 图像,但每次都以 crashLoopBackOff 结束。我猜这意味着容器退出了,因为 docker 图像在执行自身后退出...
- 我也尝试单独使用 alpine 和 ubuntu 的图像,但每次它也以 crashloopBackOff 结束。
- 我设法在一些图像中执行,但它从未安装 CURL,APT-GET 或 APK 都无法正常工作。
要执行到容器中,我正在做一个简单的 kubectl exec -it POD_ID /bin/bash
有人知道包含 CURL 二进制文件且不会在 kubernetes 中崩溃的最小 docker 图像吗?
PS:这是为了测试目的,所以它不需要坚如磐石或任何东西
感谢
更新 1 这是我用来部署所有潜在图像的 yaml :
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: blue
namespace: default
spec:
replicas: 1
template:
metadata:
labels:
name: blue
spec:
containers:
- name: blue-website
image: SOME_IMAGE:latest
resources:
requests:
cpu: 0.1
memory: 200
我不认为它坏了,因为它适用于某些图像。
你可以使用这张图片nightfury1204/alpine-curl
我为了自己的测试目的创建了上面的图像。
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: curl
labels:
name: curl
spec:
serviceName: "curl"
selector:
matchLabels:
app: curl
replicas: 1
template:
metadata:
labels:
app: curl
spec:
containers:
- name: curl
image: nightfury1204/alpine-curl
command:
- "sh"
- "-c"
- >
while true; do
sleep 3600;
done
要执行到 pod 中,请使用此 kubectl exec -it curl-0 sh
您得到 CrashLoopBackOff
是因为容器在启动后完成,因为它没有任何任务要处理。简单的解决方法是 运行 容器中的命令以无限期地保持它 运行ning。这样你就可以执行到容器中并 运行 curl.
在这里,修改yaml来做到这一点:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: blue
namespace: default
spec:
replicas: 1
template:
metadata:
labels:
name: blue
spec:
containers:
- name: blue-website
image: scrapinghub/httpbin:latest
command:
- sleep
- "3600"
resources:
requests:
cpu: 0.1
memory: 200
您可以跳过清单并根据需要使用 kubectl run
启动其中一个 pods。
即
kubectl run curl -it --rm --image=curlimages/curl -- sh
这将从 curlimages/curl
图像创建一个名为 curl
的部署,并在其中为您提供交互式 (-it
) shell。当您退出时,部署将被删除 (--rm
)。
使用来自 https://hub.docker.com/r/byrnedo/alpine-curl/ 的 byrnedo/alpine-curl
图片。
也没有必要在部署中使用 latest
标记。没有它也能工作,只是
containers:
- name: blue-website
image: byrnedo/alpine-curl