A namespace is a name scope, not a security boundary by default. When you create a pod in the namespace called staging and another team creates a pod with the same name in the namespace called prod, Kubernetes treats them as two completely separate objects. The full identity of a resource is the combination of its namespace, its kind, and its name.
Most things you create in Kubernetes are namespaced: pods, deployments, services, config maps, secrets, persistent volume claims, and roles. A handful of things are cluster-wide and live outside any namespace, including nodes, persistent volumes, storage classes, namespaces themselves, and cluster roles. If a resource describes shared infrastructure, it is usually cluster-scoped.
Every cluster starts with four namespaces. The default namespace is where objects land if you do not specify one. kube-system holds the control plane components like the DNS pods and the kube-proxy. kube-public is readable by everyone and mostly holds cluster info. kube-node-lease tracks node heartbeats for faster failure detection.