Courseiva

Google Associate Cloud Engineer (ACE) — Questions 151225

769 questions total · 11pages · All types, answers revealed

Page 2

Page 3 of 11

Page 4
151
MCQmedium

Refer to the exhibit. A user 'admin@example.com' attempts to create a Compute Engine instance but fails with a permission error. Which permission is missing?

A.compute.instances.get
B.iam.serviceAccounts.actAs
C.compute.instances.create
D.compute.instances.setServiceAccount
AnswerB

iam.serviceAccounts.actAs is the 'Service Account User' permission, required to delegate the new instance's identity to a specific service account. Even with compute.instanceAdmin.v1, Compute Engine's authorization layer checks whether the caller can 'actAs' the service account on the project; without this, the create request is denied with a permissions error. Granting this on the service account (or project) allows the user to create instances that run as that service account, making it the exact missing permission.

Why this answer

The error occurs because when a user creates a Compute Engine instance with a service account, they need the `iam.serviceAccounts.actAs` permission on that service account. This permission allows the user to impersonate the service account and delegate its identity to the instance. Without it, the creation fails even if the user has `compute.instances.create`.

Exam trap

Google Cloud often tests the `iam.serviceAccounts.actAs` permission as a hidden requirement, trapping candidates who assume that `compute.instances.create` alone is sufficient for instance creation with a service account.

How to eliminate wrong answers

Option A is wrong because `compute.instances.get` is a read-only permission for viewing instance details, not required for creation. Option C is wrong because `compute.instances.create` is necessary but not sufficient; the user likely already has it, as the error is about the service account delegation, not the instance creation itself. Option D is wrong because `compute.instances.setServiceAccount` is used to change the service account on an existing instance, not to authorize the initial attachment during creation.

152
MCQmedium

A DevOps engineer needs to grant a service account the ability to pull images from a specific Container Registry repository in project 'my-project'. The service account is in project 'other-project'. Which command should the engineer use?

A.gcloud projects add-iam-policy-binding my-project --member user:admin@other-project.com --role roles/storage.objectViewer
B.gcloud iam service-accounts add-iam-policy-binding sa@other-project.iam.gserviceaccount.com --member serviceAccount:sa@other-project.iam.gserviceaccount.com --role roles/storage.objectViewer
C.gcloud projects add-iam-policy-binding other-project --member serviceAccount:sa@other-project.iam.gserviceaccount.com --role roles/storage.objectViewer
D.gcloud projects add-iam-policy-binding my-project --member serviceAccount:sa@other-project.iam.gserviceaccount.com --role roles/storage.objectViewer
AnswerD

This correctly adds an IAM policy binding on my-project, which owns the Container Registry artifacts, and defines the member as the service account from other-project using the `serviceAccount:` prefix. Since `roles/storage.objectViewer` grants read access to Cloud Storage objects that back GCR, this allows sa@other-project.iam.gserviceaccount.com to pull images and list repositories in my-project without needing a key or user account. The binding is cross-project: the member belongs to other-project, but the resource is in my-project, which is exactly the required configuration.

Why this answer

Cross-project IAM bindings require the resource owner project (my-project) to grant access to the service account principal. The correct command is 'gcloud projects add-iam-policy-binding' on the resource project.

153
MCQmedium

A team deploys an application on GKE and needs it to be accessible at https://api.company.com with automatic TLS certificate provisioning. They use a Global external Application Load Balancer. What handles the TLS certificate?

A.The GKE cluster automatically generates a self-signed TLS certificate for the domain
B.A Google-managed SSL certificate attached to the load balancer's HTTPS target proxy
C.Cloud DNS automatically provisions a TLS certificate when a domain is added
D.cert-manager in GKE automatically obtains Let's Encrypt certificates for the Ingress
AnswerB

A Google-managed SSL certificate is issued by Google's own CA, automatically renewed before expiry, and attached directly to the target HTTPS proxy of the external HTTP(S) load balancer. Domain ownership is verified via a DNS record, and once the certificate is active, you manage zero certificate lifecycle tasks. This is the native, fully managed GCP path for exposing a service securely over HTTPS.

Why this answer

A Global external Application Load Balancer uses an HTTPS target proxy to terminate TLS. To automatically provision and renew TLS certificates for a custom domain, you attach a Google-managed SSL certificate to that target proxy. Google manages the entire lifecycle, including domain verification via Cloud DNS, so no manual certificate generation or third-party tools are needed.

Exam trap

The trap here is that candidates confuse the Kubernetes Ingress resource (which can use cert-manager) with the Global external Application Load Balancer's HTTPS target proxy, which requires a Google-managed SSL certificate attached directly to the proxy, not a Kubernetes-native certificate solution.

How to eliminate wrong answers

Option A is wrong because GKE clusters do not automatically generate self-signed certificates for custom domains; self-signed certificates are only used for internal cluster communication or when explicitly configured, and they would not be trusted by public clients. Option C is wrong because Cloud DNS is a DNS service that manages domain records but does not provision TLS certificates; certificate provisioning is handled by Certificate Authority Service or Google-managed SSL certificates, not by Cloud DNS itself. Option D is wrong because cert-manager is a Kubernetes add-on that can obtain Let's Encrypt certificates, but it is not automatically deployed or managed by GKE; the question specifies a Global external Application Load Balancer, which uses an HTTPS target proxy, not a Kubernetes Ingress, so cert-manager is not the native or required solution.

154
Multi-Selectmedium

You are setting up a new GCP project for a microservices application. You need to select which APIs to enable. Which THREE APIs are likely required? (Choose 3)

Select 3 answers
A.storage.googleapis.com
B.cloudbuild.googleapis.com
C.container.googleapis.com
D.compute.googleapis.com
E.bigquery.googleapis.com
AnswersB, C, D

Cloud Build (cloudbuild.googleapis.com) is the managed CI/CD service used to compile source code and build container images. For microservices, each service is typically packaged as a separate container, and Cloud Build provides a reliable, serverless way to automate those builds via triggers and build steps. It integrates with Artifact Registry to store the resulting images, which are then deployed to GKE, making it a common and often essential part of a microservices deployment pipeline.

Why this answer

For a microservices application on Kubernetes, you need the Kubernetes Engine API (container.googleapis.com), and often the Cloud Build API (cloudbuild.googleapis.com) for CI/CD and Compute Engine API (compute.googleapis.com) as a dependency for GKE. Cloud Storage API is not necessarily required unless using Cloud Storage. BigQuery is for analytics.

155
MCQhard

Your GKE cluster nodes are running low on resources. You need to enable node pool autoscaling so that the cluster automatically adds and removes nodes based on demand. The node pool is named 'default-pool'. Which command completes this task?

A.gcloud container node-pools update default-pool --autoscaling enabled
B.gcloud container node-pools update default-pool --enable-autoscaling --min-nodes 1 --max-nodes 10
C.kubectl autoscale node-pool default-pool --min 1 --max 10
D.gcloud container clusters update my-cluster --enable-autoscaling --min-nodes 1 --max-nodes 10
AnswerB

This is the correct gcloud command to enable cluster autoscaler on a specific node pool. The `--enable-autoscaling` switch turns on autoscaling for the `default-pool`, and the `--min-nodes 1` and `--max-nodes 10` flags define the minimum and maximum size of the node pool. With this configuration, GKE's cluster autoscaler will automatically add or remove nodes within that range based on pending pod resource requests, which directly relieves the low-resource condition on the cluster's nodes.

Why this answer

gcloud container node-pools update with --enable-autoscaling enables autoscaling, and --min-nodes/--max-nodes set boundaries.

156
Multi-Selectmedium

A security engineer wants to audit all attempts to access a specific Cloud Storage bucket, including successful and failed read requests. Which THREE steps should they take? (Choose THREE)

Select 3 answers
A.Create a log sink to BigQuery for the bucket's admin activity logs.
B.Enable Data Access audit logs for the Cloud Storage service.
C.Use Log Explorer to filter for the bucket's data access logs.
D.Grant the auditor the roles/logging.viewer role on the project.
E.Enable Admin Activity audit logs for the bucket.
AnswersB, C, D

Enabling Data Access audit logs for the Cloud Storage service is correct because these logs specifically record every successful and failed read, write, and metadata operation on objects and buckets. By default, Data Access audit logs are disabled, so they must be explicitly turned on for Cloud Storage for the auditor to capture access attempts. Once enabled, each entry includes the principal, source IP, operation (e.g. storage.objects.get), and timestamp—providing the detailed evidence needed for an audit trail.

Why this answer

To audit data access, Data Access audit logs must be enabled for the bucket. Admin Activity logs only record configuration changes. Using Log Explorer allows filtering and analyzing logs.

Granting the logging viewer role is necessary to view the logs. Creating a sink is for exporting logs, not necessary for auditing.

157
MCQeasy

Which command creates a Cloud Storage bucket named 'my-archive-bucket' in the US multi-region using the modern gcloud CLI?

A.gcloud storage mk gs://my-archive-bucket --location=US
B.gcloud storage buckets create gs://my-archive-bucket --location=US
C.gcloud cloud-storage create my-archive-bucket --region=US
D.gsutil mk -l US gs://my-archive-bucket
AnswerB

This is the correct modern command to create a Cloud Storage bucket. `gcloud storage buckets create` is the dedicated subcommand, and it requires the bucket name as a `gs://` URI—`gs://my-archive-bucket`—which is globally unique across all of Google Cloud. The `--location=US` flag explicitly sets the bucket to the US multi-region, giving geo-redundancy across the contiguous United States at a lower cost than single-region or dual-region alternatives. This syntax is the current recommended replacement for the legacy `gsutil mb` command.

Why this answer

The modern gcloud CLI uses the `gcloud storage buckets create` command to create a Cloud Storage bucket, and the `--location=US` flag specifies the US multi-region. This command is part of the newer, unified `gcloud storage` command group that replaces the older `gsutil` tool for bucket management.

Exam trap

Google Cloud often tests the distinction between the modern `gcloud storage` command group and the legacy `gsutil` tool, and candidates may mistakenly choose a `gsutil` command or an invalid `gcloud` subcommand when the question explicitly requires the modern CLI.

How to eliminate wrong answers

Option A is wrong because `gcloud storage mk` is not a valid command; the correct subcommand is `gcloud storage buckets create`. Option C is wrong because `gcloud cloud-storage create` is not a valid gcloud command; the correct command group is `gcloud storage buckets`. Option D is wrong because `gsutil mk` is the older, legacy tool, and the question explicitly asks for the 'modern gcloud CLI'.

158
MCQmedium

A startup needs to send transactional emails (order confirmations, password resets) from their GCP-hosted application. Which GCP service handles high-volume email delivery?

A.Cloud Tasks with an email delivery queue
B.A third-party email delivery service such as SendGrid or Mailgun, integrated via API
C.Cloud Pub/Sub with an email topic subscriber
D.Cloud Functions triggered by Gmail API webhooks
AnswerB

Because GCP offers no built-in transactional email service, the standard pattern is to outsource sending to a dedicated email service provider such as SendGrid or Mailgun and call its REST API or SMTP relay from your GCP-hosted application. These providers handle deliverability, DKIM/SPF authentication, bounce processing, and provide analytics, which is exactly what production transactional email requires.

Why this answer

B is correct because GCP does not provide a native high-volume transactional email service. Third-party email delivery services like SendGrid or Mailgun are designed specifically for this purpose, offering dedicated SMTP relays, APIs, and reputation management to ensure reliable delivery of transactional emails such as order confirmations and password resets.

Exam trap

Google Cloud often tests the misconception that GCP provides a built-in email delivery service, leading candidates to choose Cloud Tasks or Pub/Sub, but these are generic messaging services that require integration with a dedicated email provider to actually send emails.

How to eliminate wrong answers

Option A is wrong because Cloud Tasks is a distributed task queue for asynchronous work execution, not an email delivery service; it cannot send emails directly and would still require an external email provider. Option C is wrong because Cloud Pub/Sub is a messaging service for event ingestion and distribution, not an email delivery mechanism; it would need a subscriber that integrates with an email service. Option D is wrong because Cloud Functions triggered by Gmail API webhooks are designed to react to incoming Gmail events, not to send high-volume transactional emails, and the Gmail API has strict sending limits and is not intended for programmatic bulk email.

159
MCQhard

A production GKE service processes payments and must maintain at least 3 replicas running at all times, even during node upgrades or Pod evictions. How should this be enforced?

A.Set the Deployment replica count to 6 — node upgrades will only affect half at a time
B.Create a PodDisruptionBudget with minAvailable: 3 targeting the payment service Pods
C.Add node affinity rules pinning all 3 replicas to specific long-lived nodes
D.Enable cluster autoscaler with minNodeCount=3 — this preserves Pod availability
AnswerB

