使用kubectl rollout restart重启Mattermost时报unable to decode错误咨询
问题原因
Mattermost是Kubernetes的自定义资源(CR),不属于K8s内置的原生工作负载类型,kubectl默认的资源注册列表中没有该类型的定义,因此无法直接解析对应的YAML文件执行重启操作kubectl rollout restart原生仅支持Deployment、StatefulSet、DaemonSet这类内置工作负载资源,未适配第三方CR的场景,直接传入自定义资源文件调用会触发类型识别报错- 额外可能原因:集群中未安装Mattermost Operator对应的
installation.mattermost.com/v1beta1版本CRD,导致kubectl完全无法识别该资源类型
解决方案
前置排查步骤
先确认集群中已安装对应版本的Mattermost CRD,执行命令:
kubectl get crd | grep mattermosts.installation.mattermost.com
如果无输出,先安装对应版本的Mattermost Operator及配套CRD后再进行后续操作。
重启方案(CRD已安装前提下)
方案1:直接重启关联的工作负载
Mattermost实例部署后会生成对应的StatefulSet,直接对该内置资源执行重启即可:
- 查找实例关联的StatefulSet
kubectl get statefulset -n ind-iv | grep mattermost-iv
- 执行重启
kubectl rollout restart -n ind-iv statefulset <上一步输出的StatefulSet名称>
方案2:通过更新CR触发自动重启
如果需要保留通过原YAML文件操作的习惯,可通过更新CR触发Operator自动执行滚动更新:
- 无配置变更场景:直接重新apply当前YAML即可触发重载
kubectl apply -n ind-iv -f mattermost-installation.yml
- 若apply后未触发重启,可给CR添加时间戳注解强制触发更新
kubectl annotate -n ind-iv mattermost mattermost-iv kubectl.kubernetes.io/restartedAt=$(date +%Y%m%d%H%M%S)
内容的提问来源于stack exchange,提问作者Lucas Scheepers
相关产品推荐
相关产品推荐

