Home > Storage > PowerFlex > White Papers > Amazon Elastic Kubernetes Service Anywhere Bare Metal on Dell PowerFlex > Cluster creation steps
iDRAC: 10.X.X.X Slot/Embedded Port MAC Switch ID Switch Port Slot 2 1 0C:42:A1:8C:F4:F0 0c:29:ef:eb:1a:00 ethernet1/1/5 Slot 2 2 0C:42:A1:8C:F4:F1 c0:3e:ba:d9:6b:00 ethernet1/1/15 Slot 3 1 0C:42:A1:8C:F2:20 c0:3e:ba:d9:6b:00 ethernet1/1/5 Slot 3 2 0C:42:A1:8C:F2:21 0c:29:ef:eb:1a:00 ethernet1/1/15 iDRAC: 10.X.X.X Slot/Embedded Port MAC Switch ID Switch Port Slot 2 1 0C:42:A1:8C:E4:58 0c:29:ef:eb:1a:00 ethernet1/1/6 Slot 2 2 0C:42:A1:8C:E4:59 c0:3e:ba:d9:6b:00 ethernet1/1/16 Slot 3 1 0C:42:A1:8C:E4:50 c0:3e:ba:d9:6b:00 ethernet1/1/6 Slot 3 2 0C:42:A1:8C:E4:51 0c:29:ef:eb:1a:00 ethernet1/1/16 |
eksctl anywhere generate clusterconfig $CLUSTER_NAME \--provisioner tinkerbell > clusterconfig.yaml |
$ ssh-keygen
For example, See the following sample YAML file:
Note: Neither Ubuntu nor RHEL OS images for Bare Metal Amazon EKS Anywhere are generally available . However, you can see Building node images for information on how to build Amazon EKS Anywhere images of these Linux distributions.
apiVersion: anywhere.eks.amazonaws.com/v1alpha1 kind: Cluster metadata: name: eksadmin-18990 spec: clusterNetwork: cniConfig: cilium: {} pods: cidrBlocks: - 192.168.0.0/16 services: cidrBlocks: - 10.96.0.0/12 controlPlaneConfiguration: count: 3 endpoint: host: "192.168.151.80" machineGroupRef: kind: TinkerbellMachineConfig name: eksadmin-18990-cp datacenterRef: kind: TinkerbellDatacenterConfig name: eksadmin-18990 kubernetesVersion: "1.22" managementCluster: name: eksadmin-18990 workerNodeGroupConfigurations: - count: 1 machineGroupRef: kind: TinkerbellMachineConfig name: eksadmin-18990 name: md-0
--- apiVersion: anywhere.eks.amazonaws.com/v1alpha1 kind: TinkerbellDatacenterConfig metadata: name: eksadmin-18990 spec: tinkerbellCertURL: "http://192.168.151.58:42114/cert" tinkerbellGRPCAuth: "192.168.151.58:42113" tinkerbellIP: "192.168.151.58" tinkerbellPBnJGRPCAuth: "192.168.151.58:50051"
--- apiVersion: anywhere.eks.amazonaws.com/v1alpha1 kind: TinkerbellMachineConfig metadata: name: eksadmin-18990-cp spec: osFamily: ubuntu templateRef: kind: TinkerbellTemplateConfig name: eksadmin-18990 users: - name: ec2-user sshAuthorizedKeys: - ssh-rsa AAAAB3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --- apiVersion: anywhere.eks.amazonaws.com/v1alpha1 kind: TinkerbellMachineConfig metadata: name: eksadmin-18990 spec: osFamily: ubuntu templateRef: kind: TinkerbellTemplateConfig name: eksadmin-18990 users: - name: ec2-user sshAuthorizedKeys: - ssh-rsa AAAAB3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --- apiVersion: anywhere.eks.amazonaws.com/v1alpha1 kind: TinkerbellTemplateConfig metadata: name: eksadmin-18990 spec: template: global_timeout: 6000 id: "" name: eksadmin-18990 tasks: - actions: - environment: COMPRESSED: "true" DEST_DISK: /dev/sda IMG_URL: https://anywhere-assets.eks.amazonaws.com/releases/bundles/8/artifacts/raw/1-22/ubuntu-v1.22.6-eks-d-1-22-4-eks-a-8-amd64.gz image: image2disk:v1.0.0 name: stream-image timeout: 360 - environment: BLOCK_DEVICE: /dev/sda1 CHROOT: "y" CMD_LINE: apt -y update && apt -y install openssl DEFAULT_INTERPRETER: /bin/sh -c FS_TYPE: ext4 image: cexec:v1.0.0 name: install-openssl timeout: 90 - environment: CONTENTS: | network: version: 2 renderer: networkd ethernets: eno1: dhcp4: true DEST_DISK: /dev/sda1 DEST_PATH: /etc/netplan/config.yaml DIRMODE: "0755" FS_TYPE: ext4 GID: "0" MODE: "0644" UID: "0" image: writefile:v1.0.0 name: write-netplan timeout: 90 - environment: CONTENTS: | datasource: Ec2: metadata_urls: ["http://192.168.151.58:50061"] strict_id: false system_info: default_user: name: tink groups: [wheel, adm] sudo: ["ALL=(ALL) NOPASSWD:ALL"] shell: /bin/bash manage_etc_hosts: localhost warnings: dsid_missing_source: off DEST_DISK: /dev/sda1 DEST_PATH: /etc/cloud/cloud.cfg.d/10_tinkerbell.cfg DIRMODE: "0700" FS_TYPE: ext4 GID: "0" MODE: "0600" UID: "0" image: writefile:v1.0.0 name: add-tink-cloud-init-config timeout: 90 - environment: CONTENTS: | datasource: Ec2 DEST_DISK: /dev/sda1 DEST_PATH: /etc/cloud/ds-identify.cfg DIRMODE: "0700" FS_TYPE: ext4 GID: "0" MODE: "0600" UID: "0" image: writefile:v1.0.0 name: add-tink-cloud-init-ds-config timeout: 90 - environment: BLOCK_DEVICE: /dev/sda1 FS_TYPE: ext4 image: kexec:v1.0.0 name: kexec-image pid: host timeout: 90 name: eksadmin-18990 volumes: - /dev:/dev - /dev/console:/dev/console - /lib/firmware:/lib/firmware:ro worker: '{{.device_1}}' version: "0.1" |
For more information about the cluster specification, see https://anywhere.eks.amazonaws.com/docs/reference/clusterspec/baremetal/
eksctl anywhere create cluster --file clusterconfig.yaml --hardware-csv hardware.csv |
The following example shows the cluster creation:
$ sudo eksctl anywhere create cluster --hardware-csv hardware.csv -f eksadmin29047.yaml Warning: The recommended number of control plane nodes is 3 or 5 Warning: The recommended number of control plane nodes is 3 or 5 Performing setup and validations hook path override set {"path": "http://10.x.x.x:20000/images/hook"} ✅ Tinkerbell Provider setup is valid ✅ Validate certificate for registry mirror ✅ Validate authentication for git provider ✅ Create preflight validations pass Creating new bootstrap cluster Provider specific pre-capi-install-setup on bootstrap cluster Installing cluster-api providers on bootstrap cluster Provider specific post-setup Creating new workload cluster Installing networking on workload cluster Creating EKS-A namespace Installing cluster-api providers on workload cluster Installing EKS-A secrets on workload cluster Installing resources on management cluster Moving cluster management from bootstrap to workload cluster Installing EKS-A custom components (CRD and controller) on workload cluster Installing EKS-D components on workload cluster Creating EKS-A CRDs instances on workload cluster Installing GitOps Toolkit on workload cluster GitOps field not specified, bootstrap flux skipped Writing cluster config file Deleting bootstrap cluster 🎉 Cluster created! -------------------------------------------------------------------------------------- The Amazon EKS Anywhere Curated Packages are only available to customers with the Amazon EKS Anywhere Enterprise Subscription -------------------------------------------------------------------------------------- Enabling curated packages on the cluster Installing helm chart on cluster {"chart": "eks-anywhere-packages", "version": "0.2.16-eks-a-21"} ⚠️ Unable to create credentials for curated packages: {"warning": "environment variables EKSA_AWS_SECRET_ACCESS_KEY and EKSA_AWS_ACCESS_KEY_ID not provided"} |
export KUBECONFIG=$CLUSTER_NAME/$CLUSTER_NAME.kubeconfig |
kubectlget po -A -l control-plane=controller-manager
|
The following example shows the cluster status:
$ kubectl get po -A -l control-plane=controller-manager NAMESPACE NAME READY STATUS RESTARTS capi-kubeadm-bootstrap-system capi-kubeadm-bootstrap-controller-manager-776b89dcdf-z568l 1/1 Running 0 6d17h capi-kubeadm-control-plane-system capi-kubeadm-control-plane-controller-manager-7966d44fc-tzjpl 1/1 Running 0 6d17h capi-system capi-controller-manager-ffcf6f4f6-c9dbg 1/1 Running 0 6d17h capt-system capt-controller-manager-65bffcdbc5-p7w8k 1/1 Running 0 6d17h dell-csi-operator dell-csi-operator-controller-manager-64c68f44dc-jmzc6 1/1 Running 0 6d14h eksa-packages eks-anywhere-packages-55c5797f9-trgp6 1/1 Running 0 6d17h eksa-system rufio-controller-manager-7ccbf44cb-f9mpt 1/1 Running 0 6d17h etcdadm-bootstrap-provider-system etcdadm-bootstrap-provider-controller-manager-6c6f479f84-ctgmr 1/1 Running 0 6d17h etcdadm-controller-system etcdadm-controller-controller-manager-9dbb4669b-8j8vq 1/1 Running 0 6d17h
|