A PodDisruptionBudget with minAvailable: 3 is the correct mechanism because it constrains voluntary evictions, such as those triggered by GKE node upgrades or cluster autoscaler scale-down. When the eviction API is called to drain a node, the PDB controller checks that evicting the Pod would not reduce the total available replicas below 3; if it would, the drain is blocked or delayed. Because the payment service runs exactly 3 replicas, minAvailable: 3 means no Pod can be voluntarily evicted at a time, keeping the service fully available throughout the disruption. The PDB must use a selector that matches the Deployment's Pod labels to enforce this guarantee correctly.

Why this answer

A PodDisruptionBudget (PDB) with `minAvailable: 3` ensures that at least 3 replicas of the payment service remain available during voluntary disruptions like node upgrades or Pod evictions. The Kubernetes scheduler respects the PDB by blocking evictions that would drop the number of healthy Pods below the specified threshold, guaranteeing continuous service availability even when nodes are being drained.

Exam trap

Google Cloud often tests the misconception that increasing replica count or using node-level controls (affinity, autoscaler) alone can guarantee availability during voluntary disruptions, when in fact only a PodDisruptionBudget provides the explicit eviction protection needed.

How to eliminate wrong answers

Option A is wrong because simply setting the replica count to 6 does not enforce availability during node upgrades; node upgrades can still evict all Pods on a node, and without a PDB, the eviction controller may drain all replicas simultaneously, dropping below 3. Option C is wrong because node affinity rules pin Pods to specific nodes, but those nodes themselves can be upgraded or fail, and affinity does not prevent evictions during node maintenance, so availability is not guaranteed. Option D is wrong because cluster autoscaler with `minNodeCount=3` only ensures a minimum number of nodes exist, not that Pods are distributed or protected from eviction; Pods can still be evicted from those nodes during upgrades, and the autoscaler does not enforce a minimum number of running replicas.

160
MCQeasy

An engineer needs to SSH into a Compute Engine instance using OS Login. What must be enabled first?

A.Create an SSH key and upload to the instance
B.Grant the compute.osLogin role to the user
C.Add SSH keys to the project metadata
D.Enable OS Login in the project metadata
AnswerD

Enabling OS Login by setting the project metadata key enable-oslogin to TRUE is the foundational step. This tells Compute Engine to use IAM-based authentication for SSH, allowing the engineer to log in with Google credentials rather than managing SSH keys. Once enabled at the project level, instances inherit the setting, and a user with the compute.osLogin role can SSH without manual key distribution. This is the required first action to meet the engineer's need.

Why this answer

OS Login must be enabled at the project or instance level using 'gcloud compute project-info add-metadata --enable-oslogin' or similar. Direct SSH key metadata is not needed if OS Login is used.

161
MCQhard

Refer to the exhibit. A user attempts to create a Deployment Manager deployment that references a service account. What is the most likely issue?

A.The user does not have deploymentmanager.deployments.create permission
B.The user does not have the roles/iam.serviceAccountUser role on the service account
C.The service account is disabled
D.The service account does not exist
AnswerB

To use a service account in a Deployment Manager deployment, the user must have the roles/iam.serviceAccountUser role on that service account, which grants the serviceAccounts.actAs permission. This permission allows the user to impersonate the service account when creating resources on behalf of the deployment. The error 'permission serviceAccounts.actAs required' confirms that this IAM binding is missing, making this the correct answer.

Why this answer

When a Deployment Manager deployment references a service account, the user must have the `roles/iam.serviceAccountUser` role on that service account to impersonate it. Without this role, the deployment fails even if the user has `deploymentmanager.deployments.create` permission, because the service account is used to execute the deployment's resources. Option B correctly identifies this missing IAM binding as the most likely issue.

Exam trap

Google Cloud often tests the distinction between having permission to create a deployment versus having permission to use a specific service account within that deployment, leading candidates to mistakenly choose the deployment-level permission error (Option A) instead of the IAM role on the service account (Option B).

How to eliminate wrong answers

Option A is wrong because the user is attempting to create a deployment, and the error would typically be a permissions denial if they lacked `deploymentmanager.deployments.create`, but the question implies the user has that permission and the issue is specifically with the service account reference. Option C is wrong because a disabled service account would produce a different error (e.g., 'service account is disabled'), but the question does not indicate the account is disabled, and the most common issue is missing the `roles/iam.serviceAccountUser` role. Option D is wrong because if the service account did not exist, the error would be a 'not found' or 'does not exist' message, not a permissions-related failure; the question implies the account exists but the user lacks the necessary role to use it.

162
MCQmedium

A developer wants to create a service account for an application running on Compute Engine. The application needs to access Cloud Storage. What is the best practice for granting this access?

A.Use Workload Identity Federation to grant access.
B.Create a service account, grant it the Cloud Storage roles, and attach it to the instance using the --service-account flag.
C.Use the default Compute Engine service account and grant it Cloud Storage roles.
D.Create a service account, download its key, and store it on the instance.
AnswerB

Creating a dedicated service account, granting it only the required Cloud Storage IAM roles such as roles/storage.objectViewer, and attaching it to the instance with the --service-account flag at creation time follows the principle of least privilege. The VM's metadata server then provides short-lived access tokens to the application, avoiding the need to manage or download any service account keys. This is the recommended, secure pattern for a GCE workload to access Cloud Storage with minimal permissions.

Why this answer

The best practice is to create a service account, grant it the necessary roles, and attach it to the Compute Engine instance using the '--service-account' flag. Downloading keys is discouraged. Workload Identity is for on-premises or non-GCP workloads.

163
MCQeasy

Refer to the exhibit. After applying this IAM policy to a bucket, what access is granted?

A.Anyone authenticated with a Google account can list and read objects
B.No access is granted because the condition is missing
C.Only users in the same GCP project can read objects
D.Anyone on the internet can list and read objects
AnswerA

This statement is correct. The IAM principal `allAuthenticatedUsers` is a special identifier that represents every identity authenticated by Google, including Gmail users, Google Workspace accounts, and service accounts, regardless of which GCP project they belong to. When bound to a role such as `roles/storage.objectViewer` on a Cloud Storage bucket, it grants permissions like `storage.objects.list` and `storage.objects.get`, enabling these users to list and read objects in that bucket.

Why this answer

The IAM policy grants the `roles/storage.objectViewer` role to `allAuthenticatedUsers`, which includes any identity authenticated with a Google account (including non-GCP accounts). The condition `resource.name.startsWith('projects/_/buckets/example-bucket/objects/public/')` restricts the grant to objects whose path starts with `public/`, so only those objects can be listed and read. This is why option A is correct.

Exam trap

Google Cloud often tests the distinction between `allUsers` (anyone on the internet, no authentication) and `allAuthenticatedUsers` (requires Google authentication), and candidates frequently confuse the two, thinking `allAuthenticatedUsers` means 'anyone' or 'same project only'.

How to eliminate wrong answers

Option B is wrong because the condition is present and valid; it does not cause the policy to be invalid or grant no access. Option C is wrong because `allAuthenticatedUsers` is not limited to users in the same GCP project; it includes any authenticated Google identity, such as Gmail or Google Workspace accounts. Option D is wrong because `allAuthenticatedUsers` does not include unauthenticated users (i.e., anyone on the internet); it requires authentication with a Google account.

164
MCQmedium

A team needs to roll out a configuration change to a MIG (Managed Instance Group) — updating the instance template to set a new environment variable. They want to validate the change on 1 VM before rolling it out to all 20 VMs. Which MIG update type supports this?

A.Canary update — update 1 VM to the new template, verify, then roll out to all
B.Opportunistic update — the new template applies only when VMs are naturally replaced
C.Recreate update — terminate all 20 VMs and recreate with the new template simultaneously
D.Snapshot the existing VMs and restore 1 with the new environment variable to test
AnswerA

Canary update is the MIG feature specifically designed for staged rollout: you define a target size (e.g., 1 out of 20) for the new instance template, so the MIG creates exactly one VM running the new environment variable while the other 19 continue on the old template. After validating that the canary VM passes health checks and behaves as expected, you can promote the new template across the entire group by increasing the target size to all instances. This provides a controlled, incremental rollout with the MIG managing versioning and rollback automatically.

Why this answer

A canary update in a Managed Instance Group (MIG) allows you to specify a target size (e.g., 1 VM) to update to the new instance template first. After validating the change on that single VM, you can then promote the canary to roll out the new template to the remaining 19 VMs. This matches the requirement to test on 1 VM before full rollout.

Exam trap

Google Cloud often tests the distinction between 'canary' and 'opportunistic' updates, where candidates mistakenly think opportunistic allows manual selection of a single VM to update, but it only applies changes during natural instance replacement.

How to eliminate wrong answers

Option B is wrong because an opportunistic update only applies the new template when existing VMs are stopped or terminated naturally (e.g., by autohealing or manual deletion), not on demand for a single VM test. Option C is wrong because a recreate update terminates all 20 VMs simultaneously and recreates them with the new template, which does not allow a staged validation on just 1 VM. Option D is wrong because snapshotting and restoring a VM does not update the instance template of the MIG; the MIG would still use the old template for any new VMs or managed operations, and this approach bypasses the MIG's update management entirely.

165
MCQeasy

An engineer needs to view the current IAM policy for a project in JSON format. Which gcloud command should they use?

A.gcloud iam projects describe-iam-policy PROJECT_ID --format json
B.gcloud projects add-iam-policy-binding PROJECT_ID --format json
C.gcloud projects set-iam-policy PROJECT_ID --format json
D.gcloud projects get-iam-policy PROJECT_ID --format json
AnswerD

This is the correct read-only command for retrieving a project's IAM policy. It outputs the complete policy document, including bindings, version, etag, and audit configs, and '--format json' formats that document as JSON for easy parsing. It is the standard tool for viewing current IAM state and is the basis for making offline changes with set-iam-policy.

Why this answer

The gcloud projects get-iam-policy command retrieves the IAM policy for a project. The --format flag allows you to specify the output format, such as JSON. The other commands are for different purposes: set-iam-policy sets the policy, add-iam-policy-binding adds a binding, and describe-iam-policy does not exist.

166
MCQmedium

A financial application requires all database transactions to be durable even if the primary Cloud SQL instance fails mid-transaction. The RPO (Recovery Point Objective) must be near-zero. Which Cloud SQL feature achieves this?

A.Cloud SQL read replica with synchronous replication
B.Cloud SQL High Availability with synchronous standby replica in a different zone
C.Cloud SQL with automated daily backups and point-in-time recovery
D.Cloud Spanner — it automatically replicates synchronously across zones
AnswerB

Cloud SQL High Availability (HA) provisions a primary and a standby instance in different zones within the same region. It uses synchronous replication to the standby, so every committed transaction is durably written to both the primary and standby before the client receives an acknowledgement, yielding near-zero RPO. If the primary zone experiences an outage, the standby is promoted automatically and, because replication was synchronous, no committed data is lost even in a hard failure scenario.

Why this answer

Cloud SQL High Availability (HA) uses a synchronous standby replica in a different zone to ensure that every write is committed to both the primary and standby before acknowledging the transaction. This provides near-zero RPO because if the primary fails mid-transaction, the standby has the exact same data and can take over without data loss.

Exam trap

Google Cloud often tests the distinction between synchronous replication (used in HA for near-zero RPO) and asynchronous replication (used in read replicas for read scaling), leading candidates to mistakenly choose read replicas for durability requirements.

How to eliminate wrong answers

Option A is wrong because Cloud SQL read replicas use asynchronous replication, which means transactions can be committed on the primary before being replicated, leading to potential data loss if the primary fails mid-transaction. Option C is wrong because automated daily backups and point-in-time recovery provide durability but with a recovery point objective (RPO) of up to several minutes or hours, not near-zero; they do not protect against mid-transaction failures. Option D is wrong because while Cloud Spanner does provide synchronous replication across zones, it is a different service (not Cloud SQL) and the question specifically asks for a Cloud SQL feature.

167
MCQeasy

A user needs to view the list of firewall rules in a project but should not be able to create or modify them. Which predefined IAM role should you grant?

A.roles/editor
B.roles/compute.securityAdmin
C.roles/compute.viewer
D.roles/owner
AnswerC

The Compute Viewer role grants read-only access to all Compute Engine resources, including the specific permissions compute.firewalls.list and compute.firewalls.get needed to view firewall rules. It cannot modify, create, or delete any resource, so it precisely matches the user's requirement to list firewall rules. This is the correct least-privilege role for this task.

Why this answer

