由于 ContainerCannotRun,kubernetes 无法启动 pod

Joh*_*ohn 6 java docker kubernetes

我是 kubernetes 的新手。最近设置了 1 个主节点和 1 个节点的 kubernetes 集群。

我可以通过sudo docker run <docker-image>在我的节点机器上运行来启动一个 docker 容器 。

但是我无法使用 kubernetes yml 文件将 docker 容器作为 pod 启动。通过跑步sudo kubectl create -f deployment.yml

我描述了 pod 信息并看到了这个错误信息。

      Last State:   Terminated
      Reason:       ContainerCannotRun
      Message:      OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"HOSTNAME\": executable file not found in $PATH": unknown
      Exit Code:    128
Run Code Online (Sandbox Code Playgroud)

docker 容器假设启动一个 java 可执行文件。这是我的部署文件

kind: Service
apiVersion: v1
metadata:
  name: service1-service
spec:
  selector:
    app: service1
  ports:
    - protocol: "TCP"
      # Port accessible inside cluster
      port: 26666
      # Port to forward to inside the pod
      targetPort: 26666
      # Port accessible outside cluster
      nodePort: 26666
  type: LoadBalancer

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: service1-depolyment
spec:
  selector:
    matchLabels:
      app: service1
  replicas: 1
  template:
    metadata:
      labels:
        app: service1
    spec:
      containers:
        - name: service1
          image: service1-docker-image
          imagePullPolicy: Never
          ports:
            - containerPort: 26666
          # args: ["HOSTNAME", "KUBERNETES_PORT"]
Run Code Online (Sandbox Code Playgroud)

在这个部署文件中,我尝试创建一个 nginx 和一个 java web 应用程序服务。

这是因为我定义了错误的 apiVersion 和 kind ?

任何帮助,将不胜感激。

小智 4

看看这个错误exec: \"HOSTNAME\": executable file not found in $PATH

我遇到了类似的错误,因为容器无法找到 docker“CMD”二进制文件,因为我给了它错误的路径。检查文件的路径,这应该可以解决问题。