为什么上次安装失败后helm升级--install又失败了?

问题描述 投票:0回答:4

这是舵柄和舵柄版本:

> helm version --tiller-namespace data-devops
Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}

之前的helm安装失败:

helm ls --tiller-namespace data-devops
NAME            REVISION        UPDATED                         STATUS  CHART                   NAMESPACE
java-maven-app  1               Thu Aug  9 13:51:44 2018        FAILED  java-maven-app-1.0.0    data-devops

当我尝试使用此命令再次安装它时,失败了:

helm --tiller-namespace data-devops upgrade java-maven-app helm-chart --install \
        --namespace data-devops \
        --values helm-chart/values/stg-stable.yaml
Error: UPGRADE FAILED: "java-maven-app" has no deployed releases

如果之前的安装失败,

helm upgrade --install
命令会失败吗?我期待它强制安装。有什么想法吗?

kubernetes kubernetes-helm
4个回答
27
投票

这已经是或已经是一个掌舵问题有一段时间了。它仅影响图表的首次安装失败的情况,并且 Helm 2.7 之前需要手动删除失败的版本,然后才能更正问题并再次安装。但是,现在有一个 --force 标志可用于解决这种情况 - https://github.com/helm/helm/issues/4004


22
投票

当部署意外失败时就会发生这种情况。

首先检查helmrelease部署的状态;

❯ helm ls  -n $namespace

NAME    NAMESPACE   REVISION    UPDATED STATUS  CHART   APP VERSION

您很可能看不到有问题的 helm 部署。因此,请使用

-a
选项检查部署的状态;

❯ helm list -n $namespace -a
NAME            NAMESPACE       REVISION    UPDATED          STATUS             CHART         APP VERSION
$release_name   $namespace      7           $update_date     pending-upgrade    $chart_name   $app_version

如您所见,部署停留在

pending-upgrade
状态。

检查helm部署秘密;

❯ kubectl get secret -n $namespace                                                                                                                                             42s ⎈ eks_non-prod/monitoring
NAME                                 TYPE                  DATA   AGE
sh.helm.release.v1.$namespace.v1     helm.sh/release.v1    1      2d21h
sh.helm.release.v1.$namespace.v2     helm.sh/release.v1    1      21h
sh.helm.release.v1.$namespace.v3     helm.sh/release.v1    1      20h
sh.helm.release.v1.$namespace.v4     helm.sh/release.v1    1      19h
sh.helm.release.v1.$namespace.v5     helm.sh/release.v1    1      18h
sh.helm.release.v1.$namespace.v6     helm.sh/release.v1    1      17h
sh.helm.release.v1.$namespace.v7     helm.sh/release.v1    1      16h

并描述最后一个;

❯ kubectl describe secret sh.helm.release.v1.$namespace.v7
Name:         sh.helm.release.v1.$namespace.v7
Namespace:    $namespace
Labels:       modifiedAt=1611503377
              name=$namespace
              owner=helm
              status=pending-upgrade
              version=7
Annotations:  <none>

Type:  helm.sh/release.v1

Data
====
release:  792744 bytes

您将看到该密钥与失败的部署具有相同的状态。所以删除秘密;

❯ kubectl delete secret sh.helm.release.v1.$namespace.v7

现在,您应该能够升级 helm 版本。升级后可以查看helm发布的状态;

❯ helm list -n $namespace -a
NAME            NAMESPACE       REVISION    UPDATED          STATUS       CHART         APP VERSION
$release_name   $namespace      7           $update_date     deployed     $chart_name   $app_version

14
投票

尝试:

helm delete --purge <deployment> 

这样就可以了

对于 helm3 及以上版本,您需要卸载例如。

helm uninstall <deployment>  -n <namespace>

1
投票

只是添加...

我经常在 Helm 3 中看到

Error: UPGRADE FAILED: "my-app" has no deployed releases
错误。 几乎每次,错误都出现在
kubectl
aws-cli
aws-iam-authenticator
中,而不是 Helm 中。看来很多问题似乎都是这个异常冒出来的,这并不理想。

要诊断真正的问题,您可以在一个或多个这些工具中运行简单的命令(如果您正在使用它们),并且您应该能够快速诊断您的问题。

例如:

aws-cli -

aws --version
确保您已安装 cli。

aws-iam-authenticator -

aws-iam-authenticator version
检查是否已正确安装。

kubectl -

kubectl version
将显示该工具是否已安装。

kubectl -

kubectl config current-context
将显示您是否提供了可以连接到 Kubernetes 的有效配置。

© www.soinside.com 2019 - 2024. All rights reserved.