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/
|