Docker 库伯内特斯吊舱里需要一个旋度二进制文件吗
我想把自己塞进库伯内特斯吊舱,执行一个CURL命令。不幸的是,我在任何地方都找不到可以使用curl(并与kubernetes兼容)的工作图像。Docker 库伯内特斯吊舱里需要一个旋度二进制文件吗,docker,curl,kubernetes,alpine,Docker,Curl,Kubernetes,Alpine,我想把自己塞进库伯内特斯吊舱,执行一个CURL命令。不幸的是,我在任何地方都找不到可以使用curl(并与kubernetes兼容)的工作图像。 我尝试了一些带有Alpine和CURL的docker图像,但每次都以crashLoopBackOff结束。我猜这意味着容器退出,因为docker映像在执行自身后退出 我还试着单独使用alpine和ubuntu的图像,但每次都以crashloopBackOff结束 我设法在一些图像中执行,但它从来没有安装过CURL,APT-GET和APK都不起作用 要执行
kubectl exec-it POD\u ID/bin/bash
有人知道最小的docker映像包含卷曲二进制文件并且不会在kubernetes中崩溃吗
PS:这是为了测试,所以它不需要是岩石固体或任何东西
Thx
更新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
,因为容器在启动后完成,因为它没有任何任务要处理。简单的解决方法是在容器中运行命令,使其无限期运行。这样您就可以在容器中执行并运行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
按需启动其中一个吊舱。
i、 e
这将从
tutum/curl
图像创建一个名为curl
的部署,并在其中提供一个交互式(-it
)shell。退出时,部署将被删除(--rm
)。从中使用byrnedo/alpine curl
图像。
此外,部署中不需要有latest
标记。没有它就行了,只是
containers:
- name: blue-website
image: byrnedo/alpine-curl
由于某种原因,您将遇到
紧急回退。您可以共享您尝试过的yaml文件吗?@EmruzHossain我更新了我的问题:-)您可能正在查找kubectl run
。Kubernetes的一般模型不是让空闲的豆荚坐在那里等待用户执行它们;如果一个容器启动,无事可做,并立即退出,您将得到crashLoopBackOff
状态。@DavidMaze是的,我也这么认为……谢谢您的回答。它工作得很好!我更希望有一个.yaml,虽然:-)理解。我更喜欢按需旋转这样的东西,因为对于yaml清单,您通常必须执行类似于sleep 3000
的操作,以确保过程不会立即结束。在我看来,当你在某物中间时,容器可能会退出。另外,当你不积极使用豆荚时,你也不会有豆荚挂在周围,而是每个豆荚都有自己的豆荚。谢谢你的回答。不幸的是,部署它。yaml没有创建任何POD,导致命令行无法工作。这非常有用。谢谢谢谢你的回答。它起作用了!Httpbin确实有一个curl二进制文件可用,.yaml可以工作。尽管我要指出,httpbin似乎在不使用“command”键的情况下工作。我猜这意味着httpbin不会自动退出,它不工作。我突然退却了。这可能是因为入口点在某个点退出,导致容器崩溃。是的,我明白了。然后,按照上面switchember.op的建议,将docker图像替换为tutum/curl
。是的,原因是容器中没有正在运行的进程,所以pod只是停止,因此您有crashLoopbackOff。您可以在部署规范中使用sleep命令以及一些简单的映像,如byrnedo/alpine curl
,或者使用tututum/curl
,这是一个服务器列表,位于端口80上,并且安装了curl
containers:
- name: blue-website
image: byrnedo/alpine-curl