failed to apply config to node k8s-0: failed to apply machine config: rpc error: code = InvalidArgument
desc = 1 error occurred:
* .machine.nodeLabels is already set in v1alpha1 config
Причина. Кластер на Talos 1.14, а в 1.14 node labels перенесены из legacy-поля .machine.nodeLabels в типизированный документ KubeNodeConfig (вместе с nodeAnnotations, nodeTaints, skipNodeRegistration, registerWithFQDN, nodeIP, allowSchedulingOnControlPlanes). В конфиге ноды KubeNodeConfig уже есть (в talos/control-plane/00-cluster.yaml — там снимается node-role.kubernetes.io/control-plane taint), и legacy-форма с типизированной одновременно применяться не может.
Фикс. Файл talos/all/32-node-labels.yaml переписан в типизированный документ:
Файл остаётся в all/, то есть применяется ко всем нодам, включая будущие worker-ноды; патч taint'а остаётся в talos/control-plane/.
Проверка после применения:
just talos diff # конфиг должен сойтись без ошибок
just talos apply
kubectl get nodes -o custom-columns='NODE:.metadata.name,REGION:.metadata.labels.topology\.kubernetes\.io/region,ZONE:.metadata.labels.topology\.kubernetes\.io/zone'
`just talos diff` падал на применении конфига:
```
failed to apply config to node k8s-0: failed to apply machine config: rpc error: code = InvalidArgument
desc = 1 error occurred:
* .machine.nodeLabels is already set in v1alpha1 config
```
**Причина.** Кластер на Talos 1.14, а в 1.14 node labels перенесены из legacy-поля `.machine.nodeLabels` в типизированный документ `KubeNodeConfig` (вместе с `nodeAnnotations`, `nodeTaints`, `skipNodeRegistration`, `registerWithFQDN`, `nodeIP`, `allowSchedulingOnControlPlanes`). В конфиге ноды `KubeNodeConfig` уже есть (в `talos/control-plane/00-cluster.yaml` — там снимается `node-role.kubernetes.io/control-plane` taint), и legacy-форма с типизированной одновременно применяться не может.
**Фикс.** Файл `talos/all/32-node-labels.yaml` переписан в типизированный документ:
```yaml
apiVersion: v1alpha1
kind: KubeNodeConfig
labels:
topology.kubernetes.io/region: home-ops
topology.kubernetes.io/zone: pve
```
Файл остаётся в `all/`, то есть применяется ко всем нодам, включая будущие worker-ноды; патч taint'а остаётся в `talos/control-plane/`.
**Проверка после применения:**
```
just talos diff # конфиг должен сойтись без ошибок
just talos apply
kubectl get nodes -o custom-columns='NODE:.metadata.name,REGION:.metadata.labels.topology\.kubernetes\.io/region,ZONE:.metadata.labels.topology\.kubernetes\.io/zone'
```
Документация Talos: https://docs.siderolabs.com/kubernetes-guides/advanced-guides/node-labels (там же сказано, что `topology.kubernetes.io/region` и `zone` — из разрешённого для ноды набора, а role-метки `node-role.kubernetes.io/*` нода себе назначать не может).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
just talos diffпадал на применении конфига:Причина. Кластер на Talos 1.14, а в 1.14 node labels перенесены из legacy-поля
.machine.nodeLabelsв типизированный документKubeNodeConfig(вместе сnodeAnnotations,nodeTaints,skipNodeRegistration,registerWithFQDN,nodeIP,allowSchedulingOnControlPlanes). В конфиге нодыKubeNodeConfigуже есть (вtalos/control-plane/00-cluster.yaml— там снимаетсяnode-role.kubernetes.io/control-planetaint), и legacy-форма с типизированной одновременно применяться не может.Фикс. Файл
talos/all/32-node-labels.yamlпереписан в типизированный документ:Файл остаётся в
all/, то есть применяется ко всем нодам, включая будущие worker-ноды; патч taint'а остаётся вtalos/control-plane/.Проверка после применения:
Документация Talos: https://docs.siderolabs.com/kubernetes-guides/advanced-guides/node-labels (там же сказано, что
topology.kubernetes.io/regionиzone— из разрешённого для ноды набора, а role-меткиnode-role.kubernetes.io/*нода себе назначать не может).Pull request closed