COURSE 5 – CONFIGURATION MANAGEMENT AND THE CLOUD

Module 2: Docker & Kubernetes

GOOGLE IT AUTOMATION WITH PYTHON PROFESSIONAL CERTIFICATE

Complete Coursera Study Guide

Last updated:

INTRODUCTION – Docker & Kubernetes

In this module, you’ll embark on the journey of deploying Puppet on your local machine, laying the groundwork for creating and applying Puppet rules, managing resource relationships, and organizing Puppet modules. Through hands-on exercises, you’ll delve into the intricacies of Puppet nodes and node definitions, understanding their pivotal role in enforcing rules across your fleet. The exploration extends to Puppet’s certificate infrastructure, unveiling the underlying logic behind server-client trust mechanisms, including concepts like public key infrastructure and secure socket layer, ensuring the integrity and authenticity of client interactions.

With a solid foundation established, you’ll witness Puppet deployment in action, gaining practical insights into updating, modifying, and testing manifests deployed to your fleet. Through Puppet parser validate commands, you’ll ensure the correctness of syntax, while exploring the nuances between production and testing environments. Moreover, you’ll learn strategies for safely rolling out changes, modifications, or updates, including the utilization of development environments and the implementation of early adopters or canary tracks to validate changes across subsets of machines. Armed with this knowledge, you’ll be well-equipped to navigate the complexities of Puppet deployment and management, driving efficiency and reliability in your infrastructure management endeavors.

Learning Objectives

  • Deploy and run Puppet locally
  • Create, modify, and update Puppet rules
  • Understand the concepts of public key infrastructure and secure socket layer
  • Understand the difference between production and testing environments
  • Explore how canaries and development environments are helpful when deploying changes
  • Understand the benefits of multiple environments

PRACTICE QUIZ: DOCKER

1. You have created your first application and would like to test it before showing it to stakeholders. A colleague suggests using Docker to execute this task. What is Docker an example of?

  • An image
  • A host machine
  • A registry
  • A container technology (CORRECT)

Correct. Some would consider Docker the most popular containerized technology to test new software on your machine.

2. You have been talking to a colleague about how beneficial Docker has been to you for packaging and running applications in containers over the past several weeks. Your colleague has finally decided to install Docker on their local machine and reaches out to you for help with the installation process. Which method can your colleague execute to get Docker up and running on their machine?

  • Installing Docker from the Docker website based on their operating system (CORRECT)
  • Executing the docker run hello-world command from the command line
  • Connecting to your machine and transferring Docker over to their local machine
  • Docker will automatically download to your colleague’s machine when they deploy their first application

Correct. Your colleague can install Docker, based on their operating system, from the Docker website.

3. A colleague is discussing the combination of application code, data files, configuration, and libraries that are needed to run an application. What Docker term are they referring to?

  • A tag
  • Layers
  • An image (CORRECT)
  • A container

Correct. An image contains all of the dependencies needed to run an application.

4. A new programmer with your company has run into the issue of how to test multiple independent components together, which components must work properly in order for the application to run smoothly. What advice would you give the programmer to make their development process more efficient?

  • Use multiple registries to test the application.
  • Use multiple containers to test the different microservices of the application. (CORRECT)
  • Reprogram the components so they are dependent on each other.
  • Update the tags for each component to the same name.

Correct. Using multiple containers to test the entirety of the application can be beneficial because the microservices are independent from one another.

5. You share a new idea for an application with your team to get their feedback and any advice to make the application better. Some members of your team provide feedback on the build artifacts. Which of the following are examples of build artifacts? Select all that apply.

  • Libraries (CORRECT)
  • Documentation (CORRECT)
  • Scripts (CORRECT)
  • Local machine

Correct. Build artifacts are items created during the build process, including containers, documentation, libraries, and scripts.

PRACTICE QUIZ: KUBERNETES

1. What are some of the advantages of Kubernetes? Select all that apply.

  • Kubernetes has become a de facto industry standard. (CORRECT)
  • Kubernetes replaces other container engines.
  • Kubernetes adds self-healing features (like fault tolerance and load balancing) across multiple servers. (CORRECT)
  • Kubernetes debugging and troubleshooting is easy.

