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