为什么掌舵升级 - 以前安装失败时安装失败?

Agu*_*ama 11 kubernetes kubernetes-helm

这是掌舵和分蘖版本:

> 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"}
Run Code Online (Sandbox Code Playgroud)

以前的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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

helm upgrade --install如果先前的安装失败,命令是否会失败?我期待它强行安装.任何的想法?

Rya*_*son 12

这暂时是一个掌舵问题.它只影响首次安装图表失败并且最多需要helm 2.7的情况,需要手动删除失败的版本,然后再更正问题并重新安装.但是现在有一个--force标志可以解决这个问题 - https://github.com/helm/helm/issues/4004


小智 10

尝试:

helm delete --purge <deployment> 
Run Code Online (Sandbox Code Playgroud)

这将解决问题

对于 helm3 以后,您需要卸载例如。

helm uninstall <deployment>  -n <namespace>
Run Code Online (Sandbox Code Playgroud)

  • 我认为这不是一个好的解决方案,它会删除所有资源。如果有人不想移除 pod 或入口怎么办? (2认同)

小智 6

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

首先,检查helm release部署的状态;

? helm ls  -n $namespace

NAME    NAMESPACE   REVISION    UPDATED STATUS  CHART   APP VERSION
Run Code Online (Sandbox Code Playgroud)

您很可能不会看到有问题的 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
Run Code Online (Sandbox Code Playgroud)

如您所见,部署一直处于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
Run Code Online (Sandbox Code Playgroud)

并描述最后一个;

? 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
Run Code Online (Sandbox Code Playgroud)

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

? kubectl delete secret sh.helm.release.v1.$namespace.v7
Run Code Online (Sandbox Code Playgroud)

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

? helm list -n $namespace -a
NAME            NAMESPACE       REVISION    UPDATED          STATUS       CHART         APP VERSION
$release_name   $namespace      7           $update_date     deployed     $chart_name   $app_version
Run Code Online (Sandbox Code Playgroud)