Correct. And Kubernetes has a lot of industry “buzz”.

Correct. This is true even in different regions.

2. What is the easiest tool for local developers using Windows or macOS to learn Kubernetes?

  • Docker Desktop (CORRECT)
  • kind
  • k3s
  • MicroK8s

That’s right! Docker Desktop is easiest for non-production-grade environments, with built-in support for Kubernetes.

3. In Kubernetes, what is a Pod? Select all that apply.

  • A Pod is a single container that can be co-located with other containers on the same host machine.
  • A Pod is a group of multiple containers that each have a different network namespace, but can communicate over localhost.
  • A Pod is the smallest deployable unit in Kubernetes, consisting of one or more containers. (CORRECT)
  • A Pod is a Kubernetes resource that defines the desired state of one or more containers and is used by higher-level controllers. (CORRECT)

Correct. This accurately describes a Pod. These containers share the same resources and network stack.

Correct. This highlights the role of a Pod as a Kubernetes resource used to define the desired state of containers, and is managed by higher-level controllers like ReplicaSets or Deployments.

4. What is the purpose of a Kubernetes Service?

  • To provide stable network endpoints for Pods (CORRECT)
  • To manage container deployments within a Kubernetes cluster
  • To execute batch jobs in a Kubernetes environment
  • To store and manage configuration data for applications running in a Kubernetes cluster

Correct. Kubernetes Service provides stable network endpoints for Pods, enabling reliable communication between different components of an application or services running within a Kubernetes cluster

5. What is the primary purpose of a Kubernetes Deployment?

  • To manage container images and run Docker containers in Kubernetes
  • To provide declarative updates and automate the management of replica sets of Pods (CORRECT)
  • To store and manage configuration data for applications running in a Kubernetes cluster
  • To monitor and alert on the health of Kubernetes nodes and Pods

Correct. The primary purpose of a Kubernetes Deployment is to provide declarative updates and automate the management of replica sets of Pods, ensuring the desired state is consistently maintained.

WORK WITH CONTAINERS ON GCP

1. Which of the following commands did you use to build a Docker image based on a simple node application?

  • docker build -t node-app (CORRECT)
  • docker compose node-app
  • docker pull node
  • docker create node-app

2. What is the primary purpose of the docker run command in Docker containerization?

  • To build a new Docker image from a Dockerfile
  • To download and install Docker images from the Docker Hub
  • To remove an existing Docker container from the host system
  • To start a new Docker container based on a specified image (CORRECT)

3. Which option is used with the docker logs command to display logs in real-time as they are generated?

  • -t
  • -r
  • -l
  • -f (CORRECT)

4. Which of the following options demonstrates the correct usage of the docker inspect command to retrieve specific information about a Docker container? Select all that apply.

  • docker inspect –format ‘{{ .State.Status }}’ mycontainer (CORRECT)
  • docker inspect -f ‘{{ .Config.Image }}’ mycontainer (CORRECT)
  • docker inspect –container mycontainer
  • docker inspect -l mycontainer

5. When debugging a Docker container, what is a common method for inspecting the running processes and system resource usage?

  • Inspecting the container’s Dockerfile
  • Using the docker logs command
  • Running the docker restart command
  • Utilizing the docker exec command (CORRECT)

6. What is the purpose of the docker pull command in Docker containerization?

  • To push changes made in a local container to the Docker Hub
  • To create a new Docker container
  • To download a Docker image from the Docker Hub repository to the local system (CORRECT)
  • To upload a Docker image to the Docker Hub repository

7. What is the primary purpose of pushing Docker images to Google Artifact Registry?

  • To securely store, manage, and distribute Docker container images (CORRECT)
  • To create virtual machines on Google Cloud Platform
  • To monitor network traffic between containers in a cluster
  • To download and use Docker images from the Google Cloud Platform

8. Which Google Cloud Platform (GCP) service is specifically designed for orchestrating and managing Docker containers?

  • Google Cloud Storage
  • Google Cloud SQL
  • Google Kubernetes Engine (GKE) (CORRECT)
  • Google App Engine