The roles/compute.viewer role grants read-only access to Compute Engine resources, including the ability to list firewall rules, without permitting create, update, or delete operations. This aligns with the principle of least privilege for a user who only needs to view firewall configurations.

Exam trap

Google Cloud often tests the distinction between roles/compute.viewer and roles/compute.securityAdmin, where candidates mistakenly choose securityAdmin thinking it is needed for viewing, but it actually grants full write access to firewall rules.

How to eliminate wrong answers

Option A is wrong because roles/editor grants full read/write access to all resources, including the ability to create and modify firewall rules, which exceeds the required permissions. Option B is wrong because roles/compute.securityAdmin specifically allows creating, modifying, and deleting firewall rules and SSL certificates, which is too permissive for a read-only requirement. Option D is wrong because roles/owner provides full administrative access to the project, including all IAM management and resource modifications, far beyond the needed view-only access.

168
MCQmedium

A company is planning a lift-and-shift migration of an on-premises monolithic application to Google Cloud. The application runs on a single server and requires a specific kernel module that is not supported by Google Cloud's container-optimized OS. Which compute service should they use?

A.Compute Engine
B.Google Kubernetes Engine (GKE)
C.Cloud Run
D.Cloud Functions
AnswerA

Compute Engine is the correct choice because it provides unmodified, full control over the virtual machine, including the guest OS kernel. You can install custom kernel modules, load them via modprobe, and configure kernel parameters exactly as required by the legacy monolithic application. This is essential for a lift-and-shift migration where the application depends on specific low-level OS features or hardware drivers that cannot be abstracted away by a managed platform.

Why this answer

Compute Engine offers full control over the VM, including choice of OS and kernel modules. GKE and Cloud Run use container-optimized OS, and Cloud Functions is serverless and unsuitable for a monolithic app.

169
MCQhard

An engineer is using Terraform to manage GCP resources. They want to store the Terraform state file remotely so that the team can collaborate. Which backend configuration should they use?

A.backend "cloud" { bucket = "my-terraform-state" }
B.backend "local" { path = "terraform.tfstate" }
C.backend "consul" { address = "consul.example.com" }
D.backend "gcs" { bucket = "my-terraform-state" }
AnswerD

Configuring the gcs backend with a bucket name is the correct way to store Terraform state for GCP resources. The gcs backend uses a Cloud Storage bucket, which natively supports state file versioning, server-side encryption (including customer-managed keys via Cloud KMS), and access control through GCP IAM, providing both security and consistency for team use. It also enables state locking via bucket objects to prevent concurrent modifications. This is the recommended solution for centralized, durable remote state in GCP.

Why this answer

Terraform supports storing state in GCS by using the 'gcs' backend. The bucket must be created before configuration. The 'local' backend stores state locally, which does not enable collaboration. 'cloud' is not a valid backend type. 'consul' is not GCP-native.

170
Multi-Selecthard

A company wants to migrate a large on-premises MySQL database to Cloud SQL with minimal downtime. Which TWO steps should they take?

Select 2 answers
A.Set up a Cloud VPN connection between on-premises and Google Cloud
B.Use Database Migration Service (DMS) with continuous replication
C.Configure a read replica on-premises and promote it in Google Cloud
D.Use gcloud sql import command for the final migration
E.Export the database to a SQL dump file and import it to Cloud SQL
AnswersA, B

A Cloud VPN tunnel is a prerequisite, not an alternative to DMS: Database Migration Service connects to your on-premises MySQL over a private IP address, and the VPN provides the secure, encrypted network path across the public internet. Without this connectivity, DMS cannot establish the replication channel needed for continuous sync. High-bandwidth, low-latency Interconnect is the alternative when VPN bandwidth is insufficient.

Why this answer

Database Migration Service (DMS) can migrate with minimal downtime using CDC. For the final cutover, a brief write-stop is required to ensure consistency.

171
MCQmedium

A Cloud Run service calls external third-party APIs that have rate limits. Under burst traffic, the service spawns many concurrent instances, each making direct API calls, causing rate limit errors. What GCP pattern reduces API call volume without adding infrastructure?

A.Set Cloud Run max-concurrency to 1 so each instance handles one request
B.Cache third-party API responses in Cloud Memorystore (Redis) with appropriate TTL
C.Enable Cloud CDN on the Cloud Run service to cache outbound requests
D.Migrate to Cloud Functions with a lower default concurrency limit
AnswerB

Caching third-party API responses in Cloud Memorystore (Redis) with an appropriate TTL is the correct solution because Memorystore is a shared, in-memory data store accessible to all Cloud Run instances. When one instance fetches a third-party response and caches it, subsequent requests from any instance can read the cached value, eliminating redundant outbound API calls and reducing both latency and API consumption. Setting a TTL (e.g., 60 seconds) balances data freshness with cache hit ratio, directly addressing the root cause of duplicate external requests. This is particularly effective for high-traffic services where the same third-party data is requested repeatedly.

Why this answer

Caching third-party API responses in Cloud Memorystore (Redis) with an appropriate TTL reduces the number of outbound API calls by serving cached data to multiple concurrent Cloud Run instances. This directly addresses rate-limit errors without adding new infrastructure, as Memorystore is a managed in-memory cache that integrates seamlessly with Cloud Run via a VPC connector.

Exam trap

The trap here is that candidates confuse caching inbound responses (Cloud CDN) with caching outbound API responses (a pattern using Memorystore or similar), leading them to select Cloud CDN even though it cannot cache server-to-server calls.

How to eliminate wrong answers

Option A is wrong because setting max-concurrency to 1 forces each instance to handle only one request at a time, which reduces concurrency but does not reduce the total number of API calls—each request still triggers a direct call, so rate limits are still hit under burst traffic. Option C is wrong because Cloud CDN caches responses to inbound client requests (e.g., static assets), not outbound API calls from the service to external third parties; it cannot intercept or cache server-to-server HTTP requests. Option D is wrong because migrating to Cloud Functions with lower default concurrency does not reduce API call volume—it merely changes the compute platform while still allowing each function invocation to make direct API calls, and Cloud Functions has no built-in mechanism to deduplicate or cache outbound requests.

172
Multi-Selecthard

A company needs to store and analyze large amounts of log data (hundreds of terabytes) with occasional SQL queries. The data is rarely accessed after 30 days and must be kept for compliance for 7 years. They want to minimize storage costs. Which three actions should they take? (Choose THREE.)

Select 3 answers
A.Use Cloud Storage Object Lifecycle Management to move objects to Nearline after 30 days, then to Coldline after 90 days, then to Archive after 1 year
B.Store the data in BigQuery and use clustering on frequently filtered columns
C.Export older partitions from BigQuery to Cloud Storage and delete them from BigQuery after 30 days
D.Store the data in BigQuery and set an expiration on the table to delete data after 30 days
E.Use BigQuery partitions based on ingestion time and set partition expiration to 30 days
AnswersA, B, C

Cloud Storage Object Lifecycle Management lets you define age-based rules that automatically transition objects from Standard to Nearline after 30 days, to Coldline after 90 days, and to Archive after 365 days. This reduces storage costs progressively while still making the logs retrievable for the required 7-year compliance window. Because objects remain in the bucket throughout, no data is deleted, and Archive class is specifically designed for long-term retention with the lowest per-GB cost.

Why this answer

BigQuery is ideal for log analysis. For historical data, moving older data to lower-cost storage classes like NEARLINE or COLDLINE reduces cost. Partitioning and clustering improve query performance and reduce costs.

Cloud Storage is an alternative, but BigQuery is better for SQL queries.

173
MCQmedium

You are configuring a Cloud NAT to allow private Compute Engine instances to access the internet for updates. What other resource is required to set up Cloud NAT?

A.A Cloud VPN tunnel
B.An interconnect attachment
C.A Cloud Router
D.A VPC peering connection
AnswerC

A Cloud Router is the correct component because Cloud NAT requires a Cloud Router in the same region and VPC network to function. The Cloud Router holds the NAT gateway's configuration, manages the NAT IP addresses, and dynamically exchanges routes with the VPC network. Without a Cloud Router, Cloud NAT cannot be created or operate, making it the essential resource for allowing private Compute Engine instances to access the internet or other destinations while remaining private.

Why this answer

Cloud NAT requires a Cloud Router to manage dynamic routing and NAT configurations. The Cloud Router is created in the same region and VPC network as the NAT gateway.

174
MCQmedium

A new developer tries to create a project using gcloud projects create but receives the error shown in the exhibit. Which action should the administrator take to resolve the issue?

A.Assign the Project Creator role (roles/resourcemanager.projectCreator) to the user.
B.Enable the Cloud Resource Manager API.
C.Assign the Billing Account Creator role to the user.
D.Create the project manually and share the project ID.
AnswerA

Correct. The Project Creator role grants the resourcemanager.projects.create permission required to create projects.

Why this answer

The error indicates the user lacks the `resourcemanager.projects.create` permission, which is granted by the Project Creator role (`roles/resourcemanager.projectCreator`). Option B is incorrect because enabling the Cloud Resource Manager API does not grant permissions; it only enables the API service. Option C is incorrect because the Billing Account Creator role is for creating billing accounts, not projects.

Option D is a workaround but does not resolve the underlying permission issue for the developer.

175
MCQmedium

A company wants to run a stateful application on Compute Engine with persistent storage that can be attached to another instance in case of failure. Which storage option should they use?

A.Filestore
B.Cloud Storage bucket
C.Persistent Disk
D.Local SSD
AnswerC

Persistent Disk is durable, network-attached block storage that you can attach to a Compute Engine instance like a physical disk. It survives instance stops and can be detached from one instance and reattached to another, enabling stateful failover. Persistent Disk also supports snapshots, resizing, and zonal or regional replication, making it the appropriate choice for a stateful application. For these reasons, Persistent Disk is the correct answer.

Why this answer

Persistent Disk (PD) is a network-attached block storage that can be detached and reattached to another VM in the same zone. Option C is correct. Option A (Filestore) is a file storage service, not block storage; Option B (Cloud Storage bucket) is object storage; Option D (Local SSD) is ephemeral and tied to the instance.

176
MCQmedium

You deployed a Cloud Run service with gcloud run deploy --image gcr.io/my-project/my-image --platform managed --region us-central1 --allow-unauthenticated. Users report intermittent 503 errors. What is the most likely cause?

A.The service is hitting the maximum number of concurrent requests per container instance (default 80) and needs more instances.
B.The region us-central1 does not support Cloud Run.
C.The container image is not compatible with the managed platform.
D.The --allow-unauthenticated flag causes IAM permission errors.
AnswerA

A 503 from Cloud Run specifically signals that a request arrived but no container instance was available to accept it within the timeout window. Each instance can process only a fixed number of concurrent requests—the default concurrency is 80—so when all existing instances are saturated and the autoscaler cannot add new instances quickly enough (or the 'max instances' setting has been reached), the server returns Service Unavailable. The fix is to raise the max instances limit, lower the concurrency setting, or enable additional CPU to reduce per-instance bottleneck.

Why this answer

Cloud Run services have a default maximum number of concurrent requests per container instance (default 80). If traffic exceeds that, new instances are created, but if there is a sudden spike or the container takes too long to start, requests may be dropped with 503. Increasing max instances or concurrency settings can help.

177
MCQmedium

A company needs to run a batch processing workload that processes 10 TB of data nightly. The job runs for 4 hours and can tolerate interruption with checkpointing. Cost must be minimized. Which Compute Engine pricing model is most appropriate for the batch VMs?

A.On-demand VM pricing with committed use discounts (1-year CUD)
B.Spot VMs (preemptible pricing)
C.Sustained use discounts applied automatically to long-running VMs
D.Standard on-demand pricing with no special configuration
AnswerB

Spot VMs (formerly preemptible VMs) offer up to 91% discount over on-demand pricing and are ideal for fault-tolerant batch jobs that can be checkpointed and resumed after interruption. With checkpointing, the nightly job can simply restart from the last saved state whenever a Spot VM is reclaimed, so transient failures do not jeopardize completion. This provides the maximum cost reduction among the options for a workload that explicitly tolerates interruption, making it the correct choice.

Why this answer

Spot VMs (preemptible pricing) are the most cost-effective choice for batch workloads that are fault-tolerant and can handle interruptions via checkpointing. Since the job runs for only 4 hours nightly and can resume from checkpoints, Spot VMs offer up to 60-91% cost savings over on-demand pricing without requiring any commitment.

Exam trap

The trap here is that candidates may think sustained use discounts (Option C) are automatic and sufficient for any long-running workload, but they fail to realize that a 4-hour nightly job does not accumulate enough monthly usage to trigger significant discounts, making Spot VMs the clear winner for cost minimization.

How to eliminate wrong answers

Option A is wrong because committed use discounts (1-year CUD) require a 1-year commitment and are designed for steady-state workloads, not a short 4-hour nightly batch job; they would lock in cost without flexibility and are more expensive than Spot VMs for this use case. Option C is wrong because sustained use discounts automatically apply to VMs that run for a significant portion of a month (over 25%), but a 4-hour nightly job totals only ~120 hours per month, which is well below the threshold for meaningful discounts, and they cannot match Spot VM savings. Option D is wrong because standard on-demand pricing with no special configuration is the most expensive option and ignores the workload's tolerance for interruption, missing the opportunity to use Spot VMs for drastic cost reduction.

178
MCQmedium

A company has a private VPC with instances that have only internal IP addresses. These instances need to download updates from the internet. Which Google Cloud service should they use to provide outbound internet connectivity?

A.Cloud NAT
B.Cloud VPN
C.Assign public IP addresses to the instances
D.Identity-Aware Proxy (IAP)
AnswerA

Cloud NAT uses a Cloud Router to provide a managed Network Address Translation service that gives private instances (those with internal IPs only) a secure path to the internet for outbound connections. It maintains stateful sessions so return traffic is allowed, but unsolicited inbound connections are blocked, preserving the private nature of the network.

Why this answer

Cloud NAT allows private instances to access the internet outbound while preventing inbound connections. Cloud VPN is for hybrid connectivity. Public IP addresses would expose the instances.

IAP is for SSH/RDP access.

179
Multi-Selectmedium

A security team wants to restrict access to a Cloud Storage bucket so that only objects encrypted with a specific CMEK key can be uploaded. Which three actions are needed? (Choose 3)

Select 3 answers
A.Grant authorized users the roles/cloudkms.cryptoKeyEncrypterDecrypter role.
B.Grant all users the roles/cloudkms.cryptoKeyEncrypterDecrypter role.
C.Create a bucket IAM policy that denies storage.objects.create without the encryption header matching the CMEK key.
D.Enable Uniform Bucket-Level Access.
E.Create a Cloud KMS key and set it as the default key on the bucket using --kms-key.
AnswersA, C, E

Granting authorized users the roles/cloudkms.cryptoKeyEncrypterDecrypter role on the Cloud KMS key is correct because this IAM role grants permission to call the Cloud KMS Encrypt and Decrypt operations, which are required for objects to be uploaded with and read from a CMEK-encrypted bucket. Even if a user has bucket-level permissions, they cannot create or read objects encrypted with that key unless they have this role on the key itself. This ensures only the intended authorized principals can use the customer-managed key for cryptographic operations.

Why this answer

Setting the CMEK key on the bucket, creating a bucket-level policy denying uploads without the key, and granting the encrypt/decrypt role to users are required.

180
MCQeasy

An engineer needs to create an alerting policy in Cloud Monitoring that sends a notification when the 99th percentile latency of a service exceeds 500 ms for 5 minutes. Which metric type should they use?

A.Metric threshold
B.Log-based metric
C.Uptime check
D.Cloud Audit Logs
AnswerA

Metric threshold is the standard condition type used in a Cloud Monitoring alerting policy. It evaluates a metric stream (e.g., Compute Engine CPU utilization, disk bytes used) against a numeric threshold over a specified aggregation window, triggering notifications when the value crosses the threshold. This is the correct answer because it directly defines the alerting condition that the engineer needs.

Why this answer

A metric threshold alert uses a numeric metric and triggers when the value crosses a threshold. Log-based alerts are for when a specific log entry appears. Uptime checks monitor availability, not latency percentiles.

181
MCQeasy

Which Google Cloud service provides a managed, scalable, and secure way to store API keys, passwords, and certificates?

A.Cloud Key Management Service (Cloud KMS)
B.Cloud IAM
C.Secret Manager
D.Cloud Storage
AnswerC

Secret Manager is the dedicated Google Cloud service for storing, managing, and accessing secrets such as API keys, passwords, and certificates. It provides built-in secret versioning with immutable payloads, IAM-based access control at the secret-version level, automatic replication for high availability, and full audit logging via Cloud Audit Logs. This makes it the managed and scalable solution that directly matches the requirement.

Why this answer

Secret Manager is the correct service for storing secrets such as API keys, passwords, and certificates. It provides encryption, access control, and versioning. Cloud KMS is for managing encryption keys, Cloud IAM is for access management, and Cloud Storage is for object storage.

182
MCQmedium

A security team wants to ensure that all Compute Engine instances in a project automatically use a custom service account with minimal permissions. What must the engineer do when creating new instances?

A.Create a custom role and assign it to the instance's service account through the instance metadata.
B.Use gcloud compute instances create with the --service-account flag pointing to the custom service account.
C.Set the project-wide default service account to the custom service account in the project settings.
D.Create a startup script that configures the instance to use the custom service account after boot.
AnswerB

When creating an instance, you must specify the service account with `gcloud compute instances create --service-account <SA_EMAIL>`, which attaches that identity to the instance for its entire lifetime. Once attached, the instance metadata server returns OAuth credentials for that service account, so all API calls from the instance are made as that identity. This is the correct way to ensure the instance uses a custom, least-privileged service account, provided the account has been granted the necessary IAM roles.

Why this answer

When creating a Compute Engine instance, you can specify a custom service account using the --service-account flag. This attaches the service account to the instance and grants the associated IAM roles. The instance will use the custom service account instead of the default compute engine service account.

183
MCQhard

A company is running a stateful application on a Compute Engine instance with a 200 GB persistent disk. They want to reduce costs by moving the disk to a lower-cost storage class, but the disk is currently in use. They plan to take a snapshot of the disk and create a new disk from the snapshot with the new storage class. However, they need minimal downtime. What is the correct approach?

A.Use the 'gcloud compute disks update' command to change the storage class while the disk is attached to a running VM
B.Create a new disk with the new storage class and use rsync to copy data from the old disk while both are attached to the same VM
C.Take a snapshot of the disk, create a new disk from the snapshot with the new storage class, then detach the old disk and attach the new disk to the same VM
D.Stop the VM, take a snapshot, create a new disk with the new storage class, and start the VM with the new disk
AnswerC

Take a snapshot of the disk while the VM is running to obtain a crash-consistent image of the filesystem; persistent disk snapshots are computed online and do not require stopping the instance. From that snapshot, create a new persistent disk with the desired storage class (for example, pd-balanced or pd-ssd). Then unmount the old disk, detach it from the VM, attach the newly created disk, and remount it at the same mount point; this limits downtime to the brief unmount/detach/attach/remount window rather than the entire snapshot and disk creation time.

Why this answer

To change the storage class of a persistent disk, you cannot directly change it; you must create a new disk from a snapshot. To minimize downtime, you can create a snapshot while the VM is running (crash-consistent if on a live instance), then create a new disk with the desired storage class, stop the VM, detach the old disk, attach the new disk, and start the VM. This results in a brief downtime but is the standard method.

184
MCQmedium

A team's GKE Deployment serves variable traffic — 2 Pods at night, 20 Pods at peak hours. Rather than manually changing replica counts, they want automatic scaling based on CPU utilization (target: 60%). What should they deploy?

A.Vertical Pod Autoscaler (VPA) with CPU target 60%
B.Horizontal Pod Autoscaler (HPA) targeting 60% CPU utilization
C.Cluster Autoscaler with a CPU threshold of 60%
D.Set the Deployment replica count to 20 and rely on resource quotas to limit actual Pod scheduling
AnswerB

The Horizontal Pod Autoscaler (HPA) automatically adjusts the number of Pod replicas in a Deployment based on observed CPU utilization relative to the CPU requests set on containers. When average CPU utilization exceeds the 60% target, HPA increases the replica count; when it drops below the target for a sustained period, it decreases replicas. This directly matches the requirement to scale Pod count based on load, and it is the standard Kubernetes mechanism for horizontal scaling of workloads.

Why this answer

The Horizontal Pod Autoscaler (HPA) is the correct choice because it automatically adjusts the number of Pod replicas in a Deployment based on observed CPU utilization, scaling from 2 to 20 Pods as needed to maintain the target of 60% CPU. HPA works by querying the metrics server for CPU usage and calculating the desired replica count using the formula: desiredReplicas = currentReplicas × (currentMetricValue / targetMetricValue). This directly addresses the requirement for variable traffic without manual intervention.

Exam trap

Google Cloud often tests the distinction between scaling Pod replicas (HPA) versus scaling Pod resources (VPA) versus scaling cluster nodes (Cluster Autoscaler), and the trap here is confusing VPA's resource adjustment with HPA's replica adjustment, especially when the question mentions 'CPU utilization target'.

How to eliminate wrong answers

Option A is wrong because Vertical Pod Autoscaler (VPA) adjusts CPU and memory requests/limits of existing Pods, not the number of replicas; it cannot scale from 2 to 20 Pods based on load. Option C is wrong because Cluster Autoscaler adds or removes nodes from the cluster, not Pod replicas; it operates at the infrastructure level and does not target CPU utilization for Pod scaling. Option D is wrong because setting a fixed replica count of 20 wastes resources during low traffic, and resource quotas only limit total resource consumption, they do not dynamically scale Pods up or down based on CPU utilization.

185
MCQmedium

Your team is planning a GKE cluster for a microservices application. Some services process sensitive payment data and must run on dedicated nodes that no other workloads can access. The rest of the application can share nodes. How should you configure the cluster?

A.Use separate GKE clusters: one for payment services and one for everything else.
B.Apply taints to the dedicated node pool and tolerations to payment service pod specs.
C.Use Kubernetes NetworkPolicy to restrict network access between payment pods and other pods.
D.Set resource requests and limits so payment services consume all resources on their nodes.
AnswerB

Tainting a dedicated node pool with, for example, 'payments=true:NoSchedule' and adding a matching toleration to payment pod specs guarantees that only pods with that toleration can be scheduled there. The kube-scheduler filters out tainted nodes for pods that lack the toleration, so non-payment workloads stay away. Combined with a nodeSelector or node affinity for that pool, this is the standard GKE pattern for isolating sensitive workloads inside one cluster.

Why this answer

Taints on dedicated node pools prevent pods without matching tolerations from being scheduled on those nodes, ensuring that only payment service pods (which include the corresponding tolerations) can run on the dedicated nodes. This isolates sensitive workloads at the node level without requiring separate clusters, which would add operational overhead and complexity.

Exam trap

Google Cloud often tests the misconception that network policies (Option C) provide workload isolation, when in fact they only control east-west traffic and do not prevent co-location of pods on the same node, which is the core requirement for dedicated node isolation.

How to eliminate wrong answers

Option A is wrong because using separate clusters for payment services and other workloads introduces unnecessary management overhead, cross-cluster networking complexity, and defeats the purpose of node-level isolation when a single cluster with taints and tolerations can achieve the same goal more efficiently. Option C is wrong because Kubernetes NetworkPolicy controls network traffic between pods but does not prevent non-payment pods from being scheduled on the same node as payment pods, leaving the sensitive data vulnerable to side-channel attacks or resource contention. Option D is wrong because setting resource requests and limits to consume all node resources does not prevent other pods from being scheduled on the same node; it only guarantees resource availability for payment pods, and the scheduler can still place non-payment pods on those nodes if resources are available.

186
MCQmedium

A company wants to set up a budget alert at 50% and 90% of their projected monthly spending. Which service should they use?

A.Cloud Billing budgets
B.Cost breakdown reports
C.Cloud Scheduler
D.Cloud Monitoring alerts
AnswerA

Correct.

Why this answer

Cloud Billing budgets allow setting budget amounts and alerts at specified thresholds.

187
Multi-Selecteasy

A developer wants to deploy a Cloud Function that is triggered by messages in a Pub/Sub topic. Which TWO flags are required in the gcloud functions deploy command?

Select 2 answers
A.--runtime
B.--trigger-topic
C.--timeout
D.--memory
E.--entry-point
AnswersA, B

The `--runtime` flag is mandatory because it tells the Cloud Functions deployment service which language runtime to use, such as `python312` or `nodejs20`. This value must match the code you are uploading, including the expected base image and dependencies, so the platform can build the function in the correct environment. Without specifying it, the gcloud command will fail, as there is no sensible default language choice.

Why this answer

For a Pub/Sub-triggered Cloud Function, you must specify --trigger-topic and --runtime. The --entry-point is optional if the function name matches. --memory and --timeout are optional.

188
MCQmedium

A developer wants to create a Compute Engine instance with the container-optimized OS image in the default network. Which command should they use?

A.gcloud compute instances create my-instance --image-family=ubuntu-2004-lts --image-project=ubuntu-os-cloud
B.gcloud compute instances create my-instance --image-family=cos-stable --image-project=cos-cloud
C.gcloud compute instances create my-instance --image-family=cos-stable
D.gcloud compute instances create my-instance --image=cos-stable --image-project=cos-cloud
AnswerB

This is the correct command because it explicitly selects the 'cos-stable' image family from the 'cos-cloud' project, which yields the latest stable release of Container-Optimized OS. COS is a Google-supported OS with Docker, containerd, and Kubernetes tools preinstalled, optimized for running containerized workloads. Including both --image-family and --image-project ensures that gcloud resolves the family from the proper project, avoiding ambiguity with the default compute project.

Why this answer

The correct command uses '--image-family=cos-stable' and '--image-project=cos-cloud' to specify the Container-Optimized OS image. Option B uses 'gcloud compute instances create' with the correct flags.

189
MCQhard

A team runs a Kubernetes Deployment with 3 replicas behind a Service. They want to expose it externally with HTTPS and route traffic based on URL paths (/api → backend service, / → frontend service). Which Kubernetes resource handles path-based routing at Layer 7?

A.A LoadBalancer Service with path routing rules
B.A Kubernetes Ingress resource with path rules
C.A NodePort Service with iptables path routing rules
D.Multiple ClusterIP Services with DNS SRV records for path routing
AnswerB

The Kubernetes Ingress resource is specifically designed to expose HTTP(S) workloads with rules for hostnames and URL paths. When deployed on GKE, the built-in Ingress controller provisions a GCP Application Load Balancer (HTTP(S) Load Balancer) that maintains URL maps and path rules at the edge. This enables TLS termination, path-based routing, and forwarding to backend Services. Therefore a Kubernetes Ingress resource with path rules is the correct way to perform HTTP path-based routing on GKE.

Why this answer

A Kubernetes Ingress resource is the native API object designed for Layer 7 (HTTP/HTTPS) routing, including path-based routing. It allows you to define rules that map URL paths (e.g., /api, /) to different backend Services, and it typically works with an Ingress controller (e.g., NGINX, HAProxy) that terminates TLS and performs the routing. This directly meets the requirement for external HTTPS exposure and path-based traffic splitting.

Exam trap

Google Cloud often tests the misconception that a LoadBalancer Service can handle Layer 7 routing, but in Kubernetes, LoadBalancer Services are strictly Layer 4 and cannot inspect HTTP paths; candidates must remember that path-based routing requires an Ingress resource with a compatible controller.

How to eliminate wrong answers

Option A is wrong because a LoadBalancer Service operates at Layer 4 (TCP/UDP) and cannot perform path-based routing; it only distributes traffic to Pods based on IP and port, not URL paths. Option C is wrong because a NodePort Service also works at Layer 4 and relies on iptables for simple port forwarding, not for Layer 7 path inspection or routing. Option D is wrong because ClusterIP Services are internal-only and DNS SRV records provide service discovery at Layer 4, not path-based routing; they cannot route based on URL paths or terminate HTTPS.

190
MCQmedium

A developer needs to store a database password in Secret Manager and then allow a Compute Engine instance to access it. The instance uses the default compute engine service account. Which role should be granted to the service account?

A.roles/cloudsql.client
B.roles/secretmanager.admin
C.roles/viewer
D.roles/secretmanager.secretAccessor
AnswerD

roles/secretmanager.secretAccessor is the correct predefined role for accessing a secret payload because it includes the secretmanager.versions.access permission, which is the exact IAM permission required to retrieve the stored database password. This role is narrowly scoped; it grants no management capabilities like secret creation, deletion, or IAM policy changes. For a developer whose sole need is to fetch the secret value at runtime, this role provides the minimum access needed while supporting least privilege best practices.

Why this answer

To access the secret version's payload, the service account needs the 'secretmanager.secretAccessor' role on the secret (or project). That role allows accessing secret versions. roles/secretmanager.admin is too broad. roles/cloudsql.client is for Cloud SQL, not Secret Manager. roles/viewer does not allow access to secret payloads.

191
MCQhard

An engineer is designing a VPC for a multi-tier application. The application has web servers that need direct internet access, and a private database tier that must not have public IP addresses. The database tier needs outbound internet access to download updates. Which network configuration should the engineer implement?

A.Place web servers in a subnet with Cloud NAT, and database servers in the same subnet without public IP
B.Place web servers in a subnet with public IPs, and database servers in a separate subnet with Cloud NAT and no public IP
C.Place both tiers in the same subnet with no public IPs and use Cloud NAT for all outbound traffic
D.Place web servers in a subnet with Cloud NAT, and database servers in a subnet with public IPs and firewall rules to restrict inbound
AnswerB

This is the recommended design because web servers get public IPs (or are behind an external load balancer) to accept inbound user connections, while database servers remain in a separate private subnet with no public IP, preventing direct internet access. Cloud NAT on the database subnet allows outbound internet requests for updates or external APIs without exposing the database to inbound traffic. Separate subnets also enable granular VPC firewall rules and routing policies between tiers, reducing the blast radius if the web tier is compromised.

Why this answer

Web servers should be in a subnet with public IPs or a Cloud NAT for outbound. The database tier must be in a private subnet without public IP, but needs outbound internet via Cloud NAT. This allows secure outbound without public exposure.

192
MCQmedium

A platform team needs a Kubernetes workload that runs exactly one Pod on every node in a GKE cluster — including nodes added in the future. The workload collects host-level metrics. Which Kubernetes resource type should they use?

A.Deployment with replicas set equal to the node count
B.StatefulSet with one replica per node
C.DaemonSet
D.CronJob running every minute to check and restore missing Pods
AnswerC

A DaemonSet is the correct controller because it declaratively ensures that one Pod runs on every node that matches its node selector, including nodes added later by the cluster autoscaler. The DaemonSet controller watches the cluster's node list and places a Pod on each qualifying node, removing Pods from nodes that no longer match. This makes it purpose-built for node-level workloads like metric collectors, kube-proxy, or network agents.

Why this answer

A DaemonSet ensures that exactly one Pod runs on every node in the cluster, including nodes added after creation. This is the correct resource for host-level metrics collection because it automatically scales with the node pool and guarantees one Pod per node without manual intervention.

Exam trap

Google Cloud often tests the misconception that a Deployment with a fixed replica count can achieve per-node coverage, but candidates fail to realize that DaemonSets are the only resource that automatically scales with the node pool and guarantees one Pod per node without manual replica management.

How to eliminate wrong answers

Option A is wrong because a Deployment with replicas set equal to the node count does not automatically adjust when nodes are added or removed; it requires manual updates to the replica count and does not guarantee one Pod per node. Option B is wrong because a StatefulSet is designed for stateful applications requiring stable network identities and persistent storage, not for running one Pod per node; it does not have a built-in mechanism to schedule one Pod per node. Option D is wrong because a CronJob running every minute to check and restore missing Pods is an inefficient, reactive workaround that introduces unnecessary complexity and latency, and it does not provide the declarative, self-healing guarantee of a DaemonSet.

193
Multi-Selectmedium

A company is migrating a legacy monolithic application to Google Cloud. The application consists of a web frontend, a business logic layer, and a MySQL database. They want to minimise operational overhead and use managed services where possible. Which two services should they choose? (Choose TWO.)

Select 2 answers
A.Cloud Functions for the business logic
B.Cloud SQL for MySQL to host the database
C.Cloud Run for the frontend and business logic
D.Compute Engine to host the frontend and business logic
E.Cloud Spanner for the database
AnswersB, C

Cloud SQL for MySQL is a fully managed relational database service that provides automated backups, patching, replication, and high availability without requiring you to run MySQL yourself. It is a direct drop-in replacement for an existing MySQL database, preserving compatibility while eliminating the administrative burden of managing database infrastructure. This aligns with the migration goal of reducing operational overhead.

Why this answer

Cloud SQL provides a managed MySQL database, eliminating database administration. Cloud Run or GKE can host the frontend and logic, but Cloud Run is serverless and reduces overhead. Compute Engine would require more management.

194
MCQmedium

An organization wants to set up a hybrid cloud connection between their on-premises data center and Google Cloud VPC. They need high availability (99.99% SLA) and support for dynamic routing. Which connection method should they use?

A.Cloud NAT
B.Dedicated Interconnect
C.HA VPN with BGP
D.Classic VPN with static routing
AnswerC

HA VPN with BGP is the correct choice because it provides a 99.99% SLA through two redundant tunnels to a single VPC, ensuring high availability even if one tunnel fails. Using BGP for dynamic routing automatically advertises routes and allows failover to the active tunnel, and it supports policy-based routing and route priority. This fully managed solution works over the public internet, making it both reliable and cost-effective for a hybrid cloud connection without requiring physical infrastructure.

Why this answer

HA VPN provides a 99.99% SLA, supports dynamic routing via BGP, and offers two tunnels for redundancy. Dedicated Interconnect also offers high availability but is a physical connection with higher cost. Partner Interconnect is similar to HA VPN but also physical.

Classic VPN has no SLA.

195
MCQmedium

A team packages their Kubernetes application as a Helm chart. They need to install it into a GKE cluster with the release name 'webapp' in the 'production' namespace, overriding the default image tag to 'v2.1'. Which Helm command achieves this?

A.helm deploy webapp ./chart -n production --set image.tag=v2.1
B.helm install webapp ./chart -n production --set image.tag=v2.1
C.kubectl apply -f helm-chart.yaml -n production --image-tag=v2.1
D.helm apply webapp -n production --chart=./chart --tag=v2.1
AnswerB

This is the correct Helm command. `helm install` is used to deploy a chart for the first time with a given release name (`webapp`), chart path (`./chart`), and target namespace via `-n production`. The `--set image.tag=v2.1` flag overrides the chart's default `image.tag` value, ensuring the deployment uses the v2.1 container image as required.

Why this answer

`helm install` is the standard Helm command to deploy a chart into a cluster, and the `--set` flag overrides default values like `image.tag`. The `-n` flag specifies the namespace, and the release name 'webapp' is given as the first argument. This matches the Helm CLI syntax exactly.

Exam trap

The trap here is that candidates may confuse Helm commands with kubectl or assume a generic 'deploy' verb exists, when Helm strictly uses `install` for first-time deployments and `upgrade` for updates.

How to eliminate wrong answers

Option A is wrong because `helm deploy` is not a valid Helm command; Helm uses `install` or `upgrade`, not `deploy`. Option C is wrong because `kubectl apply` does not process Helm charts; it applies raw Kubernetes manifests, and `--image-tag` is not a valid kubectl flag. Option D is wrong because `helm apply` is not a valid Helm command, and the `--tag` flag is incorrect; Helm uses `--set image.tag=v2.1` to override values.

196
MCQmedium

A Cloud Function must execute automatically every time a new object is written to a specific Cloud Storage bucket. Which trigger type should be configured for the function?

A.HTTP trigger
B.Pub/Sub trigger
C.Cloud Storage trigger (object finalized event)
D.Cloud Scheduler trigger
AnswerC

A Cloud Storage trigger directly registers the function on the `google.cloud.storage.object.v1.finalized` event via Eventarc. When an object is uploaded or overwritten, Cloud Storage emits this event and routes it to the function automatically, with no intermediate service required. The function receives the object's metadata (e.g., bucket, name, size) in its payload, allowing immediate event-driven processing.

Why this answer

The Cloud Storage trigger (object finalized event) is the correct choice because Cloud Functions natively supports Cloud Storage events via the `google.storage.object.finalize` event type, which fires when a new object is created or an existing object is overwritten in a bucket. This trigger automatically invokes the function without requiring any intermediary service, directly binding the function to the bucket's notification system.

Exam trap

Google Cloud often tests the misconception that Pub/Sub is required for Cloud Storage events, but Cloud Functions directly supports Cloud Storage triggers without needing an explicit Pub/Sub topic, making Option B a common distractor.

How to eliminate wrong answers

Option A is wrong because an HTTP trigger requires an explicit HTTP request to invoke the function, not an automatic reaction to a Cloud Storage event. Option B is wrong because a Pub/Sub trigger would require manually publishing a message to a topic from Cloud Storage, adding unnecessary complexity and latency; Cloud Functions can directly listen to Cloud Storage events without Pub/Sub. Option D is wrong because Cloud Scheduler triggers are used for scheduled, time-based execution (e.g., cron jobs), not for event-driven reactions to object creation in a bucket.

197
MCQeasy

A new engineer needs to set up the gcloud CLI on their local machine and authenticate with a user account. Which command should they run after installing the SDK?

A.gcloud init
B.gcloud auth application-default login
C.gcloud config set account
D.gcloud auth login
AnswerA

gcloud init is the intended bootstrap command for a new user because it performs the entire initial setup in one interactive flow: authenticating your Google account via the browser, then prompting you to choose or create a default project and set a default compute region/zone. It writes the resulting credentials and configuration properties into the active gcloud configuration file, leaving your environment ready for immediate use. This one-command workflow is exactly why it's the recommended starting point on a fresh workstation.

Why this answer

The 'gcloud init' command initializes the SDK, sets properties, and runs auth login. Alternatively, 'gcloud auth login' only authenticates without setting project/defaults.

198
MCQeasy

A junior developer needs read-only access to all GCP resources in a project. Which IAM role grants the minimum permissions required?

A.Editor
B.Owner
C.Viewer
D.Browser
AnswerC

Viewer is the correct read-only basic role because it includes get and list permissions across most Google Cloud services while granting no create, update, or delete rights. It is the least privileged of the standard roles that can actually inspect project resources, making it the appropriate baseline for monitoring, auditing, and read-only troubleshooting. Unlike Browser, Viewer can see resource data such as VM configurations, bucket contents, and log entries, not just project hierarchy metadata.

Why this answer

The Viewer role (roles/viewer) grants read-only access to all GCP resources in a project, including existing and future resources, without allowing any modifications. This is the minimum permissions required for read-only access, as it provides exactly the necessary permissions (e.g., resourcemanager.projects.get, storage.objects.list) without any write or administrative capabilities.

Exam trap

Google Cloud often tests the distinction between Viewer and Browser, where candidates mistakenly choose Browser thinking it is the minimal read-only role, but Browser only provides access to browse the project listing and not to read actual resource data.

How to eliminate wrong answers

Option A is wrong because the Editor role (roles/editor) includes all viewer permissions plus write permissions (e.g., to create, modify, or delete resources), which exceeds the minimum required for read-only access. Option B is wrong because the Owner role (roles/owner) includes all editor permissions plus the ability to manage IAM policies and billing, granting far more than read-only access. Option D is wrong because the Browser role (roles/browser) is a legacy role that provides read-only access to browse the project hierarchy but does not grant read access to all resources (e.g., it lacks permissions to read Compute Engine instances or Cloud Storage objects), making it insufficient for full read-only access.

199
MCQmedium

A Cloud Run service has been running for weeks. A sudden spike in 5xx errors appears in Cloud Monitoring. The team wants to view the actual request logs to identify which endpoint is failing. Where should they look?

A.Cloud Monitoring Metrics Explorer — filter by request_count metric with error status
B.Cloud Logging Logs Explorer — filter by resource type 'cloud_run_revision'
C.Cloud Trace — filter by 5xx response code
D.Cloud Debugger — set a snapshot at the error handler
AnswerB

Cloud Run automatically streams structured request logs to Cloud Logging, and each entry includes an httpRequest object with the request URL, response status, latency, and protocol. In Logs Explorer, filter using resource.type="cloud_run_revision" and add a filter like httpRequest.status >= 500 to isolate failed requests; you can then expand each log entry to see the exact endpoint, caller IP, and response details. This gives you the forensic, per-request view needed to identify which endpoints are returning errors.

Why this answer

Cloud Logging's Logs Explorer is the correct place to view actual request logs for a Cloud Run service. It allows filtering by resource type 'cloud_run_revision' and by HTTP status codes (e.g., 5xx) to identify which specific endpoint is failing. Cloud Monitoring Metrics Explorer shows aggregated metrics, not individual log entries, so it cannot pinpoint the exact endpoint.

Exam trap

Google Cloud often tests the distinction between aggregated metrics (Cloud Monitoring) and raw logs (Cloud Logging), trapping candidates who think Metrics Explorer can show individual request details when it only provides statistical aggregates.

How to eliminate wrong answers

Option A is wrong because Cloud Monitoring Metrics Explorer displays aggregated metrics (e.g., request_count) and cannot show the actual request logs needed to identify the specific failing endpoint. Option C is wrong because Cloud Trace is designed for distributed tracing latency analysis, not for viewing request logs filtered by response code; it does not store or expose full request logs. Option D is wrong because Cloud Debugger is used for inspecting live application state (e.g., variable values) via snapshots, not for viewing historical request logs or error details.

200
MCQmedium

A company wants to track costs for each department by using labels on resources. What is the next step after labeling resources to view costs per label?

A.View billing reports filtered by label
B.Export billing to Cloud Storage and analyze
C.Create a billing account budget
D.Use the Cost Table in Cloud Console
AnswerA

Billing reports in Cloud Console support filtering by resource labels, which can be applied at project or resource level. By assigning a label like 'department=marketing' to resources, you can view cost breakdowns per department directly in the billing reports. This is the intended lightweight method for cost allocation without additional data processing.

Why this answer

Labels are key-value pairs attached to resources. To view cost breakdown, you can use billing reports or export to BigQuery and query by label.

201
MCQmedium

A company wants to run a batch job that processes files from a Cloud Storage bucket and writes results to BigQuery. The job runs once daily and can take up to 30 minutes. Which compute option is the most cost-effective and requires the least operational overhead?

A.GKE Autopilot cluster
B.Cloud Functions (2nd gen)
C.Cloud Run jobs
D.Compute Engine with a preemptible VM
AnswerC

Cloud Run jobs directly execute a containerized batch process to completion, scaling to zero immediately after the job finishes, so you pay only for the duration of execution (per-second billing). It supports long-running jobs (up to 24 hours), can be scheduled via Cloud Scheduler, and provides automatic retries, environment configuration, and VPC connectivity without managing servers or clusters. This makes it the most operationally simple and cost-effective option for a daily 30-minute file processing job.

Why this answer

Cloud Functions is event-driven, but for scheduled batch jobs, Cloud Run or Compute Engine are better. However, Cloud Run offers serverless execution with per-second billing and scales down to zero. It is cost-effective for short-lived jobs and requires minimal operational overhead.

202
Multi-Selectmedium

A company wants to allow developers to create Compute Engine instances with a specific set of persistent disk types (e.g., only pd-ssd). Which TWO methods can be used to enforce this? (Choose two.)

Select 2 answers
A.Organization policy with constraint compute.requireShieldedVm
B.VPC custom firewall rules
C.Organization policy with constraint compute.restrictDiskTypes
D.Service account permissions
E.IAM conditions on compute.instances.create
AnswersC, E

This constraint limits the allowed disk types.

Why this answer

The `compute.restrictDiskTypes` organization policy constraint allows administrators to define a list of allowed persistent disk types (e.g., pd-ssd) at the project, folder, or organization level. When set, any Compute Engine instance creation request that specifies a disk type not on the allowed list will be denied by the policy engine, enforcing the restriction without requiring changes to individual IAM roles or scripts.

Exam trap

Google Cloud often tests the distinction between organization policy constraints (which enforce resource-level attributes like disk type) and IAM roles/permissions (which control whether an action is allowed), leading candidates to mistakenly choose service account permissions (Option D) instead of IAM conditions (Option E) for attribute-based restrictions.

203
MCQhard

A platform team wants to define a formal service level objective (SLO) for their API: 99.9% of requests must succeed (HTTP 2xx) over a 30-day rolling window. Which Cloud Monitoring feature tracks this?

A.Create an alerting policy with a 99.9% threshold on the request success metric
B.Define a Cloud Monitoring SLO with a 99.9% availability target over a 30-day rolling window
C.Build a BigQuery dashboard showing 30-day average success rates from exported logs
D.Set an uptime check target of 99.9% in Cloud Monitoring
AnswerB

Cloud Monitoring SLOs are purpose-built for this scenario: you define a service-level objective with a 99.9% availability target, and Cloud Monitoring automatically calculates the error budget over a 30-day rolling window, tracks burn rate, and can alert when the budget is being consumed too quickly. This matches the requirement for measuring sustained availability against a target, and it is the only option that provides proactive error-budget-based alerting.

Why this answer

Cloud Monitoring's SLO feature is specifically designed to track compliance with a formal service level objective, such as 99.9% of requests succeeding over a 30-day rolling window. It automatically calculates the success rate from the selected metric (e.g., request count or latency) and reports the SLO's performance over the defined period, including error budgets and burn rates.

Exam trap

Google Cloud often tests the distinction between an SLO (a formal target with error budgets and burn rates) and a simple threshold alert or uptime check, so candidates mistakenly choose an alerting policy or uptime check because they think any 99.9% threshold tracking qualifies as an SLO.

How to eliminate wrong answers

Option A is wrong because an alerting policy with a 99.9% threshold on the request success metric would trigger an alert when the metric drops below that threshold, but it does not track the SLO over a 30-day rolling window or provide the structured SLO monitoring, error budget, and burn rate analysis that the SLO feature offers. Option C is wrong because building a BigQuery dashboard from exported logs is an indirect, manual approach that lacks the native integration, automatic calculation, and built-in alerting of Cloud Monitoring SLOs; it also requires additional setup and does not provide real-time SLO tracking. Option D is wrong because an uptime check target of 99.9% in Cloud Monitoring measures external availability via synthetic probes (e.g., HTTP GET to a URL), not the actual success rate of all API requests (HTTP 2xx) as defined in the SLO, and it does not track a 30-day rolling window of request-level success.

204
Multi-Selecthard

Which THREE are valid ways to authenticate a user for gcloud commands? (Choose three.)

Select 3 answers
A.API key
B.OAuth2 access token
C.Application Default Credentials
D.Service account key file
E.IdP token
AnswersB, C, D

An OAuth2 access token is a bearer token that grants access to Google APIs on behalf of a user or service account. After `gcloud auth login`, the CLI stores the access token and refresh token, and it uses the access token in each RPC's Authorization header. You can also generate one programmatically from a service account's credentials or a user's OAuth flow, and then pass it via `gcloud auth` commands, making it a valid authentication method.

Why this answer

An OAuth2 access token can be used to authenticate gcloud commands by passing it with the `--access-token-file` flag or via the `gcloud auth print-access-token` command. This token is obtained from an authorization server and provides temporary, scoped access to Google Cloud resources without requiring a long-lived credential like a service account key.

Exam trap

Google Cloud often tests the misconception that API keys are a valid authentication method for gcloud commands, but API keys only identify projects and are not accepted by gcloud for user or service account authentication.

205
MCQmedium

An organization wants to deploy a containerized web application on Google Cloud with minimum operational overhead. The application should scale to zero when not in use and only incur costs when serving requests. Which service should they choose?

A.App Engine Flexible Environment
B.Google Kubernetes Engine (GKE)
C.Compute Engine with container-optimized OS
D.Cloud Run
AnswerD

Cloud Run is a fully managed serverless platform that executes containers in a stateless, request-driven model: when there are no incoming requests, it can scale the service down to zero instances, so you are not charged for idle resources. It automatically scales up to handle traffic spikes, and billing is based on request duration and CPU/memory usage during active processing, measured in 100ms increments. This makes it the most operationally efficient choice for a containerized web application that expects variable traffic.

Why this answer

Cloud Run is a fully managed serverless platform that scales to zero, charges only for request processing time, and abstracts infrastructure management. GKE requires cluster management and nodes always running. App Engine Flexible requires at least one instance always running.

Compute Engine requires full VM management.

206
MCQmedium

A Kubernetes namespace is shared by multiple teams. The platform team wants to ensure no single team's workloads can consume more than 10 CPU cores and 20 GB memory in that namespace. Which Kubernetes resource enforces this constraint?

A.LimitRange — sets per-Pod CPU and memory limits
B.ResourceQuota scoped to the namespace
C.PodDisruptionBudget limiting the number of running Pods
D.Network Policy restricting namespace traffic to avoid resource contention
AnswerB

A ResourceQuota scoped to a namespace is the correct control because it enforces aggregate resource ceilings at the namespace level, evaluated at admission time. For example, setting `spec.hard.requests.cpu: "10"` and `spec.hard.requests.memory: "20Gi"` makes the API server reject any new Pod whose addition would push total namespace requests beyond those values with a 403 Forbidden response. Quotas can also cap limits.cpu, limits.memory, and object counts (e.g., services, secrets, PVCs), which directly addresses the need to avoid resource contention by bounding total consumption.

Why this answer

ResourceQuota is the Kubernetes resource that enforces aggregate resource consumption limits at the namespace level. By configuring a ResourceQuota with spec.hard.cpu: 10 and spec.hard.memory: 20Gi, the platform team can cap the total CPU and memory usage across all Pods in the namespace, preventing any single team from exceeding those limits.

Exam trap

The trap here is that candidates confuse LimitRange (per-Pod constraints) with ResourceQuota (namespace-level aggregate constraints), leading them to select LimitRange when the question explicitly asks for a resource that enforces a total cap across all workloads.

