Kubectl

Kubectl is the standard command-line tool for interacting with Kubernetes clusters across all major cloud providers (AKS, EKS, GKE) and on-premises environments. It enables you to deploy, manage, and troubleshoot Kubernetes resources efficiently.


Installation

Linux/WSL

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

NixOS

Add to your configuration.nix:

{ pkgs, ... }:
{
  environment.systemPackages = with pkgs; [ kubectl ];
}

Then run:

sudo nixos-rebuild switch

Connecting to Managed Clusters

  • AKS: az aks get-credentials --resource-group <rg> --name <cluster>

  • EKS: aws eks update-kubeconfig --region <region> --name <cluster>

  • GKE: gcloud container clusters get-credentials <cluster> --region <region>


Common Usage Examples

  • Create a deployment:

    kubectl create deployment webapp --image=nginx:1.25
  • View deployment status:

    kubectl rollout status deployment/webapp
  • Scale a deployment:

    kubectl scale deployment/webapp --replicas=5
  • Update deployment image:

    kubectl set image deployment/webapp nginx=nginx:1.26
  • Create a service:

    kubectl expose deployment webapp --type=LoadBalancer --port=80
  • View pod logs:

    kubectl logs <pod-name>
  • Create a secret:

    kubectl create secret generic mysecret --from-literal=key=value
  • Create a ConfigMap:

    kubectl create configmap myconfig --from-literal=key=value

Real-Life DevOps Scenarios

  • Use kubectl in CI/CD pipelines (GitHub Actions, Azure Pipelines, GitLab CI) for automated deployments and rollbacks.

  • Integrate with GitOps tools (ArgoCD, Flux) for declarative cluster management.

  • Use LLMs (Copilot, Claude) to generate manifests and troubleshoot errors.

  • Automate cluster context switching for multi-cloud workflows.


Best Practices (2025)

  • Always use the latest stable version of kubectl

  • Use kubectl --context to manage multiple clusters

  • Validate YAML with kubectl apply --dry-run=client -f <file>

  • Use kubectl explain <resource> for quick documentation

  • Prefer declarative (apply) over imperative (create, edit) workflows

  • Use RBAC and namespaces for security and isolation

Common Pitfalls

  • Not matching kubectl version to cluster version (can cause errors)

  • Forgetting to set the correct context before running commands

  • Applying unvalidated YAML (syntax or schema errors)


References

Last updated