9. What role does Google Container Registry (GCR) play in Docker container management on Google Cloud Platform?

  • GCR is a monitoring tool for Docker containers in GCP.
  • GCR is a service for automatically updating Docker images in running containers.
  • GCR is a managed service for storing, managing, and securing Docker container images. (CORRECT)
  • GCR is a load balancer for distributing traffic across multiple Docker containers.

10. What is Google Kubernetes Engine (GKE) used for in the context of scaling containers on GCP?

  • Google’s proprietary containerization technology
  • A tool for designing container architectures
  • Creating virtual machines for running containers
  • Managed Kubernetes service for deploying, managing, and scaling containerized applications (CORRECT)

11. What is the purpose of a Dockerfile when building Docker images in containers?

  • A Dockerfile is used to launch and run a Docker container, providing runtime parameters and environment variables.
  • A Dockerfile is only necessary when pulling pre-built Docker images from the Docker Hub repository.
  • A Dockerfile defines the configuration of a Docker container, specifying the base image, adding files, and running commands to create a custom image. (CORRECT)
  • A Dockerfile is a containerization tool used to secure Docker containers and prevent unauthorized access.

12. In the lab, you used this line of code:

docker run -p 4000:80 --name my-app node-app:0.1

What does this command do?

  • Pulls the latest version of the “node-app” image from Docker Hub and runs it on port 4000 with the container name “my-app”.
  • Creates a new Docker image tagged as “node-app:0.1” and starts a container with the name “my-app” running on port 80.
  • Runs the “node-app” container, maps port 4000 on the host to port 80 in the container, and assigns the container the name “my-app”. (CORRECT)
  • Stops the running container named “node-app,” renames it to “my-app,” and maps port 4000 to port 80.

13. What is the purpose of the docker inspect command?

  • To remove a specified Docker container from the system
  • To start a stopped Docker container with the given name or ID
  • To retrieve detailed information about a Docker object, such as a container, image, network, or volume (CORRECT)
  • To create a new Docker container based on the provided configuration file

14. Which authentication method is commonly used when pushing Docker images to Google Artifact Registry?

  • Public access without authentication
  • OAuth 2.0 authentication (CORRECT)
  • Google Cloud Platform API key
  • Username and password authentication

15. Which Google Cloud Platform (GCP) service allows you to run Docker containers in a managed environment, handling tasks such as cluster management, scaling, and load balancing?

  • Google Cloud Storage
  • Google Cloud Run
  • Google Compute Engine (GCE)
  • Google Kubernetes Engine (GKE) (CORRECT)

16.  How can Docker containers be deployed on Google Cloud Platform?

  • By building Docker images within Google Cloud Platform’s web console
  • By directly uploading Docker images to a Google Cloud Storage bucket
  • By pushing Docker images to Google Container Registry and then deploying them using appropriate GCP services (CORRECT)
  • By converting Docker images into Google App Engine applications

17. True or false: When running a docker logs command, you don’t have to write the entire container ID, as long as the initial characters uniquely identify the container.

  • True (CORRECT)
  • False

18. What is a commonly used tool for debugging Docker containers that provides real-time monitoring of system resources, container logs, and running processes?

  • docker compose command
  • docker create command
  • docker stop command
  • docker stats command (CORRECT)

19. Which of the following options correctly demonstrates the command to push a Docker image to Google Artifact Registry?

  • docker push gcr.io/my-project/my-image:latest (CORRECT)
  • docker push my-image:latest gcr.io/my-project
  • docker push my-image@gcr.io/my-project:latest
  • docker push gcr.io:my-project/my-image:latest

20. What is the primary benefit of using Docker with Google Cloud Platform (GCP)?

  • Docker enables direct integration with GCP’s machine learning services.
  • Docker allows direct access to Google’s internal databases and services.
  • Docker provides a consistent and portable environment for deploying applications across various GCP services. (CORRECT)
  • Docker automatically scales GCP resources based on application demand.

21. What is the purpose of the docker logs command in Docker container management?

  • To stop a running Docker container and retrieve its logs
  • To display the logs of a running Docker container (CORRECT)
  • To delete the logs of a specific Docker container
  • To view the Docker engine’s system logs

