DEV Community

Nirmal
Nirmal

Posted on

Kubernetes - Refresher Notes

This post is for anyone to quickly refresh on the phrases in Kubernetes. If you are starting to explore Kubernetes then this can be used as a checklist on the areas you should be aware of. I have also included some basic commands to work with kubernetes.

Concepts :

  • KUBECONFIG
  • Cluster - Master & Worker
  • Node
  • Node Port
  • ClusterIP
  • Statefulset vs Statetless
  • Deployment
  • Service
  • Pod
  • Namespace
  • Context
  • PersistentVolume
  • PersistentVolumeClaim
  • HostPath (Local)
  • Ingress
  • LoadBalancer
  • ConfigMap
  • Secrets
  • DNS (..svc.cluster.local)
  • KubeAdmin
  • RBAC
  • ServiceAccount
  • Rollout
  • Replica Scale

Scripts

  • Annotations,Labels & Selectors
  • Kustomize (-k vs -f)
  • Apply/Create/Patch

Local Kubernetes Setup :

  • Docker for Desktop Mac
  • MiniKube

Tools

  • Kubernetes Dashboard - web UI for Kubernetes clusters
  • Kubectl and Proxy
  • Kubernetic Desktop - View Cluster Resources, Similar to Kitematic for Docker.
  • Sekret - Encryption Tool for Kubernetes Secrets YAML
  • Kamus - Encryption and Decryption solution for Kubernetes applications
  • Kubectx - Switch faster between clusters and namespaces in kubectl
  • kube-ps1 - Kubernetes prompt info for bash and zsh to see the current cluster context with namespace
  • Kubefwd - Bulk port forwarding Kubernetes services for local development.

Basic Commands

Contexts


# Get all contexts
kubectl config get-contexts 

# Get Current Context
kubectl config current-context


# Set the default context
kubectl config use-context nk-dev-cluster  

kubectl config set-context nk-dev --namespace=rafa-dev --cluster=docker-for-desktop-cluster --user=docker-for-desktop


Describe K8 Resources

# kubectl describe <resource> <resourceName>
kubectl describe pods pod1

# Get the resource definition in yaml
kubectl get pod my-pod -o yaml 

Expose a Service

#expose a app named web-app as a service 

kubectl expose deployment web-app --name=web-app --type=NodePort --target-port=8080


# For Testing Locally
kubectl port-forward servicename 8080:8080

Connect to the running Pod Container


kubectl exec web-app-fcc6b5ddf-k2txq -it -- /bin/sh

Troubleshooting


#Simple Container to quickly run some curl commands to the pods
kubectl run curl-test --image=radial/busyboxplus:curl -i --tty --rm

Thanks for reading this refresher.

Top comments (0)