kubernetes デプロイ時に `MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable` エラーが出た際に対処方法
k8s で manifest file を編集して実行したら以下のようなエラーが出て実行できなかった。
Exception ( Monitor Deploy ) Deploy failed: The Deployment “—” is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{“app”:“—”}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
調べてみたところ、
once deployed the label selectors of kubernetes service can not be updated until you decide to delete the existing deployment
ref: MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutabl #508
らしく、一度デプロイされたk8s service の label selector は、既存のdeployment を削除しないとアップデートは不可能らしい。
なので、field is immutable
というエラー文は正しいわけですね。
そのdeployment を削除しても良い状態なら、以下のコマンドを実行後再度デプロイすれば、k8s service のlabel selector は実行されます。
kubectl delete deploy <deployment-name>
もしくは、k8s service のlabel selectorの変更を諦めて既存のまま運用するのがもう一つの正解でしょうか。
References
関連しているかもしれない記事
- GKE でローリングアップデート後、ローカルからポートフォワードでリクエストを投げるとcurl: (52) Empty reply from server と返ってくるときの対処方法
- Courseraで Getting Started with Google Kubernetes Engine の講義を修了した
📮 📧 🐏: 記事への感想のおたよりをおまちしてます。 お気軽にお送りください。 メールアドレス入力があればメールで返信させていただきます。 もちろんお返事を希望せずに単なる感想だけでも大歓迎です。
このサイトの更新情報をRSSで配信しています。 お好きなフィードリーダーで購読してみてください。
このウェブサイトの運営や著者の活動を支援していただける方を募集しています。 もしよろしければ、Buy Me a Coffee からサポート(投げ銭)していただけると、著者の活動のモチベーションに繋がります✨
Amazonでほしいものリストも公開しているので、こちらからもサポートしていただけると励みになります。