22. Which of the following options demonstrates the correct usage of the docker inspect command to retrieve network-related information about a Docker container? Select all that apply.

  • docker inspect –network mynetwork mycontainer
  • docker inspect –format ‘{{ .NetworkSettings.Networks }}’ mycontainer  (CORRECT)
  • docker inspect –format ‘{{ .NetworkSettings.Networks }}’ mycontainer (CORRECT)
  • docker inspect –network ls

23. What is Kubernetes in the context of scaling containers on Google Cloud Platform (GCP)?

  • A Google Cloud service for creating container images
  • A virtualization technology for running containers
  • A programming language for building containerized applications
  • An open-source container orchestration platform (CORRECT)

24. What is a common technique for debugging issues in Docker containers when troubleshooting runtime problems?

  • Changing the container image
  • Inspecting container logs (CORRECT)
  • Modifying the host system configuration
  • Restarting the Docker Daemon

25. Which of the following statements is true about the docker pull command?

  • It automatically starts a new Docker container after pulling an image.
  • It deletes the local Docker image after pulling it from the Docker Hub.
  • It can only pull images from the official Docker Hub repository. (CORRECT)
  • It requires authentication with a Docker Hub account.

26. Which of the following options correctly demonstrates the usage of the docker run command to start a Docker container with specific configurations?

  • docker run -v /host/path:/container/path myimage
  • docker run –image mycontainer:latest -p 8080:80
  • docker run -it –name mycontainer myimage (CORRECT)
  • docker run start -d mycontainer:latest

27. What is the purpose of building Docker images in containerization?

  • To download and install Docker software on a host machine
  • To create a lightweight, standalone, executable package that includes an application and its dependencies (CORRECT)
  • To run multiple Docker containers simultaneously
  • To manage Docker networks and volumes

28. Which statement accurately describes the relationship between Google Kubernetes Engine (GKE) and Google Cloud Platform (GCP)?

  • GKE is a standalone service unrelated to cloud platforms, provided by a different company.
  • GKE is a container registry service provided by Google Cloud Platform.
  • GKE is a managed Kubernetes service offered by Google Cloud Platform. (CORRECT)
  • GKE is an entirely separate cloud platform unrelated to Google Cloud Platform.

GRADED ASSESSMENT FOR MODULE 2

1. A developer reached out to you to better understand Docker. The developer knows it is used to package and run applications but could not remember what the environment was called. In what environment is Docker run?

  • An image
  • A container (CORRECT)
  • A repository
  • An extension

2. You and a colleague are collaborating on a project where you will use Docker images. You mentioned the benefits of Docker images and how they are composed of multiple files. Your colleague asked what Docker images do. What can you tell them?

  • They run your program in half the time.
  • They add or remove files from the previous layer. (CORRECT)
  • They debug your code automatically.
  • They organize different types of clusters.

3. You are ready to run Docker containers on a virtual machine. Which command should you use to create and start a Docker container?

  • docker command container
  • docker start
  • docker container
  • docker run (CORRECT)

4. Imagine you are a Python developer working on a web application that consists of the main application and a helper component responsible for logging. You want both components scheduled to run on the same machine and managed as a single entity. Why would Pods best serve your needs?

  • Pods enable data sharing.
  • Pods simplify inter-container communication.
  • Pods facilitate co-location. (CORRECT)
  • Pods ensure high availability.

5. You are a DevOps engineer working for a rapidly growing e-commerce company. With the upcoming Black Friday sale, you anticipate a surge in traffic and want to ensure that your Python-based web application can handle the increased load without any downtime. Which Kubernetes resource would you primarily use to maintain the desired number of web server instances?

  • Pods
  • Service
  • Deployment (CORRECT)
  • ConfigMap

6. You’re setting up a Kubernetes cluster for a small application that you don’t plan to offer to the general public. It’s time to choose the machine type for your nodes. Which of the following is probably the best choice?

  • A general-purpose machine (CORRECT)
  • A compute-optimized machine
  • A memory-optimized machine
  • An accelerator-optimized machine

7. You just got a new job in the IT department of a software firm. You overhear two of your new colleagues talking about the organization’s local development cluster. What do you think this cluster might be used for? Select all that apply.

  • To support low latency, particularly in zones with poor network connectivity
  • Rapid iteration and debugging of applications before deploying them to production clusters (CORRECT)
  • Data storage to comply with data governance requirements
  • Application development and testing (CORRECT)

