A Kubernetes pod is essentially a group of one or more containers, with shared storage/network and a specification on how to run the containers. It's the smallest deployable unit in Kubernetes.
Not necessarily. A pod can encapsulate multiple containers that need to work together, sharing the same resources and local network, which facilitates inter-container communication.
Pods experience several phases: Pending (initialization), Running (operational), Succeeded/Failed (completion status), each reflecting the current state and readiness in the cluster.
Containers in a pod share the same IP address and port space, allowing them to communicate using localhost, as they're within the same network namespace.
Kubernetes scheduler assigns pods to nodes based on several factors like resource requirements, scheduling constraints, and policies.
pods can communicate with each other using the Kubernetes networking model. Services are commonly used to enable network access to a set of pods, facilitating communication across different pods.