问题标签 [kompose]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
222 浏览

ssl - 当 Docker compose 为 Dotnet 核心项目工作时,Kubernetes 因 SSL 错误而失败

我是 Kubernetes 的新手,我正在本地开发中尝试其中的一些。在我在这里给出我的问题陈述之前是我的环境和我的项目的状态。

  1. 我有启用 WSL2 的 Windows 10 和通过 VS Code 运行的 Ubuntu。
  2. 我已经在 VS Code 中启用了所需的插件(如 Kubernetes、Docker 等)
  3. 我安装了启用了 WSL2 + Ubuntu + Kubernetes 的 Docker 桌面。
  4. 我通过 Docker 从本地系统 + ubuntu 获得了 ASP.Net Core 5 工作版本
  5. 我有 dockerfile + docker compose 文件,并且我已经对它们进行了测试,无论是否使用 SSL 端口,并且这些都可以使用 SSL,也可以不使用 SSL。(为此我修改了程序以接受非 SSL 请求)。

来到 docker 文件——它需要像 5000(对于非 SSL)和 5001(对于 SSL)这样暴露的端口进入 docker compose 文件——它需要像5000:805000:443

-- 它还具有用于 URL 的环境变量,例如

-- 它还具有证书路径的环境变量,例如

-- 它还有证书密码的环境变量,比如

现在,当我说它docker compose up --build构建项目并启动容器时。我可以通过 https://localhost:5001 和 http://localhost:5000 访问该站点

现在,来到 kubernets——我已经使用 kompose 工具来生成 kubernetes 特定的 yaml 文件——我没有对此进行任何更改。我运行了命令kompose convert -f docker-compose.yaml -o ./.k8 ——最后,我运行了kubectl apply -f .k8

它启动容器但立即失败。我检查了日志,它显示以下内容:

0 投票
1 回答
116 浏览

kubernetes - 使用 Kompose 将 docker-compose 转换为 kubernetes

我是 Kubernetes 的新手,我看到有一种方法可以运行 Kompose,但我收到了这个错误:

我怎样才能使这项工作?

系统信息:ubuntu18 客户端版本:version.Info:主要:“1”,次要:“21”

我也试着让它像这样工作:

我仅在 postgres-1-deployment.yaml 和 postgres-2-deployment.yaml 上收到此错误。

postgres-1-deployment.yaml 示例:

kompose 翻译 deploy.yml 文件的方式是否错误?我做了所有像在 kompose guid 上指导的事情

0 投票
1 回答
40 浏览

docker - Kompose 在来自 env 文件的名称中传播下划线

我一直在尝试将 intelowl [1] 部署到掌舵图中,但 kompose [2] 仍然保留名称中的下划线。有没有办法避免这种情况/我在翻译它时犯了错误,还是这是一个错误?

用于转换它的命令是./kompose convert -c -f ./intelowl/docker/default.yml -o intelowlchart

[1] https://github.com/intelowlproject/IntelOwl/tree/master/docker
[2] https://github.com/kubernetes/kompose/releases/download/v1.22.0/kompose-linux-amd64

0 投票
1 回答
49 浏览

docker - 将 Web 应用程序组件作为单个服务与 Kubernetes 中的多个服务运行

我有一个"india"依赖于 postgres 和 redis 的 Web 应用程序(例如)(例如,典型的 Rails 应用程序)。

我有一个docker-compose.yml组成容器的文件来启动这个应用程序。

