问题标签 [skaffold]

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 投票
0 回答
216 浏览

docker-compose - 使用 docker compose 配置的 skaffold init 失败并出现“Nil Pointer Dereference”错误

我正在尝试使用以下 init 命令为 docker-compose 配置生成 skaffold 配置

预期行为:

该命令应基于 docker-compose 配置生成 k8s 清单,并应在发出“skaffold init”命令时生成 skaffold 配置

实际行为:

这失败并出现以下“无指针引用”错误

信息:

Skaffold 版本:v0.37.0 操作系统:RHEL skaffold.yaml 内容:无 skaffold.yaml

重现行为的步骤:

使用基本的 docker compose 文件运行“skaffold init --compose-file docker-compose.yml --verbosity=info”。

请建议我解决此问题

0 投票
1 回答
563 浏览

kubernetes - 将脚本或命令与 Skaffold 开发部署一起运行到 Kubernetes 集群

我想在运行之前运行一个命令从远程存储库克隆一个脚本,skaffold dev我需要以某种方式注入一个git clone命令或将 git clone 命令和相应的参数放在 shell 脚本中,然后使用 Skaffold 运行 shell 脚本。

从 Skaffold 工作流程的角度来看,此步骤应在构建之前运行。我在构建阶段使用 Jib,看来 Jib 状态并没有给我任何在实际构建之前运行脚本的能力。我不知道是否可以在 Skaffold 生命周期中添加一个新阶段,例如pre-build. 我想到的一种解决方案是使用custombuild 而不是Jib将所有预构建命令以及与 jib 相关的命令放在一个脚本中运行。这种方法可能有效,但不会很方便。我想知道是否有更好的方法来使用 Skaffold 做到这一点。

0 投票
0 回答
1406 浏览

kubernetes - 带有 minikube 和本地注册表的 Skaffold 无法获取图像名称

由于我已将 helm、Skaffold 和 Minikube 升级到最新版本,我的本地项目未能部署到 minikube,并出现以下警告:

我的脚手架.yml

我不确定我是否遗漏了什么,或者这只是我遇到的一个错误。

0 投票
1 回答
731 浏览

kubernetes - Skaffold 以什么顺序启动部署,有没有办法指定顺序?

基本上,我需要在 API 部署之前启动数据库部署。如果数据库没有运行,它会在 API 中引发错误。

我已经弄乱了订单artifacts:和:

但这似乎与他们启动的顺序没有任何关系。

我唯一能想到的是它是按字母顺序排列的。我以前没有问题:数据库会在 api 之前 49/50 启动。现在情况正好相反。我唯一改变的是一台新计算机,我将它重命名为按字母顺序排列在第一位server的计算机。api

所以两个问题:

  1. Skaffold 中的部署顺序是如何确定的?
  2. 有没有办法设置顺序?
0 投票
2 回答
4928 浏览

docker - 设置就绪、活跃度或启动探测

我很难理解哪个最适合我的情况以及如何实际实施它。

简而言之,问题是这样的:

  • 我正在使用 Skaffold 启动我的 DB (Postgres)、BE (Django) 和 FE (React) 部署
  • 大约 50% 的时间 BE 在 DB 之前启动
  • Django 尝试做的第一件事就是连接到数据库
  • 它只尝试一次(根据设计,不能更改),如果不能,它会失败并且应用程序被破坏

  • 因此,我需要确保每次启动部署时,在开始 BE 部署之前数据库部署正在运行

我遇到了readiness、liveness 和 starup probes。我已经阅读了几次,就绪探测听起来就像我需要的那样:我不希望 BE 部署在数据库部署准备好接受连接之前开始。

我想我不明白如何设置它。这是我尝试过的,但我仍然遇到一个在另一个之前加载的实例。

postgres.yaml

api.yaml

客户端.yaml

我不认为ingress.yamlskaffold.yaml会有帮助,但如果我应该添加这些,请告诉我。

那么我在这里做错了什么?


编辑:

因此,我根据 David Maze 的回应尝试了一些方法。这有助于我更好地了解正在发生的事情,但我仍然遇到一些我不太了解如何解决的问题。

