Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 库伯内特斯吊舱里需要一个旋度二进制文件吗_Docker_Curl_Kubernetes_Alpine - Fatal编程技术网

Docker 库伯内特斯吊舱里需要一个旋度二进制文件吗

Docker 库伯内特斯吊舱里需要一个旋度二进制文件吗,docker,curl,kubernetes,alpine,Docker,Curl,Kubernetes,Alpine,我想把自己塞进库伯内特斯吊舱,执行一个CURL命令。不幸的是,我在任何地方都找不到可以使用curl(并与kubernetes兼容)的工作图像。 我尝试了一些带有Alpine和CURL的docker图像,但每次都以crashLoopBackOff结束。我猜这意味着容器退出,因为docker映像在执行自身后退出 我还试着单独使用alpine和ubuntu的图像,但每次都以crashloopBackOff结束 我设法在一些图像中执行,但它从来没有安装过CURL,APT-GET和APK都不起作用 要执行

我想把自己塞进库伯内特斯吊舱,执行一个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