8. You’ve decided to run your docker containers on Google Cloud Platform, and you’re about to choose which service to use. What are some advantages of Google Kubernetes Engine (GKE)?

  • It gives you control of all of your configurations. (CORRECT)
  • It offers self-healing clusters. (CORRECT)
  • You can choose GKE Autopilot as a fully managed option. (CORRECT)
  • It accommodates only stateless applications.

9. Which of the following is the best phrase to complete this sentence? Containers allow users to _____________________.

  • run an application using a snapshot of the programmer’s system. (CORRECT)
  • preview an application before downloading it.
  • run an application code one line at a time.
  • quickly dissect an application for troubleshooting purposes

10. Rebecca is working on a Python application that needs to integrate with an external logging service. She wants to create an alias for this external service, allowing her to reference it using a Kubernetes DNS name. Which Kubernetes service types should Rebecca consider for this process?

  • ClusterIP
  • LoadBalancer
  • NodePort
  • ExternalName (CORRECT)

11. Another developer asked where the central repository is for downloading containers. What should you tell them?

  • Docker Hub (CORRECT)
  • Docker Host
  • Docker Repo
  • Docker Central

12. Maria is working on a distributed Python application where multiple components need to communicate with each other frequently. Why does she decide to use Pods in Kubernetes for inter-container communication?

  • Because they require complex inter-process communication (IPC) mechanisms.
  • Because they allow containers to share the same network namespace.
  • Because they eliminate the need for complex inter-process communication (IPC) mechanisms and shared file systems. (CORRECT)
  • Because they provide isolated storage for each container.

13. You’re setting up your first Kubernetes cluster. What is the absolute minimum number and type of virtual machines you must have to function as a cluster?

  • One cluster control plane machine (CORRECT)
  • One cluster control plane machine and one worker node
  • One cluster control plane machine and one node for data processing
  • One cluster control plane machine and one node for hosting a web server

14. You’ve decided to run your docker containers on Google Cloud Platform, and you’re about to choose which service to use. What are some advantages of Google Compute Engine?

  • It offers easy integration with other GCP services. (CORRECT)
  • It tends to have faster performance. (CORRECT)
  • You can use any programming language.
  • It’s a fully managed platform.

15. Containers are not just for packaging. What else are they used for? Select all that apply.

  • Scaling applications outside the containers.
  • Describing the key properties of an application
  • Testing different instances of the same application (CORRECT)
  • Sharing an application with peer programmers (CORRECT)

16. Your development team was tasked to pilot using Docker images in the company’s next big programming project. What components are included in a Docker image? Select all that apply.

  • Application code (CORRECT)
  • Data files (CORRECT)
  • Other running containers
  • Configuration files (CORRECT)

17. You informed another programmer that Cloud Run can help them launch containers. They asked what the benefit is of using Cloud Run. What should you tell them?

  • It allows you to deploy code written in any programming language if you can put the code into a container. (CORRECT)
  • It allows you to run an application in the background continuously.
  • It allows you to reuse multiple containers at once for different programs.
  • It allows you to assign it to a static IP address so that it can be accessed from anywhere.

18. Samantha, a lead developer, is explaining to her team how Kubernetes Deployments work. She mentions that Deployments use a specific resource to ensure the desired number of identical Pods are always running, even if some Pods fail or are deleted. What resource is Samantha referring to?

  • Service
  • ReplicaSet (CORRECT)
  • ConfigMap
  • PersistentVolumeClaim

19. Which of the following statements about containers are true? Select all that apply.

  • You can use containers to test different instances of the same application. (CORRECT)
  • You can use containers to describe the key properties of an application.
  • You can use containers to scale applications outside the containers themselves.
  • You can use containers to share applications with peer programmers. (CORRECT)

20. Samantha is a Python developer working on a web application that has a user interface, an API layer, and a database. She wants to enable communication between the API layer and the database, ensuring that these exchanges are internal to the application. Which Kubernetes service type should Samantha use to achieve this?

  • NodePort
  • ClusterIP (CORRECT)
  • LoadBalancer
  • ExternalName

21. You have been asked to present at your team’s next weekly meeting on the benefits of Docker. Which of the following are benefits of using Docker? Select all that apply.

  • It provides a consistent runtime across different environments. (CORRECT)
  • It allows you to manage containers on a remote server. (CORRECT)
  • It provides clients with data on their program’s runtime.
  • It allows you to package your application and everything it needs in a portable container. (CORRECT)

22. You explain to another programmer that it is typical for a Docker image to be composed of up to a dozen layers. What is the purpose of having multiple layers?

  • To store your data on separate layers
  • To make it easier to debug your program
  • To allow a different programmer to edit the code in different layers
  • To keep the final images as small as possible (CORRECT)

23. You are developing a Python-based data processing application. One component of the application processes raw data, while another component analyzes the processed data. You want these components to easily exchange data. You also want to ensure that the processed data persists even if one of the containers restarts. Why are Pods in Kubernetes a good fit for this task? Select all that apply.

  • Pods enable data sharing. (CORRECT)
  • Pods facilitate co-location.
  • Pods simplify inter-container communication.
  • Pods share the same network namespace. (CORRECT)

24. Alex is a software developer who has recently updated the code for a Python-based API. He wants to deploy the new version without causing any disruption to the users. Additionally, in case of any issues with the new version, he wants the ability to revert to the previous version seamlessly. Which features of Kubernetes Deployments would Alex rely on for these requirements? Select all that apply.

  • Rolling updates (CORRECT)
  • Persistent storage
  • Rollbacks (CORRECT)
  • Node affinity

25. You’re setting up a Kubernetes cluster and want to use autoscaling. What might you consider as you decide on the maximum number of nodes allowed for your application? Select all that apply.

  • The needs of your application
  • Which region you selected
  • The expected amount of traffic (CORRECT)
  • Your budget (CORRECT)

26. Kubernetes clusters use what is called the “declarative approach.” What does this mean?

  • The user must continually “declare” how the execution and maintenance of the applications should be handled.
  • The user must continually “declare” how CPU, memory, and storage should be allocated.
  • The user must “declare” the desired state of their applications. (CORRECT)
  • The user must continually “declare” the desired health of the cluster.

27. You just got a new job in the IT department of a medical practice. Considering the fact that the organization’s data includes confidential patient records, what sorts of clusters might you choose to work with? Select all that apply.

  • Local development cluster
  • On-premises cluster (CORRECT)
  • Public cloud-managed cluster

28. You’ve decided to run your Docker containers on the Google Cloud Platform, and you’re about to choose which service to use. What are some advantages of Cloud Run?

  • It has a huge amount of flexibility in its configuration.
  • It can scale down to zero. (CORRECT)
  • It can accommodate stateful applications.
  • It’s a fully managed platform (CORRECT)

29. A team of developers needs to focus on the application logic of a program. One developer suggests integrating GCP with Docker, as it provides services to containerized applications. Which services does the integration of GCP and Docker perform? Select all that apply.

  • Build containers (CORRECT)
  • Debug containers
  • Run containers (CORRECT)
  • Deploy containers (CORRECT)

CONCLUSION – Docker & Kubernetes

In conclusion, this module has provided a comprehensive journey into the deployment and management of Puppet, a powerful tool for automating infrastructure management. You’ve learned how to set up Puppet on your local machine, create and apply Puppet rules, manage resource relationships, and organize Puppet modules effectively. Additionally, you’ve gained insights into Puppet nodes and node definitions, understanding their crucial role in enforcing rules across your infrastructure.

Furthermore, the exploration of Puppet’s certificate infrastructure has shed light on the mechanisms behind server-client trust, ensuring secure interactions within your environment. Through practical exercises, you’ve witnessed Puppet deployment in action and learned essential techniques for updating, modifying, and testing manifests. Additionally, you’ve gained strategies for managing production and testing environments, ensuring seamless rollout of changes while mitigating risks.

As you move forward, armed with the knowledge and skills acquired in this module, you’ll be well-prepared to implement Puppet effectively in your infrastructure, driving efficiency, reliability, and security in your automation endeavors.