How to eliminate wrong answers

Option A is wrong because LimitRange sets per-Pod or per-Container default and minimum/maximum resource requests and limits, not an aggregate namespace-wide cap; it cannot prevent the sum of all Pods from exceeding 10 CPU cores and 20 GB memory. Option C is wrong because PodDisruptionBudget limits the number of Pods that can be voluntarily disrupted (e.g., during node maintenance), not the total resource consumption or running Pod count. Option D is wrong because Network Policy controls traffic flow between Pods based on labels and namespaces, not resource usage; it has no mechanism to enforce CPU or memory quotas.

207
MCQhard

You need to change the machine type of a running Compute Engine instance from n1-standard-4 to n1-standard-8. What is the correct procedure?

A.Delete the instance and recreate it with the new machine type.
B.Run gcloud compute instances set-machine-type while the instance is running.
C.Stop the instance, run gcloud compute instances set-machine-type, then start the instance.
D.Take a snapshot, create a new instance, and attach the disk.
AnswerC

This is the only correct sequence: first stop the instance (gcloud compute instances stop), which transitions it to the TERMINATED state, then call gcloud compute instances set-machine-type with the desired type (predefined, custom, or E2), and finally start the instance again. The stop/start cycle is required because the hypervisor must release the old vCPU and memory resources before the new allocation can be applied. After the instance starts, it retains its existing disks, IP addresses, and metadata, so no configuration is lost.

Why this answer

Changing machine type requires stopping the instance first.

208
MCQmedium

A project has the following IAM bindings: User A has `roles/editor` at the project level, and a folder-level policy denies `roles/editor` to User A. Which effective permission does User A have on the project?

A.User A has Editor permissions because project-level IAM takes precedence over folder-level.
B.User A is denied Editor permissions because IAM Deny policies at a parent resource override allow grants at child resources.
C.User A has no permissions because conflicting policies result in no access.
D.User A has Editor permissions because folder-level policies don't apply to individual projects.
AnswerB

IAM Deny policies, when set at a folder level, prevent the denied permissions from taking effect on all child resources, including the project — even if the project has an allow binding for those permissions. Deny takes precedence over allow.

Why this answer

In Google Cloud, IAM Deny policies at a parent resource (like a folder) override allow bindings at a child resource (like a project). Even though User A has `roles/editor` granted at the project level, the folder-level Deny policy explicitly denies that role, so the effective permission is denial. This follows the principle that Deny policies are evaluated before Allow bindings and take precedence.

Exam trap

Google Cloud often tests the misconception that 'lower-level grants override higher-level denials' or that 'conflicting policies result in no access,' when in fact Deny policies at any level take precedence over Allow bindings at any lower level.

How to eliminate wrong answers

Option A is wrong because it incorrectly claims project-level IAM takes precedence over folder-level; in reality, Deny policies at a parent resource override allow grants at child resources. Option C is wrong because conflicting policies do not result in 'no access' — the Deny policy explicitly overrides the allow, resulting in a clear denial of Editor permissions. Option D is wrong because folder-level policies do apply to all projects within that folder; IAM policies are hierarchical and inherited downward.

209
MCQmedium

A developer is using Cloud Functions (Gen 2) which is based on Cloud Run. They need to handle events from Cloud Storage when a new object is uploaded. Which event type should they use?

A.google.cloud.storage.object.v1.metadataUpdated
B.google.cloud.storage.object.v1.finalized
C.google.cloud.storage.object.v1.deleted
D.google.cloud.storage.object.v1.archived
AnswerB

google.cloud.storage.object.v1.finalized is the correct Eventarc event type for Cloud Functions (2nd gen) that corresponds to a new object being uploaded or an existing object being overwritten in Cloud Storage. It is the standard event for processing a newly created object, matching the legacy 'object finalized' event but now delivered through Eventarc for 2nd gen functions.

Why this answer

In Cloud Functions Gen 2, the event type for Cloud Storage object finalization is 'google.cloud.storage.object.v1.finalized'.

210
MCQmedium

A developer creates a Cloud Storage bucket and sets a uniform bucket-level access policy. What is the implication?

A.Only object ACLs are used
B.Bucket permissions override object ACLs
C.Both bucket IAM and object ACLs are used
D.Object ACLs are disabled
AnswerD

This is correct. When uniform bucket-level access (UBLA) is enabled on a bucket, all object ACLs are disabled, and access to objects is controlled solely by IAM permissions on the bucket itself. This ensures that per-object ACLs cannot conflict with bucket-level policies, simplifying permission management by enforcing a single, unified access control mechanism.

Why this answer

When uniform bucket-level access is enabled on a Cloud Storage bucket, all access control is managed exclusively through IAM policies at the bucket level. Object ACLs are disabled, meaning individual object permissions cannot be set or evaluated. This ensures consistent access control across all objects in the bucket.

Exam trap

Google Cloud often tests the misconception that uniform bucket-level access 'overrides' or 'takes precedence over' object ACLs, when in fact it completely disables them, making any ACL-related operations invalid.

How to eliminate wrong answers

Option A is wrong because object ACLs are not used at all when uniform bucket-level access is enabled; they are disabled, not the sole mechanism. Option B is wrong because bucket IAM permissions do not 'override' object ACLs; instead, object ACLs are completely disabled and ignored. Option C is wrong because both bucket IAM and object ACLs are not used together; uniform bucket-level access disables object ACLs entirely.

211
MCQmedium

You need persistent shared file storage for a legacy application running on multiple Compute Engine VMs that requires POSIX-compliant file system access (NFS). The workload is I/O intensive with files up to 100 GB. Which GCP storage service should you use?

A.Cloud Storage FUSE mounted on each VM
B.Cloud Filestore (NFS)
C.Persistent Disk attached in ReadWriteMany mode to all VMs
D.Local SSD on each VM with rsync synchronization between VMs
AnswerB

Cloud Filestore is a fully managed NFS service that provides a POSIX-compliant file system with proper file locking, consistent metadata, and low-latency access over the network. Multiple Compute Engine instances can mount the same Filestore file system concurrently in read/write mode, giving true shared storage without the need to manage your own NFS server. Its performance tiers (standard, premium, and high-performance SSD) deliver consistent throughput and IOPS, making it ideal for legacy applications that require coherent shared access and strong consistency across a cluster of VMs.

Why this answer

Cloud Filestore provides a fully managed NFS server that supports POSIX-compliant file access, making it the correct choice for a legacy application requiring NFS. It can handle I/O-intensive workloads with large files (up to 100 GB) by offering high throughput and low-latency access from multiple Compute Engine VMs simultaneously.

Exam trap

The trap here is that candidates often confuse Cloud Storage FUSE with a true POSIX file system, overlooking its lack of native NFS support and performance limitations for I/O-intensive workloads, while also mistakenly thinking Persistent Disk can be attached in ReadWriteMany mode to multiple VMs.

How to eliminate wrong answers

Option A is wrong because Cloud Storage FUSE presents an object storage bucket as a file system, but it does not provide true POSIX compliance (e.g., it lacks support for file locking, hard links, and consistent directory operations) and can suffer from performance issues with I/O-intensive workloads and large files. Option C is wrong because Persistent Disk cannot be attached in ReadWriteMany mode to multiple VMs; it only supports ReadWriteOnce (single writer) or ReadOnlyMany (multiple readers), so it cannot serve as shared writable storage for multiple VMs. Option D is wrong because Local SSDs are ephemeral and tied to a single VM, and rsync synchronization between VMs introduces data consistency issues, latency, and complexity, failing to provide the persistent, POSIX-compliant shared file system required.

212
Multi-Selectmedium

You need to deploy an application that requires a regional MySQL database with automated backups, high availability, and failover. You also need to store static assets that are publicly accessible. Which TWO Google Cloud services should you use?

Select 2 answers
A.Cloud SQL (MySQL)
B.Cloud Storage
C.Bigtable
D.Cloud Filestore
E.Cloud Spanner
AnswersA, B

Cloud SQL for MySQL is a fully managed relational database service that provides the exact MySQL engine required by the application. It supports regional high availability through synchronous replication across two zones, automated backups, and point-in-time recovery, meeting both performance and durability needs without operational overhead. Its compatibility with standard MySQL drivers and protocols makes it the ideal choice for a regional MySQL workload.

Why this answer

Cloud SQL with MySQL provides managed MySQL with high availability (regional) and automated backups. Cloud Storage can host static assets publicly.

213
MCQmedium

A distributed database running on GKE requires stable, persistent hostnames (pod-0, pod-1, pod-2) and ordered startup/shutdown for proper cluster initialization. Pods must retain their identity across restarts. Which Kubernetes resource is designed for this?

A.Deployment with pod affinity rules
B.StatefulSet with a headless Service
C.DaemonSet with a unique hostname label on each node
D.ReplicaSet with a fixed replica count
AnswerB

A StatefulSet assigns each replica a stable ordinal name (e.g., pod-0, pod-1) and, when paired with a headless Service, gives each Pod a predictable DNS name like pod-0.mydb.svc.cluster.local. This creates the stable network identities and ordered provisioning/deprovisioning that stateful clustered applications need. Additionally, StatefulSets preserve persistent volume claims across restarts and scale up/down in a deterministic order, making them the standard choice for replicated databases and distributed systems.

Why this answer

StatefulSet is the correct resource because it provides stable, unique network identifiers (e.g., pod-0, pod-1, pod-2) via a headless Service, ordered startup and shutdown (pod-0 starts first, pod-2 terminates first), and persistent pod identity that survives restarts. These features are essential for distributed databases like Cassandra or ZooKeeper that require consistent hostnames and initialization order.

Exam trap

Google Cloud often tests the misconception that a Deployment with a fixed number of replicas can provide stable identities, but Deployments treat pods as interchangeable and do not preserve hostnames or startup order, making StatefulSet the only correct choice for stateful workloads requiring persistent identity.

How to eliminate wrong answers

Option A is wrong because a Deployment with pod affinity rules does not guarantee stable hostnames or ordered startup/shutdown; pods get random names and can be created or terminated in any order, which breaks cluster initialization for stateful applications. Option C is wrong because a DaemonSet runs exactly one pod per node and uses node hostnames, not stable pod hostnames like pod-0, and it does not provide ordered startup/shutdown or persistent pod identity across restarts. Option D is wrong because a ReplicaSet with a fixed replica count does not assign stable, predictable hostnames or enforce ordered startup/shutdown; pods are ephemeral and can be replaced with different names, losing identity.

214
MCQmedium

You need to export all Cloud Logging logs from a specific project to BigQuery for long-term analysis. What should you create?

A.A log-based metric with BigQuery as destination
B.A log sink with BigQuery as the destination
C.A Pub/Sub subscription that pushes logs to BigQuery
D.An export job from Logging to BigQuery using gcloud logging export
AnswerB

A log sink is the correct Cloud Logging resource for streaming log entries to a supported destination, and BigQuery is a first-class destination. When you create a sink with `gcloud logging sinks create` or in the console, you specify a BigQuery dataset as the destination; Cloud Logging then continuously routes exported log entries into a partitioned table. This satisfies the requirement to export all logs from the project, optionally filtered by a log query.

Why this answer

Log sinks in Cloud Logging allow you to route logs to destinations like BigQuery, Cloud Storage, or Pub/Sub. You create a sink with BigQuery as the destination.

215
MCQmedium

You need to attach an existing 100 GB persistent disk named 'my-disk' to a Compute Engine instance 'web-server-1'. What is the correct command?

A.gcloud compute instances add-disk web-server-1 --disk my-disk
B.gcloud compute disks attach my-disk --instance web-server-1
C.gcloud compute disks create my-disk --instance web-server-1
D.gcloud compute instances attach-disk web-server-1 --disk my-disk
AnswerD

This is the correct command. The attach-disk subcommand belongs to gcloud compute instances, takes web-server-1 as the resource, and uses --disk my-disk to specify the existing persistent disk to attach. It associates the already provisioned 100 GB disk with the instance, and requires the disk and instance to be in the same zone (or use --zone if they are not set).

Why this answer

The command is gcloud compute instances attach-disk.

216
MCQmedium

A company needs to store petabytes of time-series IoT sensor data and query it with single-digit millisecond latency at millions of reads per second. The data has a simple key-value structure with timestamps. Which Google Cloud database is MOST appropriate?

A.Cloud Bigtable
B.BigQuery
C.Firestore
D.Cloud Spanner
AnswerA

Bigtable is the correct choice: wide-column NoSQL, designed for time-series and IoT workloads, single-digit ms latency, and scales to millions of QPS with additional nodes.

