113 lines
4.6 KiB
Markdown
113 lines
4.6 KiB
Markdown
# 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](https://kubernetes.io/docs/tutorials/kubernetes-basics/explore/explore-intro/) 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](https://kubernetes.io/docs/setup/production-environment/container-runtimes/) responsible for pulling the container image from a registry, unpacking the container, and running the application. Examples include containerd and docker.
|
||
|
||
## Deployment
|
||
A [deployment](https://kubernetes.io/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro/) 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](https://kubernetes.io/docs/tutorials/kubernetes-basics/explore/explore-intro/) 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](https://kubernetes.io/docs/concepts/workloads/controllers/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](https://kubernetes.io/docs/concepts/services-networking/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/ |