血と汗となみだを流す

個人の思ったこと、やったことの吐き出し口です。

Karpenter Controller を Fargate で動かしているけど NodeClaim が Unknown になる InvalidParameterValue: 'karpenter.k8s.aws/ec2nodeclass' is not a valid tag key

事象

Karpenter Controller Pod を Fargate で起動し、Pod Schedule を Karpenter にやってもらおうとしても Node が起動しない。
NodeClaim を調べたら以下のエラーが出ていた。

$ kubectl describe nodeclaim default-xxxx
~~~
creating instance, with fleet error(s), InvalidParameterValue: 'karpenter.k8s.aws/ec2nodeclass' is not a valid tag key. 
Tag keys must match pattern ([0-9a-zA-Z\\-_+=,.@:]{1,255}), and must not be a reserved name ('.', '..', '_index'); RequestLimitExceeded: Request limit exceeded.; UnfulfillableCapac...
~~~

原因(と思われるところ)

インスタンスメタデータのタグへのアクセスを許可すると、以下の制約が発生する。 docs.aws.amazon.com

インスタンスメタデータのタグへのアクセスを許可する場合、インスタンスタグキーが具体的な制限の対象になります。
コンプライアンスに違反すると、新しいインスタンスの起動が失敗したり、既存のインスタンスのエラーが発生します。制限は次のとおりです。

- 英字 (a-z、A-Z)、数字 (0-9)、および + - = . , _ : @ の各文字のみを含めることができます。
- スペースと / を含めることはできません。
- . (1 つのピリオド)、.. (2 つのピリオド)、または _index だけで構成することはできません。

詳細については、「タグの制限」を参照してください。

NodeClaim は karpenter.k8s.aws/ec2nodeclass などの / (スラッシュ) 付のタグを使用するため、上記のエラーが発生していた。

対処方法

AWS コンソールの [EC2]-[ダッシュボード]-[アカウントの属性]-[データ保護とセキュリティ]-[IMDS デフォルト]-[管理]から「メタデータ内のタグへのアクセス」を無効化した。

プライバシーポリシー