説明
Kubernetes ラベルが形式規則に違反すると、API がリソースの作成や変更を拒否する場合があります。Service、NetworkPolicy、運用自動化はラベルでリソースを選択するため、形式と意味の両方を管理する必要があります。
ラベル値は空文字列、または 63 文字以下の文字列です。空でない場合は英字・数字で始まり、英字・数字で終わる必要があります。途中には英字・数字に加え、ハイフン、アンダースコア、ピリオドを使用できます。
想定される影響
- 無効なラベルによってデプロイやリソース変更が失敗する場合があります。
- 形式が有効でも、selector と一致しなければ意図した対象を選択できない場合があります。
対処方法
- Kubernetes の規則に合うラベルのキーと値を使ってください。キーの任意の DNS 接頭辞と名前部分の規則も確認してください。
- ラベルの変更時には Service とポリシーの selector を合わせて確認し、実際に意図した対象が選ばれるか検証してください。
例
ラベル値を比較する既存の例です。実際のデプロイには保守されている検証済みイメージを使用してください。
変更前
yaml
apiVersion: v1
kind: Pod
metadata:
name: goproxy
labels:
app: g**dy.l+bel.
spec:
containers:
- name: goproxy
image: k8s.gcr.io/goproxy:0.1
app の値にアスタリスク、プラス記号、末尾のピリオドが含まれているため、無効なラベル値です。
変更後
yaml
apiVersion: v1
kind: Pod
metadata:
name: goproxy
labels:
app: goproxy
spec:
containers:
- name: goproxy
image: k8s.gcr.io/goproxy:0.1
有効な goproxy を使います。他のリソースの selector とも一致する必要があります。