第一个问题是,即使使用 default restartPolicy: Always,即使 Django 失败,Pod 本身也不会失败。即使 Django 失败了,Pod 仍认为它们非常健康。

第二个问题是显然需要让 Pod 了解 Django 的状态。那是我不太关心的部分,特别是探测器应该检查其他部署的状态还是它们本身?

昨天我的想法是前者,但今天我认为是后者:Pod 需要知道其中包含的程序已经失败。但是,我尝试过的所有操作都会导致探测失败、连接被拒绝等:

所以显然我设置了错误的探针,尽管它是一个“超级简单”的实现(正如一些博客所描述的那样)。例如,/health/healthz路由:这些是内置在 Kubernetes 中还是需要设置?重读文档以希望澄清这一点。

0 投票
1 回答
1608 浏览

kubernetes - 将 skaffold 配置文件绑定到命名空间

有没有办法将 skaffold 配置文件绑定到命名空间?我想确保 dev、staging 和 prod 部署总是进入正确的命名空间。我知道我可以添加一个命名空间来skaffold run喜欢skaffold run -p dev -n dev,但这有点容易出错。我想通过将配置文件绑定到命名空间来使我的构建更加安全。

我已经尝试将以下内容添加到我skaffold.yaml的基础上,因为其中有一条路径,skaffold.yamlbuild/cluster/namespace我怀疑我误解了集群规范的目的。

但我得到了错误

我尝试了其他更改集群命名空间的变体,但都失败了。

0 投票
2 回答
793 浏览

docker - 使用 Skaffold 构建多架构 docker 镜像

我已经能够让两种很棒的技术独立工作。

不幸的是,我不知道如何同时使用它们。

我目前正在我的笔记本电脑 (amd) 上构建和测试,然后部署到运行 Kubernetes 的 Raspberri Pi 4 (arm64)。

为了让这个工作我使用类似的东西:

在尝试瞄准手臂之前,我使用的是脚手架。

有没有办法在使用 skaffold 构建/部署的同时继续针对多游戏形式?如果没有,是否有替代方案的建议?

非常感谢任何建议/帮助,谢谢。

0 投票
1 回答
716 浏览

kubernetes - 将 skaffold 配置文件绑定到集群

建立我关于将配置文件绑定到名称空间的另一个问题,有没有办法将配置文件绑定到集群?

现在我发现有几次我不小心运行了命令,比如skaffold run -p local -n skeleton当我当前的 kubernetes 上下文指向docker-desktop. 我想防止自己和团队中的其他人犯同样的错误。

我发现有一种指定上下文的方法,但如果开发人员使用自定义上下文(如kubeclt set-context custom --user=custom --cluster=custom. 我还在参考资料中找到了一个集群字段skaffold.yaml但它似乎不能满足我的需要,因为它不允许我指定集群名称。

0 投票
1 回答
388 浏览

kubernetes-helm - 带有 helm 图表的 skaffold init

我正在尝试执行skaffold init。我收到这条消息:

FATA[0000] 运行 skaffold 需要一个或多个有效的 Kubernetes 清单

我想skaffold正在寻找 Kubernetes 清单。但是,我使用 helm 图表在 kubernetes 上运行和部署我的工件。

我的意思是,我没有也不会有任何"valid"kubernetes 清单,因为我使用的是 helm 图表。

我怎么能继续初始化?

0 投票
1 回答
258 浏览

kubernetes - skaffold 是否尊重滚动更新?

使用该选项时,skaffold 是否尊重滚动更新--force?当我skaffold run --force执行

似乎从未发生过激增。

在我运行的另一个终端窗口中watch kubectl get pods,我从来没有看到我的部署的副本数量超过 3。我怀疑这是因为--force标志,但我不确定。

在人们告诉我不要使用武力之前,请参阅https://github.com/GoogleContainerTools/skaffold/issues/3171。如果部署的资源已经存在,Skaffold 会自动更改导致部署失败的运行 ID。话虽如此,如果有办法告诉 skaffold 更新部署而不抱怨不匹配的运行 ID,我很想听听。我不喜欢使用--force.

编辑:

看着 skaffold 帮助我看到:

这个Recreate词表明 RollingDeployment 策略可能不受尊重。