How do I troubleshoot Amazon EKS cluster errors when I use a bastion host?

3 minute read
0

When I use kubectl client to connect to Amazon Elastic Kubernetes Service (Amazon EKS) from my bastion host, I receive the following error: "error: exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha1"". I want to resolve this issue.

Resolution

You receive the invalid apiVersion error when the version of kubectl that you're using is incompatible with your Kubernetes cluster's API version. This error typically occurs when you use an earlier version of the AWS Command Line Interface (AWS CLI) to update the kubeconfig file in $home/.kube/config. To resolve this issue, upgrade the AWS CLI to the most recent version. Then, update the kubeconfig file again. When you update the kubeconfig file, the apiVersion field in the kubeconfig file updates to the latest version (v1beta1) .

Upgrade to the most recent version of the AWS CLI

Install or update to the latest version of the AWS CLI.

Note: If you receive errors when you run AWS CLI commands, then see Troubleshoot AWS CLI errors.

Install a supported kubectl version

Note: You must use a kubectl version that's within one minor version difference of your Amazon EKS cluster control plane. For example, a 1.28 kubectl client works with Kubernetes 1.27, 1.28, and 1.29 clusters.

To install a supported kubectl version for your Amazon EKS cluster version, complete the following steps:

  1. To download kubectl, run the following command:

        $ curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.29.3/2024-04-19/bin/linux/arm64/kubectl.sha256
        $ chmod +x ./kubectl

    Note: Replace linux with your operating system, arm64 with your distribution, and 1.29 with your Kubernetes version.

  2. Copy the downloaded kubectl file to a folder in your path. If you already installed a version of kubectl, then create a $HOME/bin/kubectl:

       $ mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH

    Note: You must list $HOME/bin first in the $PATH.

  3. To verify the installed version of kubectl, run the following command:

       $ kubectl version --client
  4. (Optional) Add the $HOME/bin path to your shell initialization file:

       $ echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
  5. To update your kubeconfig file from v1alpha1 to v1beta1, run the following command:

       $ aws eks update-kubeconfig --name clusterName --region regionName

    Note: Replace clusterName with your cluster name and regionName with your AWS Region.

  6. To test if you can connect to the cluster, run the following command:

      $ kubectl get svc
      $ kubectl get pod
AWS OFFICIAL
AWS OFFICIALUpdated 3 months ago