Here we see the trimmed down version of Kubernetes information. It doesn't contain everything but the mostly interacted concepts. If you want a full information, you should refer to Kubernetes documentation.
Architecture
- Cluster: A Cluster is formed of Nodes for running containerised applications.
- Node: A Node is either a virtual or a physical machine that runs in Kubernetes Cluster.
- Pod: A Pod is a single instance of a process in Kubernetes Cluster. It contains one or many containers such as Docker.
Concepts
- Deployments manage their ReplicaSets.
- ReplicaSets manage their Pods.
- Pods manage their Containers.
- Containers contain your applications.
Responsibilities
- Ingress: An Ingress is responsible for handling HTTPS/HTTP requests before routing to Kubernetes Services. It makes sure that the Services are not directly exposed to outside.
- Deployment: A Deployment is responsible for running one or multiple replicas of an application and automatically replaces any instances that fail or become unresponsive. Deployments make sure that the application is always available to serve requests.
- ReplicaSet: A ReplicaSet is responsible for maintaining a stable set of Pods running at any given time. ReplicaSets make sure that a specified number of identical Pods are always up and running.
- Service: A Service is responsible for organising a deployed group of Pods in a Cluster. Services make sure that the Pods they manage have a name and unique Cluster IP.
- Pod: A Pod is responsible for running one or multiple containers within such as Docker. Pods represent a single instance of a running process in a Kubernetes Cluster.
- Volume: A Volume is a directory which is accessible by containers in a Pod. Similar to Docker volumes.
- ConfigMap: A ConfigMap is responsible for binding configuration files, environment variables, port numbers and last but not least some other configuration data to containers in Pods at runtime. ConfigMaps come in handy when keeping/sharing non-sensitive/plain configuration information.
- Secret: A Secret is responsible for storing and managing any sensitive information such as passwords, OAuth tokens, ssh keys etc.
- Namespace: A Namespace is responsible for organising Clusters into virtual sub-clusters. Namespaces come in hand when multiple teams or projects share the same Kubernetes Cluster. There can be many logically defined Namespaces in a Cluster and they all can communicate with each other.
Minikube
I assume that you already have it installed. Run command below to start it and check its status.
$ minikube start --vm-driver=virtualbox
$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
You can run $ minikube dashboard
command in order to access UI from the browser.
You can also run $ kubectl describe node minikube | grep InternalIP
command to obtain Minikube's IP address. This will help you to expose a Kubernetes Service to public access. You will need to build http(s)://minikube-ip:service-port
pattern.
References