首页 > 解决方案 > 在 Docker-Compose 上运行的应用程序在 k8s 上无法运行

问题描述

我正在使用下面的 docker-compose。它工作稳定。但我在 Kubernetes 中遇到错误。

docker-compose.yaml

version: "3.3"
services:

  test:
    image: docker.local/test/test:1.0
    container_name: test
    environment:
      RUN_USER: test
      RUN_USER_ID: 1000
      JAVA_OPTS:
          "-Dspring.profiles.active=pg,scm,api,admin,fts,ocr,async,task,proxy
          -Xms64m -Xmx4g"
    ports:
      - "8080:8000"
    extra_hosts:
      - "logserver:172.17.0.1"
    network_mode: bridge

我将我的应用程序移至 Kubernetes yaml。我将 docker compose 转换为 kubernetes。

Kubernetes.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-deployment
  labels:
    app: test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - env:
        - name: JAVA_OPTS
          value: -Dspring.profiles.active=sqlserver,scm,api,asyncOcr,task -Xms64m -Xmx2g"
        image: docker.local/test/test:0.1
        name: test
        ports:
        - containerPort: 8000
        resources: {}
      restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  name: test
  labels:
    app: test
spec:
  selector:
    app: test
  ports:
  - name: "8000"
    port: 8000
    targetPort: 8000

在 Kubernetes 中收到错误

Events:
  Type     Reason     Age                From                    Message
  ----     ------     ----               ----                    -------
  Normal   Scheduled  <unknown>          default-scheduler       Successfully assigned test/test-deployment-5754b65d8d-pdk6f to test-k8s-02
  Warning  Failed     37s                kubelet, test-k8s-02  Error: failed to start container "test": Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\\"/var/lib/kubelet/pods/4b7e15a3-d4e1-4259-8a5d-928cfa7d7ddb/volumes/kubernetes.io~secret/default-token-srrnd\\\" to rootfs \\\"/var/lib/docker/overlay2/bb226214b793aca2352989f2126a746a5e0c5c229f9e4cbbd58981d4ac3db1e3/merged\\\" at \\\"/var/lib/docker/overlay2/bb226214b793aca2352989f2126a746a5e0c5c229f9e4cbbd58981d4ac3db1e3/merged/run/secrets/kubernetes.io/serviceaccount\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

我在 ubernetes 中收到上述错误。

你能帮助我吗?

标签: dockerkubernetesdocker-composekubernetes-podmicrok8s

解决方案


推荐阅读