需要在Kubernetes Pod中使用CURL二进制文件

时间:2018-11-13 17:27:48

标签: docker curl kubernetes alpine

我想将自己隐藏在kubernetes容器中并执行CURL命令。不幸的是,我在任何地方都找不到可卷曲的工作图像(并且与kubernetes兼容)...

  1. 我使用Alpine和CURL尝试了一些docker镜像,但是每次它以crashLoopBackOff结尾。我想这意味着容器已退出,因为docker映像在执行自身后退出了...
  2. 我还尝试过单独使用alpine和ubuntu的图像,但是每次也都以crashloopBackOff结尾。
  3. 我设法执行了一些图像,但是它从未安装过CURL,并且APT-GET或APK均未运行。

要执行到容器中,我正在做一个简单的kubectl exec -it POD_ID /bin/bash

有人知道一个包含CURL二进制文件且不会在kubernetes中崩溃的最小docker镜像吗?

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

我不认为它坏了,因为它适用于某些图像。

4 个答案:

答案 0 :(得分:3)

您可以跳过清单,并使用kubectl run根据需要旋转其中一个吊舱。 即

kubectl run curl -it --rm --image=tutum/curl -- sh

这将根据curl映像创建名为tutum/curl的部署,并在其中提供一个交互式(-it)外壳。退出时,部署将被删除(--rm)。

答案 1 :(得分:2)

您之所以得到<select> <option value="null">Select...</option> <option value="venusaur">Venusaur</option> <option value="blastoise">Blastoise</option> <option value="charizard">Charizard</option> </select> <div id="result"></div>,是因为容器没有任何要处理的任务,因此在启动后即完成。一种简单的解决方法是在容器中运行命令以使其无限期运行。这样您就可以执行到容器中并运行curl了。

在这里,对Yaml进行了修改:

CrashLoopBackOff

答案 2 :(得分:1)

您可以使用此图像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

答案 3 :(得分:0)

使用https://hub.docker.com/r/byrnedo/alpine-curl/中的byrnedo/alpine-curl图像。 另外,在部署中不必使用latest标签。没有它就可以工作,只是

containers:
  - name: blue-website
    image: byrnedo/alpine-curl