4.6 KiB
Vocabulary
https://kubernetes.io/docs/tutorials/kubernetes-basics/explore/explore-intro/ - Good summary of the different parts
Cluster
The largest unit, a kubernetes cluster is a collection of one or more worker machines (virtual or physical machines), and the control plane.
Control plane
A control plane is in charge of managing worker nodes and pods in a cluster.
Node
A node is a virtual or physical machine that in Kubernetes, and is managed by the control plane. A Node can have multiple pods, and the control plane is in charge of scheduling pods across nodes.
Each node runs at least:
- A Kubelet, the process responsible for handling communication between the control plane and the node. It manages the pods and containers running on a machine
- A container runtime responsible for pulling the container image from a registry, unpacking the container, and running the application. Examples include containerd and docker.
Deployment
A deployment instructs kubernetes how to create and update instances of an application. It can be imagined similar to a blueprint. The term 'deployment' may also refer to the group of pods and replicas defined by one or more configuration files.
Pod
A pod is an abstraction that represents a group of one or more application containers, and shared resources. Some shared include storage and a private network. They are meant to represent a logical host, and a rough parallel might be a physical machine running a service, although this machine may have multiple network adapters. A deployment creates pods, and not containers.
ReplicaSet
A ReplicaSet, often referred to as a pod replica, is an identical copy of pod. They can be used for many things, most commonly high availability and load balancing.
Service
A service in Kubernetes is is an abstraction that defines a logical set of Pods and a policy to access them. A Service is defined using YAML or JSON, and is primarily used to expose a network application that's running on one or more Pods in a cluster. They also route traffic across a set of Pods, allowing Pods to die and replicate without impacting the application.
kubectl
kubectl
is the Kubernetes command line tool used to run commands against clusters. You can use kubectl
to deploy applications, inspect and manage cluster resources, and view logs. The general format of the command follows kubectl [action] [resource]
minikube
minikube
creates a local Kubernetes cluster for development. It can be configured to deploy on bare metal, containers (like docker), or a VM (QEMU).
Commands
Common commands
- kubectl get - list resources
- kubectl describe - show detailed information about a resource
- kubectl logs - print the logs from a container in a pod
- kubectl exec - execute a command on a container in a pod
Start minikube
minikube start
Stop minikube
minikube stop
Expose services running in minikube
minikube services
View the dashboard for minikube
(run in new terminal window)
minikube dashboard
Check that kubectl
is configured to talk to the cluster
kubectl version
View nodes in the server
kubectl get nodes
List deployments
kubectl get deployments
Start a proxy to access the private network
kubectl proxy
Access the API of a pod (through the proxy)
curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/
Where $POD_NAME
is the name of a pod, you can get this information with kubectl get pods
Start a Bash session in a Pod's container
kubectl exec --ti $POD_NAME -- bash
Create a new Service and expose it to external traffic
kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080
Apply a new label to pods
kubectl label pods "$POD_NAME" version=v1
See if a Service is load-balancing traffic
kubectl describe services/$SERVICE_NAME
Set a different desired amount of replicas for a deployment
kubectl scale deployments/$DEPLOYMENT_NAME --replicas=$DESIRED_NUM_OF_REPLICAS
Tutorials
https://kubernetes.io/docs/tutorials/hello-minikube/ https://kubernetes.io/docs/tutorials/kubernetes-basics/