问题标签 [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.
ssl - 当 Docker compose 为 Dotnet 核心项目工作时,Kubernetes 因 SSL 错误而失败
我是 Kubernetes 的新手,我正在本地开发中尝试其中的一些。在我在这里给出我的问题陈述之前是我的环境和我的项目的状态。
- 我有启用 WSL2 的 Windows 10 和通过 VS Code 运行的 Ubuntu。
- 我已经在 VS Code 中启用了所需的插件(如 Kubernetes、Docker 等)
- 我安装了启用了 WSL2 + Ubuntu + Kubernetes 的 Docker 桌面。
- 我通过 Docker 从本地系统 + ubuntu 获得了 ASP.Net Core 5 工作版本
- 我有 dockerfile + docker compose 文件,并且我已经对它们进行了测试,无论是否使用 SSL 端口,并且这些都可以使用 SSL,也可以不使用 SSL。(为此我修改了程序以接受非 SSL 请求)。
来到 docker 文件——它需要像 5000(对于非 SSL)和 5001(对于 SSL)这样暴露的端口进入 docker compose 文件——它需要像5000:80
和5000: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
它启动容器但立即失败。我检查了日志,它显示以下内容:
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 上指导的事情
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
docker - 将 Web 应用程序组件作为单个服务与 Kubernetes 中的多个服务运行
我有一个"india"
依赖于 postgres 和 redis 的 Web 应用程序(例如)(例如,典型的 Rails 应用程序)。
我有一个docker-compose.yml
组成容器的文件来启动这个应用程序。
我想用 Kubernetes 运行这个应用程序部署。我试图弄清楚如何正确构建 k8s 资源对象,我正在权衡两个选项:
我可以在 k8s 中构建
india
、postgres-india
和redis-india
作为单独的部署(因此是单独的服务)我可以构建
india
,postgres-india
和redis-india
作为单个部署(因此单个pod
/service
)
#2 对我个人来说更有意义——这里的所有 3 项都包含应该作为单个服务 URL 公开的整个“应用程序服务”(即 Web 应用程序的前端)。
但是,如果我使用自动化工具kompose
将我的docker-compose.yml
文件转换为 k8s 资源,它会遵循方法 #1 并创建三个单独的 k8s 服务。
我应该遵循“正确的方法”或标准吗?
谢谢!
postgresql - 将本地 docker 卷挂载到 kubernetes pod
我正在尝试在 microk8s kubernetes 集群上启动一个 postgres pod。目前,包含所有数据的 postgres 容器在主机上本地启动。
问题是:是否可以将当前卷(从本地 docker 卷)映射到 kubernetes pod 部署?
我曾经将 Kubernetes 部署kompose
转换docker-compose.yml
为适当的.yaml
文件。
上述命令kompose
创建postgres-deployment.yaml
、postgres-service.yaml
和 2 persistantvolumeclaims
(从 docker-compose 中映射的卷中,一个用于 pg_data,另一个用于 init_db 脚本)。
我是否需要在自动生成的PersistantVolume
映射旁边生成映射以及它们的外观?PersistantVolumeClaims
kompose
编辑:使用下面的 yaml,我为 postgres 容器制作了 2volumes
和 2 volumeclaims
,为 init_db 脚本制作了数据 1。运行它然后公开服务端点是有效的。警告:因为数据库在 docker 主机容器和 kubernetes pod 上运行,同时发生数据损坏。
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”已经存在
postgresql - 如何在不更改 kubernetes 数据库记录的情况下部署 Spring Boot 应用程序?
我有一个充当 REST API的Spring Boot应用程序,它使用JPA和Hibernate将对象映射到PostgreSQL数据库表。我希望在 Kubernetes 上发布我的应用程序。整个应用程序是使用工具 docker -compose构建的,然后使用工具Kompose进行转换。有时对象模型会更改,因此该对象的数据库表模式。在不更改记录或丢失用户数据或避免任何数据库冲突的情况下,将我的应用程序和新数据库模式部署到Kubernetes的最佳实践是什么?
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
- 它确实是空的。
问题
- 如果
sofia/sofia:latest
图像是使用COPY
-ied 文件内容正确构建的,为什么在运行容器时它会消失minikube
? - 我应该怎么做才能确保我的文件被正确复制?
谢谢!
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 步骤?
这是服务输出:
这是部署:
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 创建的文件: