Docker kubectl测井显示';标准“u init”linux.go:211:exec用户进程导致”;没有这样的文件或目录';

Docker kubectl测井显示';标准“u init”linux.go:211:exec用户进程导致”;没有这样的文件或目录';,docker,events,knative,Docker,Events,Knative,我正在尝试为knative服务创建一个containerSource。当我对图像使用docker run时,它会给出输出(“或代码中的错误”)。但是,当我应用yaml文件时,kubectl日志显示“standard_init_linux.go:211:exec用户进程导致”没有这样的文件或目录“。docker运行表明它能够找到exec文件。所以我无法理解出了什么问题。有人请带我过去 我的yaml文件: apiVersion: sources.eventing.knative.dev/v1alph

我正在尝试为knative服务创建一个containerSource。当我对图像使用docker run时,它会给出输出(“或代码中的错误”)。但是,当我应用yaml文件时,kubectl日志显示“standard_init_linux.go:211:exec用户进程导致”没有这样的文件或目录“。docker运行表明它能够找到exec文件。所以我无法理解出了什么问题。有人请带我过去

我的yaml文件:

apiVersion: sources.eventing.knative.dev/v1alpha1
kind: ContainerSource
metadata:
  labels:
    controller-tools.k8s.io: "1.0"
  name: cloudevents-source
spec:
  image: docker.io/username/pkt-event:latest
  args:
   - '--debug=true'
  sink:
    apiVersion: serving.knative.dev/v1alpha1
    kind: Service
    name: event-display
dockerimage的go代码为:

package main

import (
        "context"
        "flag"
        "fmt"
        "log"
        "os"
        "time"
        "github.com/satori/go.uuid"
        "knative.dev/eventing-contrib/pkg/kncloudevents"
        "encoding/json"
//      "io/ioutil"
//      "knative.dev/eventing-contrib/vendor/github.com/cloudevents/sdk-go/pkg/cloudevents"
        "github.com/cloudevents/sdk-go/pkg/cloudevents"
        "github.com/cloudevents/sdk-go/pkg/cloudevents/types"
        "github.com/kelseyhightower/envconfig"
)


var (
        eventSource string
        eventType   string
        sink        string
)
//var u, _ =  uuid.NewV4()

var debug = flag.Bool("debug", false, "Enable debug mode (print more information)")
var source = flag.String("source", uuid.NewV4().String(), "Set custom Source for the driver")

func init() {
        flag.StringVar(&eventSource, "eventSource", "", "the event-source (CloudEvents)")
        flag.StringVar(&eventType, "eventType", "dev.knative.eventing.samples.pkt", "the event-type (CloudEvents)")
        flag.StringVar(&sink, "sink", "", "the host url to send pkts to")
}

type envConfig struct {
        // Sink URL where to send heartbeat cloudevents
        Sink string `envconfig:"SINK"`
}

func main() {
        flag.Parse()

        var env envConfig
        if err := envconfig.Process("", &env); err != nil {
                log.Printf("[ERROR] Failed to process env var: %s", err)
                os.Exit(1)
        }

        if env.Sink != "" {
                sink = env.Sink
        }

        if eventSource == "" {
                eventSource = fmt.Sprintf("https://knative.dev/eventing-contrib/cmd/heartbeats/#local/demo")
                log.Printf("Source: %s", eventSource)
        }
        client, err := kncloudevents.NewDefaultClient(sink)
        if err != nil {
                log.Fatalf("failed to create client: %s", err.Error())
        }
        var period time.Duration
        period = time.Duration(1) * time.Second

        ticker := time.NewTicker(period)
        for {
                content := "Send data"
                data, err := json.Marshal(content)
                if err != nil {
                        fmt.Println(err)
                }
                event := cloudevents.Event{
                        Context: cloudevents.EventContextV02{
                                Type:   "packet.invoke",
                                Source: *types.ParseURLRef(eventSource),
                                /*Extensions: map[string]interface{}{
                                        "the":   42,
                                        "heart": "yes",
                                        "beats": true,
                                },*/
                        }.AsV02(),
                        Data: data,
                }
                if *debug{
                        log.Printf("Sending event %v", event)
                } else {
                        if _, err := client.Send(context.TODO(), event); err != nil {
                                log.Printf("failed to send cloudevent: %s", err.Error())
                        }
                }

                <-ticker.C
        }
}

出现这个问题是因为您试图从bash运行二进制文件,但scratch没有bash


我通常用阿尔皮纳代替。要为alpina构建,您需要相同的环境变量,因此可能只需要更改第二阶段映像。

出现此问题的原因是您试图从bash运行二进制文件,但scratch没有bash


我通常用阿尔皮纳代替。要为alpina构建,您需要相同的环境变量,因此可能只需要更改第二阶段映像。

你好,伊利亚·卡兹纳切夫,我尝试了alpine和ubuntu:disco,但错误总是一样的。exec用户进程导致“没有这样的文件或目录”。事实上,我的docker run ti运行正常,只是当我应用yaml文件时,它失败了。有趣的是,当我将yaml文件改为image myevent而不是pkt事件时,它工作了。然而,我使用了相同的Dockerfile和代码。pkt事件产生问题有什么原因吗?嗨,伊利亚·卡兹纳切夫,我试过阿尔卑斯山和ubuntu:disco,但错误总是一样的。exec用户进程导致“没有这样的文件或目录”。事实上,我的docker run ti运行正常,只是当我应用yaml文件时,它失败了。有趣的是,当我将yaml文件改为image myevent而不是pkt事件时,它工作了。然而,我使用了相同的Dockerfile和代码。pkt事件产生问题的原因是什么?
FROM golang:1.12 as builder
RUN go version

WORKDIR ${GOPATH}/src/Event-driver

COPY ./ ./

RUN  curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
##RUN dep ensure

RUN dep init
RUN dep ensure

RUN CGO_ENABLED=0 GOARCH=amd64 GOOS=linux go build -v -o my-event my-event.go

RUN pwd && ls

FROM scratch
#FROM ubuntu:disco
COPY --from=builder /go/src/Event-driver/my-event /


ENTRYPOINT ["/my-event"]