kubernetes does:
graph LR
client -- pushes manifest to --> conp
api -. talks to .-> kubelet
subgraph conp[master / control plane]
api[API service]
etcd[ETCD]
scheduler
cont[controller manager
--> creates the objects]
api --> etcd
scheduler --> api
cont --> api
end
subgraph worker[worker nodes]
kubelet
kubep[kube-proxy]
contr[container-runtime]
end
graph LR
api[API server]
scheduler
contrm[controller manager]
etcd
subgraph apigraph
api --- apid[communicates with you and other control planes]
end
subgraph schedulergraph
scheduler --- schedulerd[schedules your app]
end
subgraph controllergraph
contrm --- contrmd[perform cluster-level functions /n e.g. keeping track of worker nodes]
end
subgraph etcdgraph
etcd --- etcdd[data store - stores cluster config]
end
apigraph ~~~ schedulergraph ~~~ controllergraph ~~~ etcdgraph
graph LR
info{push info}
api[api server]
controller
scheduler
kubelet
contr[container runtime]
kubep[kube proxy]
info --> apigraph
apigraph --> controllergraph
controllergraph --> schedulergraph
schedulergraph --> kubeletgraph
kubeletgraph -- instructs --> contrgraph
contrgraph ~~~ kubep
subgraph master[master node]
subgraph apigraph[ ]
api --- apid[writes to etcd]
end
subgraph controllergraph[ ]
controller --- controllerd[creates the object]
end
subgraph schedulergraph[ ]
scheduler --- schedulerd[schedules work on the worker nodes]
end
end
subgraph worker[worker node]
subgraph kubeletgraph[ ]
kubelet
end
subgraph contrgraph[ ]
contr --- contrd[pulls required container]
end
subgraph kubepgraph[ ]
kubep --- kubepd[readies load balancer]
end
end
graph LR
subgraph wn1[worker node 1]
subgraph pod1[pod 1 . IP A]
ca[container A]
end
subgraph pod2[pod 2 . IP B]
cb[container B]
cd[container D]
end
subgraph pod3[pod 3 . IP C]
cc[container C]
end
end
A method for exposing a network application that is running as one or more Pods in your cluster.
source: https://kubernetes.io/docs/concepts/services-networking/service/
graph LR deployment[deployment - manages replicas] --> pa[Pod A] deployment --> pb[Pod B] deployment --> pc[Pod C] pa[pods - number of instances of your application runs in] --> service pb --> service pc --> service service[service - exposes your application] --> ce[common entry]
graph TB con[controller] -- manages --> obj[object] con -- creates --> eo[event objects] eo -.-> con eo -.-> obj
= seperate computer
per restart takes longer because kube has exponential backoff.
kube manifests consists of following:
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:latest
k get pods <id> -owide (to get IP address)
minikube ssh (one off pod with curl command)
k port-forward <id> <port:port> (has a lot of layers between you and the pod)
init containers