我想用 Kubernetes 运行这个应用程序部署。我试图弄清楚如何正确构建 k8s 资源对象,我正在权衡两个选项:

  1. 我可以在 k8s 中构建indiapostgres-indiaredis-india作为单独的部署(因此是单独的服务)

  2. 我可以构建india,postgres-indiaredis-india作为单个部署(因此单个pod/ service

#2 对我个人来说更有意义——这里的所有 3 项都包含应该作为单个服务 URL 公开的整个“应用程序服务”(即 Web 应用程序的前端)。

但是,如果我使用自动化工具kompose将我的docker-compose.yml文件转换为 k8s 资源,它会遵循方法 #1 并创建三个单独的 k8s 服务。

我应该遵循“正确的方法”或标准吗?

谢谢!

0 投票
1 回答
144 浏览

postgresql - 将本地 docker 卷挂载到 kubernetes pod

我正在尝试在 microk8s kubernetes 集群上启动一个 postgres pod。目前,包含所有数据的 postgres 容器在主机上本地启动。

问题是:是否可以将当前卷(从本地 docker 卷)映射到 kubernetes pod 部署?

我曾经将 Kubernetes 部署kompose转换docker-compose.yml为适当的.yaml文件。

上述命令kompose创建postgres-deployment.yamlpostgres-service.yaml和 2 persistantvolumeclaims(从 docker-compose 中映射的卷中,一个用于 pg_data,另一个用于 init_db 脚本)。

我是否需要在自动生成的PersistantVolume映射旁边生成映射以及它们的外观?PersistantVolumeClaimskompose

编辑:使用下面的 yaml,我为 postgres 容器制作了 2volumes和 2 volumeclaims,为 init_db 脚本制作了数据 1。运行它然后公开服务端点是有效的。警告:因为数据库在 docker 主机容器和 kubernetes pod 上运行,同时发生数据损坏。

0 投票
1 回答
187 浏览

docker - com.mysql.cj.jdbc.exceptions.CommunicationsException:kubernetes MySQL 和 Spring Boot 上的通信链路故障

我面临一些我认为是我的 .yaml 文件的问题。Docker-compose 工作正常,容器按预期运行。但是在对文件进行 kompose 转换后,在 k8s 上没有产生预期的结果,并且我得到 com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure。

docker 容器中没有现有容器,并且 docker-compose down 之前在 kompose convert 中使用过。

mysql pod 工作正常,并且能够访问。但是 spring 无法连接到它....

在 docker-compose.yaml

错误:

后端网络.yaml

mysql-docker-container-claim0-persistentvolumeclaim.yaml

mysql-docker-container-deployment.yaml

mysql-docker-container-service.yaml

springboot-app-jpa-deployment.yaml

springboot-jpa-app-persistence-claim.yaml

springboot-app-service.yaml


gohm'c 发布的解决方案是我的端口不正确。

接下来面对这个问题,我需要指定一个集群/负载吗?

$ kubectl expose deployment spring-boot-jpa-app --type=NodePort 来自服务器的错误(AlreadyExists):服务“spring-boot-jpa-app”已经存在

0 投票
1 回答
55 浏览

postgresql - 如何在不更改 kubernetes 数据库记录的情况下部署 Spring Boot 应用程序?

我有一个充当 REST API的Spring Boot应用程序,它使用JPAHibernate将对象映射到PostgreSQL数据库表。我希望在 Kubernetes 上发布我的应用程序。整个应用程序是使用工具 docker -compose构建的,然后使用工具Kompose进行转换。有时对象模型会更改,因此该对象的数据库表模式。在不更改记录或丢失用户数据或避免任何数据库冲突的情况下,将我的应用程序和新数据库模式部署到Kubernetes的最佳实践是什么?

0 投票
1 回答
64 浏览

kubernetes - 使用 Minikube 部署 k8s 应用程序时容器文件系统为空

我有一个小型 Web 应用程序(一个名为 的 Rails 应用程序sofia),我在本地使用minikube.

当我创建 k8s 资源并运行我的部署时,容器不包含任何应该在映像构建过程中复制的文件。

这就是我正在做的事情:

Dockerfile

作为Dockerfile构建的一部分,我将本地克隆存储库的内容复制到映像工作目录中:

(旧)docker-compose设置

从历史上看,我使用一个docker-compose文件来运行这个应用程序及其所有服务。我将本地目录映射到容器的工作目录(见volumes:下文)。这在本地工作时非常方便,因为所有更改都反映在容器内“实时”:

构建k8s资源文件kompose

为了在上面运行它minikube,我使用 Kubernetes 自己提供的kompose工具将我的docker-compose文件转换为可以使用的 k8s 资源文件。

如您所见,它会生成一条警告,提示我的本地卷无法安装到远程卷上。这是有道理的,因为 k8s 部署是“远程”运行的,所以我只是忽略了警告。

跑步

最后我用k8s/运行上面的资源minikube

我注意到sofia容器不断崩溃并重新启动,所以我检查了日志:

该错误是特定于 Ruby/Rails 的,但根本原因是容器中没有文件!我可以通过输入容器并检查文件来确认这一点ls- 它确实是空的。

问题

  1. 如果sofia/sofia:latest图像是使用COPY-ied 文件内容正确构建的,为什么在运行容器时它会消失minikube
  2. 我应该怎么做才能确保我的文件被正确复制?

谢谢!

0 投票
1 回答
99 浏览

docker - 如何从 Kubernetes pod 进行 HTTP/S 外部调用?

我使用Kompose将以下 docker-compose 翻译成 Kubernetes:

如果我运行docker-compose up -d它,它工作得很好。但是,当在 Kubernetes 下运行等价物时,pod 无法进行任何外部 HTTP/S 调用并抛出此错误:

此外,该图像还有一个前端网页,可以从http://0.0.0.0:8080.

我使用 Minikube,他们的文档仍然是:

LoadBalancer类型的服务可以通过minikube tunnel 命令公开。它必须在单独的终端窗口中运行以保持 LoadBalancer 运行。

这正是我所做的,该命令没有显示错误:

但是,如您所见,pod 失败了,因为它无法访问外部 IP(我检查了日志),并且 service/mycoolimg 没有配置外部 IP,如文档中所示:

我错过了什么?这是 Kompose 转换问题和 Minikube 特定配置,还是我错过了一些 Kubernetes 步骤?

这是服务输出:

这是部署:

0 投票
1 回答
33 浏览

postgresql - Kompose for docker-compose 不使用卷

我使用 Kompose 将 docker-compose 转换为 Kubernetes 文件。当我使用在 Docker(没有 Kubernetes)上运行的图像时,它使用 postgres 卷来保存持久数据。现在,使用相同的 docker-compose,如果我使用 Kompose 创建的文件在 Kubernetes 上运行,每次启动 Kubernetes 时,数据库都是空的。这怎么可能?事实上,如果我查看 Docker Desktop,我发现这些卷没有“IN USE”标签。

我怎么做?

先感谢您!

码头工人-compose.yaml:

使用 kompose convert 创建的文件: