Container Network Interface (CNI) Setup in Kubernetes
📖 Scenario: You are setting up a Kubernetes cluster and need to configure the network so that pods can communicate with each other. This is done using a Container Network Interface (CNI) plugin.In this project, you will create a simple YAML configuration to apply a CNI plugin to your cluster, configure a network range, and verify the network setup.
🎯 Goal: Learn how to apply a CNI plugin configuration in Kubernetes and verify that pods can communicate over the network.
📋 What You'll Learn
Create a YAML manifest for a CNI plugin deployment
Add a network configuration with a specific pod CIDR range
Apply the CNI configuration to the Kubernetes cluster
Verify the network plugin pods are running
💡 Why This Matters
🌍 Real World
Kubernetes clusters need a network plugin to allow pods to communicate. Setting up a CNI plugin like Calico is a common real-world task to enable pod networking.
💼 Career
DevOps engineers and Kubernetes administrators often configure and manage CNI plugins to ensure cluster networking works correctly and securely.
Progress0 / 4 steps
1
Create the CNI Plugin YAML Manifest
Create a YAML file named calico.yaml with the following content to deploy the Calico CNI plugin. Include the apiVersion as projectcalico.org/v3 and kind as Installation. Set the spec.calicoNetwork.ipPools[0].cidr to 192.168.0.0/16.
Kubernetes
Hint
Use the exact keys apiVersion, kind, and spec.calicoNetwork.ipPools[0].cidr with the given values.
2
Add Network Configuration for Pod CIDR
In the same calico.yaml file, add a spec.kubernetesProvider section with nodePortSupport set to true to enable Kubernetes node port support.
Kubernetes
Hint
Indent kubernetesProvider under spec and set nodePortSupport to true.
3
Apply the CNI Plugin Configuration
Use the command kubectl apply -f calico.yaml to apply the CNI plugin configuration to your Kubernetes cluster.
Kubernetes
Hint
Type the exact command kubectl apply -f calico.yaml to apply the configuration.
4
Verify the CNI Plugin Pods are Running
Run kubectl get pods -n calico-system and check that the Calico pods have the status Running. Print the output of this command.
Kubernetes
Hint
Use the exact command kubectl get pods -n calico-system to see the status of Calico pods.
Practice
(1/5)
1. What is the main purpose of the Container Network Interface (CNI) in Kubernetes?
easy
A. To manage storage volumes for containers
B. To provide IP addresses and networking for pods
C. To schedule pods on nodes
D. To monitor container resource usage
Solution
Step 1: Understand CNI role in Kubernetes
CNI is responsible for setting up networking so pods can communicate.
Step 2: Identify correct function
Providing IP addresses and network connectivity to pods is the core function of CNI.
Final Answer:
To provide IP addresses and networking for pods -> Option B
Quick Check:
CNI = Pod networking [OK]
Hint: CNI is about pod networking, not storage or scheduling [OK]
Common Mistakes:
Confusing CNI with storage management
Thinking CNI schedules pods
Assuming CNI monitors resources
2. Which of the following is a valid CNI configuration file format?
easy
A. XML
B. CSV
C. INI
D. JSON
Solution
Step 1: Recall CNI config formats
CNI plugins use JSON or YAML files to configure networking.
Step 2: Identify valid format
JSON is the standard format for CNI configuration files.
Final Answer:
JSON -> Option D
Quick Check:
CNI config = JSON [OK]
Hint: CNI configs are JSON or YAML, not XML or INI [OK]