Why this answer

Cloud Bigtable is designed for exactly this use case — petabyte-scale, low-latency (single-digit ms), high-throughput NoSQL storage for time-series, IoT, and financial data. It scales horizontally by adding nodes. BigQuery is optimised for analytics (seconds-to-minutes latency), Cloud SQL is for OLTP (limited to tens of thousands of QPS), and Firestore is for document data with hierarchical structure.

217
MCQhard

You are designing an environment where a CI/CD pipeline running in GitHub Actions needs to deploy Cloud Run services without storing any long-lived service account keys. Your organization's security policy prohibits downloading SA keys. Which approach meets these requirements?

A.Create a service account key, base64-encode it, and store it as a GitHub Actions secret.
B.Use Workload Identity Federation to allow GitHub Actions to impersonate a service account using OIDC tokens.
C.Grant the GitHub Actions runner VM's default service account the necessary roles.
D.Use Cloud Build triggers instead of GitHub Actions to avoid key management.
AnswerB

Workload Identity Federation is the correct approach because it lets GitHub Actions present an OIDC token minted for the GitHub workflow run, which Google Cloud then exchanges for a short-lived STS security token. This token is scoped to a service account via an IAM binding and optional attribute conditions, and it expires after a configurable duration (typically under 1 hour). No service account key is ever created or stored, satisfying the security policy while still granting the pipeline the exact permissions it needs via impersonation.

Why this answer

Workload Identity Federation allows GitHub Actions to exchange OIDC tokens from GitHub's identity provider for Google Cloud service account impersonation, eliminating the need to download and store long-lived service account keys. This approach satisfies the security policy by using short-lived, automatically rotated tokens that are valid for only one hour, and it integrates directly with GitHub's OIDC provider without requiring any secret key material.

Exam trap

Google Cloud often tests the misconception that you can rely on the runner VM's default service account in GitHub Actions, but GitHub-hosted runners are not GCP VMs, so that service account is irrelevant and the runner has no inherent GCP identity.

How to eliminate wrong answers

Option A is wrong because it violates the security policy by creating a long-lived service account key and storing it as a GitHub secret, which is exactly what the policy prohibits. Option C is wrong because the GitHub Actions runner VM's default service account is not used when running in GitHub-hosted runners; the runner is ephemeral and not associated with a GCP VM, so granting roles to that default service account has no effect. Option D is wrong because it avoids the problem rather than solving it; the requirement is to deploy from GitHub Actions, and switching to Cloud Build does not address the need to use GitHub Actions without keys.

218
MCQeasy

Which Google Cloud service is a fully managed, serverless data warehouse for analytics at petabyte scale, with built-in machine learning capabilities and automatic scaling?

A.Cloud Storage
B.Dataproc
C.Cloud SQL
D.BigQuery
AnswerD

BigQuery is the correct answer because it is a fully managed, serverless data warehouse designed for petabyte-scale analytics using standard SQL. It automatically handles infrastructure provisioning, scaling, and high availability, with a columnar storage format and a powerful distributed query engine (Dremel). BigQuery also includes built-in features like BigQuery ML for in-database machine learning, partitioning/clustering for performance, and a pay-per-query pricing model, making it a true serverless data warehouse rather than a provisioning-based service.

Why this answer

BigQuery is a serverless, highly scalable data warehouse that supports SQL queries, automatic scaling, and integrated ML (BigQuery ML).

219
MCQeasy

A project is being decommissioned. You need to delete it but want to ensure there is a 30-day window during which the deletion can be cancelled if needed. What happens when you delete a GCP project?

A.The project is immediately and permanently deleted along with all resources.
B.The project enters a 30-day pending deletion period; resources are inaccessible but the project can be restored within this window.
C.The project is archived but billing continues for 30 days before final deletion.
D.All resources are deleted immediately but the project ID is reserved for 90 days.
AnswerB

When a project is deleted, it enters a 30-day pending deletion period by default, not immediate destruction. Throughout this period, all resources are inaccessible—VMs are stopped, storage buckets are unreachable—but the project metadata and underlying resources remain intact for recovery. An administrator can cancel the deletion anytime using the `gcloud projects undelete PROJECT_ID` command, which restores the project and its resources to full operation. After 30 days, the deletion becomes permanent and recovery is impossible.

Why this answer

When you delete a GCP project, it enters a 30-day pending deletion period. During this time, all resources are inaccessible, but the project and its data can be fully restored if needed. This ensures a safety window before permanent deletion, aligning with the requirement for a 30-day cancellation window.

Exam trap

Google Cloud often tests the misconception that deletion is immediate and irreversible, leading candidates to choose Option A, but GCP's 30-day soft-delete period is a key differentiator that must be remembered for the ACE exam.

How to eliminate wrong answers

Option A is wrong because GCP does not immediately and permanently delete a project; it enforces a 30-day pending deletion period to allow recovery. Option C is wrong because the project is not archived; it is placed in a pending deletion state, and billing stops immediately upon deletion, not continued for 30 days. Option D is wrong because resources are not deleted immediately; they remain recoverable during the 30-day window, and the project ID is not reserved for 90 days—it becomes available after the 30-day period or upon permanent deletion.

220
Multi-Selectmedium

A team is deploying a stateful application on GKE that requires each pod to have its own persistent disk. Which TWO Kubernetes resources are essential for this deployment? (Choose two.)

Select 2 answers
A.Deployment
B.ConfigMap
C.StatefulSet
D.Ingress
E.PersistentVolumeClaim (PVC)
AnswersC, E

StatefulSet is the correct workload API for stateful applications on GKE. It gives each pod a stable, unique network identity (e.g., `database-0`, `database-1`) and, via `volumeClaimTemplate`, provisions a dedicated PersistentVolume and PVC for each replica. Pods are created and scaled in ordinal order, ensuring predictable startup/shutdown sequences. This is ideal for databases, message brokers, and other apps that need sticky identity and per-pod persistent storage.

Why this answer

A StatefulSet is essential because it provides stable, unique network identifiers and ordered, graceful deployment and scaling for stateful applications, ensuring each pod maintains its identity and persistent storage binding across rescheduling. A PersistentVolumeClaim (PVC) is required to request and bind a persistent disk to each pod, enabling the pod to retain its data independently of other pods in the set.

Exam trap

Google Cloud often tests the misconception that a Deployment can handle stateful workloads with persistent storage, but the trap is that a Deployment does not guarantee stable pod identities or ordered PVC binding, causing data loss or identity conflicts when pods are rescheduled.

221
MCQeasy

You are using Cloud Shell and need to access a file you created two weeks ago. What is the persistence behavior of Cloud Shell home directories?

A.Cloud Shell home directories are stored in Cloud Storage and are always available.
B.Cloud Shell home directories persist for 30 days after last use.
C.Cloud Shell home directories are temporary and are deleted after each session.
D.Cloud Shell home directories persist across sessions, with 5 GB of storage.
AnswerD

Cloud Shell provides each user with a persistent 5 GB home directory stored on a zonal persistent disk that is independent of the underlying compute instance. Because it is not tied to the VM's lifecycle, files you create remain available across all future Cloud Shell sessions, making it a reliable place to keep small scripts or configuration files.

Why this answer

Cloud Shell provides 5 GB of persistent home storage backed by Cloud Filestore or persistent disk. It persists across sessions, even if Cloud Shell is idle. However, it is not backed up; if the instance is reset, data may be lost.

But under normal use, data persists.

222
MCQhard

You are deploying a Cloud Run service revision that should initially receive 0% of traffic (for testing via a direct URL), while the existing revision continues to serve 100% of production traffic. Which `gcloud run deploy` flag achieves this?

A.`--no-traffic`
B.`--traffic=0`
C.`--revision-suffix=canary` with no traffic configuration
D.`--min-instances=0 --max-instances=0`
AnswerA

--no-traffic deploys the new revision while setting its traffic share to 0%, leaving the current live revision (or existing traffic split) untouched. The deploy creates an immutable revision with a unique URL that can trigger the revision in isolation, enabling you to test the new code with production settings and dependencies before promoting it. This is the standard pattern for safe canary or blue/green deployment on Cloud Run.

Why this answer

The `--no-traffic` flag on `gcloud run deploy` deploys a new revision but directs 0% of traffic to it, leaving the existing revision serving 100% of production traffic. This allows you to test the new revision via its direct URL without impacting live users. It is the correct and explicit way to achieve a zero-traffic deployment in Cloud Run.

Exam trap

The trap here is that candidates confuse traffic routing with instance scaling, assuming `--min-instances=0` or a bare `--traffic=0` would prevent traffic, when in fact Cloud Run requires explicit traffic management via `--no-traffic` or the `--traffic` flag with a revision identifier.

How to eliminate wrong answers

Option B is wrong because `--traffic=0` is not a valid flag; `gcloud run deploy` uses `--no-traffic` or `--traffic` with a revision name and percentage (e.g., `--traffic=new-revision=0`) but not a bare `=0`. Option C is wrong because `--revision-suffix=canary` only names the revision; without a traffic flag, the new revision automatically receives 100% of traffic by default, defeating the requirement. Option D is wrong because `--min-instances=0 --max-instances=0` controls instance scaling (allowing zero idle instances) but does not affect traffic routing; the new revision would still receive traffic unless explicitly prevented.

223
Multi-Selectmedium

A company wants to run a containerized application on Google Cloud with minimal operational overhead. The application is stateless and can tolerate cold starts. Which three compute services should they consider? (Choose three.)

Select 3 answers
A.GKE Autopilot
B.Compute Engine
C.Cloud Functions
D.GKE Standard
E.Cloud Run
AnswersA, C, E

Why this answer

Cloud Run, Cloud Functions, and GKE Autopilot are all serverless or fully managed container platforms with minimal operational overhead. Compute Engine and GKE Standard require node management.

224
MCQeasy

You want to receive notifications when a specific metric exceeds a threshold. Which Cloud Monitoring resource defines the condition and the action?

A.Alerting policy
B.Dashboard
C.Uptime check
D.Notification channel
AnswerA

An alerting policy is the correct resource in Google Cloud Monitoring for triggering notifications based on a specific metric condition. It contains one or more conditions (e.g., metric crosses a threshold for a set duration) and references a notification channel to deliver the alert. Without an alerting policy, no metric evaluation or notification can occur.

Why this answer

An alerting policy defines conditions (metric threshold) and notification channels.

225
MCQmedium

A GKE Deployment runs a web application with 6 replicas across a 3-node cluster. To ensure no two replicas land on the same node (maximizing availability), which Pod spec configuration should be applied?

A.Set podAntiAffinity with requiredDuringSchedulingIgnoredDuringExecution and topologyKey: kubernetes.io/hostname
B.Set podAffinity with requiredDuringSchedulingIgnoredDuringExecution and topologyKey: kubernetes.io/hostname
C.Set topologySpreadConstraints with maxSkew: 1 and topologyKey: kubernetes.io/hostname
D.Set nodeSelector to a specific node for each replica
AnswerA

This creates a hard (required) anti-affinity rule that tells the scheduler: do not place a Pod on a node where a Pod matching the same selector already runs. Using topologyKey: kubernetes.io/hostname scopes that check to individual nodes, so the scheduler will only place one replica per node, even as nodes are added or removed. Because the rule is in the Pod spec, it is dynamic and self-managing, unlike manual node pinning. This is the standard declarative approach for achieving strict per-node exclusivity.

Why this answer

`podAntiAffinity` with `requiredDuringSchedulingIgnoredDuringExecution` and `topologyKey: kubernetes.io/hostname` forces the scheduler to place each replica on a different node. This ensures that no two pods of the same Deployment run on the same Kubernetes node, maximizing availability by preventing a single node failure from taking down more than one replica.

Exam trap

Google Cloud often tests the distinction between `podAffinity` and `podAntiAffinity` — the trap here is that candidates confuse the two, or assume `topologySpreadConstraints` provides the same hard guarantee as anti-affinity, when it only enforces even distribution, not strict separation.

How to eliminate wrong answers

Option B is wrong because `podAffinity` attracts pods to the same node, which would cause replicas to co-locate, reducing availability. Option C is wrong because `topologySpreadConstraints` with `maxSkew: 1` distributes pods evenly across nodes but does not guarantee that no two replicas land on the same node; it only ensures a balanced distribution, which could still allow multiple replicas on one node if the cluster has fewer nodes than replicas. Option D is wrong because setting `nodeSelector` to a specific node for each replica is not dynamic and would require manual management; it also cannot guarantee anti-affinity across all replicas without complex scripting, and it violates the declarative nature of Kubernetes scheduling.

Page 2

Page 3 of 11

Page 4

All pages