Very necessary. Containerization outside of a local development environment becomes impossible to manage with a management layer of abstraction. Want high availability and regional fault tolerance? How are you going to manage thousands of machine across the globe, and deploy your application quickly to them in a zero down time manner?

Hard same. There were some projects I was working on at my last job where I was running a containerized software product for like four different district court units. Even that was getting unwieldy before we made the move to OpenShift. That allowed us to just let K8s deal with the nitty gritty for us.

Kubernetes is necessary if you want to deploy your applications on the cloud.Big cloud companies like aws , azure,firebase must use kubenetes to manage hundreds of thousens of applications on their services at the same time with each application requesting resources at the same time .In this kind of situation webservers can't do much thing.

Kubernetes no, an orchestrator yes. Try handling scaling, provisioning and availability of 1000s of containers without some help. Keeping track of all the network port mappings alone quickly becomes a headache.