# This state file contains configurations specific to a Kubernetes worker node. include: - common.init # Initialize the Kubernetes control plane using kubeadm. # --pod-network-cidr is required for CNI, but we stop before installing CNI. # --ignore-preflight-errors=NumCPU is added as per original request. kubeadm_init: cmd.run: - name: 'kubeadm init --pod-network-cidr={{ pillar["pod_cidr"] }} --ignore-preflight-errors=NumCPU' - unless: 'test -f /etc/kubernetes/admin.conf' - require: - service: kubelet_service - service: crio_service # Ensure CRI-O is running before kubeadm init # Create .kube directory for the root user. kubeconfig_dir: file.directory: - name: /root/.kube - mode: 755 - makedirs: True - require: - cmd: kubeadm_init # Copy the kubeconfig file to the root user's home directory for kubectl access. kubeconfig_file: file.managed: - name: /root/.kube/config - source: file:///etc/kubernetes/admin.conf - user: root - group: root - mode: 600 - require: - cmd: kubeadm_init - file: kubeconfig_dir