Welcome to “Container Orchestration.” After watching this video, you will be able to define the challenges of container management, determine when container orchestration is needed and, demonstrate container orchestration benefits. Everyone’s container journey starts with one container. However, things don’t stay this way for long. Over time, new applications are written, and projects are deployed globally to increase availability. That one initial container inevitably becomes several containers. And Initially, that growth is easy to handle. But soon it is overwhelming. Consider connecting, managing, and scaling hundreds or thousands of containers into a large application like a database or web app. This can easily get out of control. To create, scale, and manage large numbers of containers, container orchestration is needed. Container orchestration is a process that automates the container lifecycle of container-based (or “containerized”) applications. This includes deployment, management, scaling, networking, and availability. Container orchestration is a necessity in large, dynamic environments, since it: Streamlines complexity. Enables hands-off deployment and scaling. Increases speed, agility, and efficiency. Seamlessly integrates into CI/CD workflows and DevOps practices. And allows development teams to use resources more efficiently. Container orchestration can be implemented on-premises, and on public, private, or multi-cloud environments. It is often a critical part of an organization’s security, orchestration, automation, and response requirements, also known as “SOAR” requirements. Container orchestration tools have a wide variety of features. These features include: Defining which container images make up the application, and where they are located (in what registry) Improving provisioning and deployment of containers for a more automated, unified, and smooth process. Securing network connections between containers. Ensuring availability and performance by relocating the containers to another host if an outage or shortage of system resources occurs. Scaling containers to meet demand, and load balance requests. Handling resource allocation and scheduling of containers to the underlying infrastructure. Performing rolling updates and roll backs. And conducting health checks to ensure applications are running, or performing the necessary actions when checks fail. Container orchestration uses configuration files written in YAML or JSON. These files configure each container so it can find resources, establish a network, and store logs. Container orchestration also automatically schedules the deployment of a new container to a cluster, and finds the right host based on predefined settings or restrictions. Additionally, container orchestration manages the container's lifecycle based on specifications in the configuration file. This includes system parameters (like CPU and memory), and file parameters (like proximity and file metadata). And container orchestration supports scaling and enhances productivity, through automation. Here are some well-known container orchestration tools. Marathon is a framework for Apache Mesos, an open-source cluster manager that was developed by the University of California at Berkeley. It allows you to scale container infrastructure by automating the bulk of management and monitoring tasks. HashiCorp’s Nomad is a free and open-source cluster management and scheduling tool that supports Docker and other standalone, virtualized, or containerized applications on all major operating systems across all infrastructure, whether on-premises or in the cloud. This flexibility lets teams work with any type and level of workload. Docker Swarm automates the deployment of containerized applications but was designed specifically to work with Docker Engine and other Docker tools making it a popular choice for teams already working in Docker environments. Developed by Google and maintained by the Cloud Native Computing Foundation (CNCF), the open-source platform Kubernetes is the de facto standard for container orchestration. Kubernetes automates a host of container management tasks including deployment, storage provisioning, load balancing and scaling, service discovery, and “self-healing”— the ability to restart, replace or remove a failed container. With broad functionality and an expanding ecosystem of open source supporting tools, Kubernetes is widely supported by leading cloud providers, many of whom now offer fully managed Kubernetes services. Container orchestration helps to meet business goals and increase profitability by using automation. The benefits of container orchestration for developers and administrators include: Increased productivity: Removing the burden of individually installing and managing each container, which, in turn reduces errors and frees development teams to focus on application improvement. Faster deployments: Iteratively releasing new features and capabilities faster and deploying containers and containerized applications rapidly. Reduced costs: Being cost-effective since containers have lower overhead and use fewer resources than virtual machines or traditional servers. Stronger security: Sharing resources and isolating application processes, improving the container’s overall security. Easier scalability: Scaling applications using a single command. Faster error recovery: Maintaining high availability by detecting and resolving issues like infrastructure failures automatically. In this video, you learned that: Managing large numbers of containers is difficult Container orchestration automates the container lifecycle resulting in faster deployments, reduced errors, higher availability, and stronger security. Popular container orchestration tools include Marathon, Nomad, Docker Swarm, and Kubernetes. And, container orchestration improves productivity, deployments, costs, security, scalability, and error recovery.