Kubernetes Networking Model
- Refer Here to understand the internals of kubernetes networking
- K8s dictates following
- all Pods can communicate with all other Pods without using network address translation (NAT).
- all Nodes can communicate with all Pods without NAT.
- the IP that a Pod sees itself as is the same IP that others see it as.
- All the Pods in the k8s cluster have a CIDR Range
- To implement these k8s takes linux kernel networking features such as netfilter and iptables.
Kubernetes Pods
- K8s Pods are atomic unit in k8s cluster.
- Pods have containers which run applications
- Consider the wordpress example. We need to have wordpress container and mysql container for wordpress to work
- To run this with Pods

- Now lets understand scaling.

- Pod life cycle Refer Here
- Pod Phases Refer Here
- Pod restart policy: Always, Never, OnFailure
-
Lets write a spec which sleeps for 2 seconds (sleep 2)
- restart policy Never
- not specify restart policy in spec
-
Refer Here for the specs

-
Pods can run 3 types of containers
- Containers => Where we run our applications
- init containers:
- These containers are created one by one and only after its completion, the normal containers are created.
- We will use these containers for any initial setup or configuration kind of purposes
- ephemeral containers:
- No guarantee containers, they are used rarely in the case of debugging or trouble shooting containers in Pod
- Lets create a Pod with 2 init container which sleep for 5 seconds and then in container we run nginx.
- Refer Here for the manifest written
-
Now create the pod
- Writing YAML files to describe the status is referred as declarative approach, k8s also supports imperative approach
kubectl run nginx --image=nginx --restart=Never

* Refer Here for some example imperative commands
Replication Controller
- Refer Here for official docs
- There are many cases where we would want to run multiple instance of a application.
- In k8s we run application in Pod and to set mutlple instances we use replica sets or replication controllers.
- Lets try to run 5 nginx Pods in our cluster
- Refer Here for the manifest

- We got an error with selector
- To resolve this error we need to understand the concept of labels in k8s.
- Refer Here for manifest with labels defined and selectors

- Refer Here for the fix with matchLabels section removed
- NOte: We will work on this tommorow
Labels in K8s
- Refer Here
- In k8s as part of metadata we can apply labels to the resources.
- These labels help in querying resources based on conditions according labels defined

- Lets create 2 pod specs with label specifications as shown above
- Refer Here for the changes


- Lets run some command line selectors


