Mao*_*dok 9 kubernetes kubernetes-helm
Kubernetes升级到1.25后
helm upgrade --install ...失败并出现以下错误:
Error: UPGRADE FAILED: unable to recognize "": no matches for kind "HorizontalPodAutoscaler" in version "autoscaling/v2beta1"
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我将 HPA 从 更改为autoscaling/v2beta1并autoscaling/v2
更新了新的 API 语法。但在尝试升级 helm 版本时我不断收到相同的错误。解决该问题的唯一方法是卸载并重新安装该版本。有人可以解释错误的原因以及如何在不删除并重新安装的情况下修复它吗?
Mao*_*dok 21
helm3 对发布状态进行保密,上次发布的 helm 状态包含旧的 API autoscaling/v2beta1,并且由于某种原因,导致升级时出错。为了解决这个问题,我编辑了 helm Secret,.data.release使用 base64 编码解压两次,然后解压缩替换 autoscaling/v2beta1为autoscaling/v2,然后将其压缩编码两次。
经过此更改以及新 API 版本(和语法)的更改后,问题解决了,我可以再次升级图表。
我的修复:
secret/sh.helm.release.v1....使用以下命令更新(修补)最后一个 Helm Secret ( ):UPDATE=$(kubectl get secret "${SECRET}" -n "${NAMESPACE}" -otemplate='{{.data.release |base64decode |base64decode }}'|gzip -d|sed 's#autoscaling/v2beta1#autoscaling/v2#'| gzip |base64 -w0 |base64 -w0)
kubectl patch secret "${SECRET}" -n "${NAMESPACE}" --patch="{\"data\": { \"release\": \"$UPDATE\" }}"
Run Code Online (Sandbox Code Playgroud)
我使用此脚本来更新所有命名空间中的所有 helm 机密。
#!/bin/bash
SECRET=$1
NAMESPACE=$2
if [[ -z "${SECRET}" ]]
then
echo "Usage: $0 <secret-name> <namespace>"
exit
fi
if [[ -z "${NAMESPACE}" ]]
then
echo "Usage: $0 <secret-name> <namespace>"
exit
fi
UPDATE=$(kubectl get secret "${SECRET}" -n "${NAMESPACE}" -otemplate='{{.data.release |base64decode |base64decode }}'|gzip -d|sed 's#autoscaling/v2beta1#autoscaling/v2#'| gzip |base64 -w0 |base64 -w0)
kubectl patch secret "${SECRET}" -n "${NAMESPACE}" --patch="{\"data\": { \"release\": \"$UPDATE\" }}"
# Running example:
## Fix single secret
# ./fix-helm-hpa.sh <secret> <namespace>
## Fix all secrets
#kubectl get secret --field-selector=type=helm.sh/release.v1 -otemplate='{{range .items}}{{printf "%s %s\n" .metadata.name .metadata.namespace }}{{end}}' |while read line ; do ./fix-helm-hpa.sh $line; done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7329 次 |
| 最近记录: |