Kubernetes 舵手升级失败,错误为“;“种类不匹配”;StatefulSet“;在“版本”中;应用程序/v1beta2“&引用;当使用头盔和;舵柄

Kubernetes 舵手升级失败,错误为“;“种类不匹配”;StatefulSet“;在“版本”中;应用程序/v1beta2“&引用;当使用头盔和;舵柄,kubernetes,kubernetes-helm,kubectl,Kubernetes,Kubernetes Helm,Kubectl,升级Kubernetes版本后,出现以下错误: 错误:无法将rader解码为对象:无法识别“”:版本“apps/v1beta2”中的“statefolset”类型没有匹配项 在我对网络上的StackOverflow和更多类似问题进行了一些研究之后,我发现了两种克服方法: 降级Kubernetes版本-这个解决方案现在是不可能的。 将以下行添加到——运行时配置=apps/v1beta1=true,apps/v1beta2=true,扩展/v1beta1/daemonsets=true,扩展/v1b

升级Kubernetes版本后,出现以下错误:
错误:无法将rader解码为对象:无法识别“”:版本“apps/v1beta2”中的“statefolset”类型没有匹配项
在我对网络上的StackOverflow和更多类似问题进行了一些研究之后,我发现了两种克服方法: 降级Kubernetes版本-这个解决方案现在是不可能的。 将以下行添加到
——运行时配置=apps/v1beta1=true,apps/v1beta2=true,扩展/v1beta1/daemonsets=true,扩展/v1beta1/deployments=true,扩展/v1beta1/replicasets=true,扩展/v1beta1/networkpolicies=true,extensions/v1beta1/podsecuritypolicies=true
/etc/kubernetes/manifest/kube-apiserver.yaml
文件

我知道这个文件位于api服务器本身的docker映像中,所以我查找了这个特定的映像,但发现了3个名为
kube-apiserver ip xx.xx.xx.xxx.eu-west-1.compute.internal
和文件
kube-apiserver.yaml
全部丢失

所以我继续我的研究,发现文件实际上位于主文件中,而不是豆荚中

除上述内容外,构建过程还使用了tiller,我不知道它是否与此问题相关,甚至可能需要对tiller配置进行一些额外的调整。 我在一些帖子中读到,我需要更改主节点,但我不明白如何使用kubectl找到这个特定节点。 总之,我有两个问题:

1.分蘖器是否会影响我所需溶液的处理

2.在哪里可以找到api服务器的主节点,以及如何访问它(即,哪些kubectl命令等)

我仍然是库伯内特斯、赫尔姆和蒂勒的初学者,所以为我的无知道歉。
正如您所知,API版本可能与k8s群集版本有所不同或有所更新。据我所知,您有一个早期部署的helm图表,在升级k8s集群之后,您在重新部署它时会发现API版本不匹配。 您没有提到升级后正在运行的k8s版本。 所以要解决这个问题,您必须找到statefulset的确切api版本。这可以通过使用下面的命令来完成

kubectl api-resources |grep statefulsets
kubectl api-versions |grep apps
kubectl explain statefulsets
您将获得带有列的输出,其中一个是APIGROUP,它将是
apps

现在尝试从下面的命令获取api版本

kubectl api-resources |grep statefulsets
kubectl api-versions |grep apps
kubectl explain statefulsets
您将得到确切的版本,可以使用下面的命令进一步验证

kubectl api-resources |grep statefulsets
kubectl api-versions |grep apps
kubectl explain statefulsets
输出将具有版本字段,该字段是StatefulSet支持的api版本


现在编辑helm chart的deployment.yml文件,并使用从命令获得的新api版本更改
apiVersion
,然后重新部署。

正如您所知,api版本可能会有所不同或根据k8s群集版本进行更新。据我所知,您有一个早期部署的helm图表,在升级k8s集群之后,您在重新部署它时会发现API版本不匹配。 您没有提到升级后正在运行的k8s版本。 所以要解决这个问题,您必须找到statefulset的确切api版本。这可以通过使用下面的命令来完成

kubectl api-resources |grep statefulsets
kubectl api-versions |grep apps
kubectl explain statefulsets
您将获得带有列的输出,其中一个是APIGROUP,它将是
apps

现在尝试从下面的命令获取api版本

kubectl api-resources |grep statefulsets
kubectl api-versions |grep apps
kubectl explain statefulsets
您将得到确切的版本,可以使用下面的命令进一步验证

kubectl api-resources |grep statefulsets
kubectl api-versions |grep apps
kubectl explain statefulsets
输出将具有版本字段,该字段是StatefulSet支持的api版本

现在编辑helm chart的deployment.yml文件,并使用从命令获得的新api版本更改
apiVersion
,然后重新部署。

Kubernetes 1.16。只支持Kubernetes,在我编写本文时,1.19是当前版本,因此当前支持的Kubernetes版本(1.17、1.18或1.19)根本不支持
apiVersion:apps/v1beta2

您需要在掌舵图中找到特定的StatefulSet声明,并将其版本更改为
apiVersion:apps/v1
。这可能在没有进一步改变的情况下起作用;如果没有,那么在尝试安装版本时可能会出现验证错误。您可能会遇到与部署类似的问题

这与(Helm v2)Tiller进程无关,您不应该试图通过更改集群配置来解决这一问题。我发现Helm v2对某些类型的更改有点挑剔,在尝试重新部署之前,您可能需要清除现有安装。

Kubernetes 1.16。只支持Kubernetes,在我编写本文时,1.19是当前版本,因此当前支持的Kubernetes版本(1.17、1.18或1.19)根本不支持
apiVersion:apps/v1beta2

您需要在掌舵图中找到特定的StatefulSet声明,并将其版本更改为
apiVersion:apps/v1
。这可能在没有进一步改变的情况下起作用;如果没有,那么在尝试安装版本时可能会出现验证错误。您可能会遇到与部署类似的问题


这与(Helm v2)Tiller进程无关,您不应该试图通过更改集群配置来解决这一问题。我发现Helm v2对某些类型的更改有点挑剔,在尝试重新部署之前,您可能需要清除现有安装。

David和Taybur是对的,但我想分享一些关于此主题的有用提示。正如我在前面的评论中所提到的,为了在更改文件的
apiVersion
时最大限度地降低出错的可能性,您可以使用:

在不同API版本之间转换配置文件