PVE is now the 2-node cluster homelab (pv1-1 + pv1-2), no shared storage:
- template 101 copied to pv1-2 as 9101; MDs lab1-workers-pv1-1 (max 6) and
lab1-workers-pv1-2 (max 12), PMTs pinned with allowedNodes; pool .31-.50;
lab1-workers renamed for symmetry (decision #18, #7 superseded)
- CA: balancing-label node.cluster.x-k8s.io/pool (+ pool label, capacity labels
with os/arch, maxPods on the MDs), scan-interval 1m, v 2, default QPS (#19).
Scale test: 16 pods -> 4 + 4 across both nodes.
- runbook, image-builder copy procedure, fixes tables, future task to report
three CA clusterapi bugs upstream, lab facts, changelog, execution log
Plan: docs/plans/2026-09-29-2315-pv1-2-workers.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Phase-1 Step 2 rewritten around ansible/mgmt.yml and cluster-api-operator,
version pins for operator/cert-manager/cloud image, decisions #12-14,
execution log and changelog. Phase-1 Step 2 checked off.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
stringData is never stored, so kubectl apply reported "configured" on
every run and the capi play was never changed=0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PVE's cloud-init user-data triggers a deprecation warning that makes
`cloud-init status --wait` exit 2 even though provisioning succeeded.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
VM from Ubuntu cloud image on pv1-1, pinned k3s, cert-manager and
cluster-api-operator via k3s HelmChart CRs, CAPI providers as operator CRs,
kubeconfig fetch + cluster-inspector kubeconfig. Lint passes (production).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>