Bird
Raised Fist0
Kubernetesdevops~20 mins

ExternalName service type in Kubernetes - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
ExternalName Service Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
1:30remaining
What does an ExternalName service do in Kubernetes?

In Kubernetes, what is the primary function of a service of type ExternalName?

AIt creates a load balancer in the cloud provider to route traffic.
BIt exposes a service on a static IP address inside the cluster.
CIt forwards traffic to pods selected by labels within the cluster.
DIt maps a service to an external DNS name by returning a CNAME record.
Attempts:
2 left
💡 Hint

Think about how Kubernetes can redirect service requests to names outside the cluster.

💻 Command Output
intermediate
1:30remaining
Output of ExternalName service DNS lookup

Given this ExternalName service YAML:

apiVersion: v1
kind: Service
metadata:
  name: my-external
spec:
  type: ExternalName
  externalName: example.com

What is the expected DNS record type returned when a pod inside the cluster queries my-external.default.svc.cluster.local?

AAn A record with the IP address of example.com
BA CNAME record pointing to example.com
CAn SRV record for service discovery
DNo DNS record found error
Attempts:
2 left
💡 Hint

ExternalName services return a DNS alias, not direct IP addresses.

❓ Configuration
advanced
2:00remaining
Correct ExternalName service YAML configuration

Which YAML snippet correctly defines an ExternalName service named db-service that points to db.example.org?

A
apiVersion: v1
kind: Service
metadata:
  name: db-service
spec:
  type: ExternalName
  externalName: db.example.org
B
apiVersion: v1
kind: Service
metadata:
  name: db-service
spec:
  type: ClusterIP
  externalName: db.example.org
C
apiVersion: v1
kind: Service
metadata:
  name: db-service
spec:
  type: ExternalName
  clusterIP: None
  externalName: db.example.org
D
apiVersion: v1
kind: Service
metadata:
  name: db-service
spec:
  type: LoadBalancer
  externalName: db.example.org
Attempts:
2 left
💡 Hint

Remember the service type must be ExternalName and no clusterIP or load balancer is needed.

❓ Troubleshoot
advanced
2:00remaining
Why does an ExternalName service fail to resolve?

You created an ExternalName service pointing to nonexistent.example.com. Pods trying to access the service get DNS resolution errors. What is the most likely cause?

AThe externalName DNS does not exist or is unreachable from the cluster DNS resolver.
BThe service selector labels are missing, so no endpoints are created.
CThe service type ExternalName is not supported in the Kubernetes version used.
DThe clusterIP is set to None, causing DNS failures.
Attempts:
2 left
💡 Hint

ExternalName relies on external DNS resolution.

✅ Best Practice
expert
2:30remaining
Best practice for using ExternalName services securely

When using ExternalName services to access external resources, which practice improves security and reliability?

ADisable DNS caching on pods to ensure fresh resolution of the externalName every time.
BUse ExternalName services only for internal cluster services to avoid external dependencies.
CUse a private DNS name that resolves only within the cluster network and configure network policies to restrict access.
DSet the externalName to a public IP address instead of a DNS name to avoid DNS resolution delays.
Attempts:
2 left
💡 Hint

Think about controlling access and DNS resolution scope.

Practice

(1/5)
1. What is the main purpose of a Kubernetes ExternalName service?
easy
A. To map a service to an external DNS name outside the cluster
B. To expose a pod's IP address inside the cluster
C. To load balance traffic between pods
D. To create a persistent volume claim

Solution

  1. Step 1: Understand ExternalName service role

    An ExternalName service maps a Kubernetes service to an external DNS name, allowing pods to access external services by a simple name.
  2. Step 2: Compare with other service types

    Other service types like ClusterIP or LoadBalancer expose pods or balance traffic, but ExternalName specifically maps to external DNS.
  3. Final Answer:

    To map a service to an external DNS name outside the cluster -> Option A
  4. Quick Check:

    ExternalName = external DNS mapping [OK]
Hint: ExternalName points to DNS, not IP or pods [OK]
Common Mistakes:
  • Confusing ExternalName with ClusterIP or LoadBalancer
  • Thinking it manages pod IPs
  • Assuming it handles ports inside the cluster
2. Which of the following is the correct minimal YAML snippet to create an ExternalName service named my-external pointing to example.com?
easy
A. apiVersion: v1\nkind: Service\nmetadata:\n name: my-external\nspec:\n type: LoadBalancer\n externalName: example.com
B. apiVersion: v1\nkind: Service\nmetadata:\n name: my-external\nspec:\n type: ExternalName\n externalName: example.com
C. apiVersion: v1\nkind: Service\nmetadata:\n name: my-external\nspec:\n type: ExternalName\n clusterIP: example.com
D. apiVersion: v1\nkind: Service\nmetadata:\n name: my-external\nspec:\n type: ClusterIP\n externalName: example.com

Solution

  1. Step 1: Identify correct service type and field

    ExternalName service requires type: ExternalName and externalName field with the DNS name.
  2. Step 2: Check YAML correctness

    apiVersion: v1\nkind: Service\nmetadata:\n name: my-external\nspec:\n type: ExternalName\n externalName: example.com correctly sets type: ExternalName and externalName: example.com. Other options use wrong types or fields.
  3. Final Answer:

    YAML with type ExternalName and externalName: example.com -> Option B
  4. Quick Check:

    ExternalName YAML = type ExternalName + externalName field [OK]
Hint: ExternalName needs type and externalName fields exactly [OK]
Common Mistakes:
  • Using ClusterIP or LoadBalancer instead of ExternalName
  • Setting clusterIP instead of externalName
  • Omitting the externalName field
3. Given this ExternalName service YAML:
apiVersion: v1
kind: Service
metadata:
  name: ext-service
spec:
  type: ExternalName
  externalName: api.example.com

What happens when a pod inside the cluster runs nslookup ext-service?
medium
A. It returns the cluster IP of ext-service
B. It returns the IP address of the pod running the service
C. It returns an error because ExternalName services have no IP
D. It returns the IP address of api.example.com

Solution

  1. Step 1: Understand DNS resolution for ExternalName

    ExternalName services create a DNS CNAME record pointing to the externalName value, so queries resolve to that external DNS.
  2. Step 2: Analyze nslookup behavior

    Running nslookup ext-service returns the IP address of api.example.com by resolving the CNAME.
  3. Final Answer:

    It returns the IP address of api.example.com -> Option D
  4. Quick Check:

    ExternalName DNS = external DNS IP [OK]
Hint: ExternalName returns external DNS IP on lookup [OK]
Common Mistakes:
  • Expecting pod or cluster IP for ExternalName
  • Thinking ExternalName has its own IP
  • Assuming nslookup fails for ExternalName
4. You created this ExternalName service YAML:
apiVersion: v1
kind: Service
metadata:
  name: ext-svc
spec:
  type: ExternalName
  externalName: 123.45.67.89

Why does this configuration fail?
medium
A. externalName field is missing
B. type ExternalName cannot be used with metadata
C. externalName must be a DNS name, not an IP address
D. Service type must be ClusterIP for IP addresses

Solution

  1. Step 1: Check externalName field requirements

    The externalName must be a valid DNS name, not an IP address.
  2. Step 2: Identify error cause

    Using an IP address like 123.45.67.89 in externalName is invalid and causes failure.
  3. Final Answer:

    externalName must be a DNS name, not an IP address -> Option C
  4. Quick Check:

    externalName = DNS name only [OK]
Hint: externalName must be a DNS name, not IP [OK]
Common Mistakes:
  • Using IP instead of DNS in externalName
  • Confusing service type rules
  • Omitting externalName field
5. You want pods in your cluster to access an external database at db.external.com using the service name external-db. You also want to ensure no IP or port is configured inside the cluster. Which is the best way to configure this?
hard
A. Create an ExternalName service named external-db with externalName: db.external.com
B. Create a ClusterIP service named external-db with selector matching database pods
C. Create a LoadBalancer service named external-db pointing to db.external.com IP
D. Create a NodePort service named external-db with targetPort set to database port

Solution

  1. Step 1: Understand requirement for no IP or port inside cluster

    ExternalName service maps a service name to an external DNS without IP or port configuration inside the cluster.
  2. Step 2: Match requirement with service types

    ClusterIP, LoadBalancer, and NodePort require IPs or ports inside the cluster, so they don't fit the requirement.
  3. Final Answer:

    Create an ExternalName service named external-db with externalName: db.external.com -> Option A
  4. Quick Check:

    ExternalName = external DNS, no IP/port config [OK]
Hint: Use ExternalName for external DNS without cluster IP/port [OK]
Common Mistakes:
  • Using ClusterIP or LoadBalancer for external DNS
  • Configuring ports inside the cluster unnecessarily
  • Not using ExternalName for external services
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard