Kubernetes is an open-source container orchestration system that has revolutionized the way modern applications are deployed and managed. One of the critical aspects of running Kubernetes is the networking layer, which enables communication between different containers and services. Calico is a popular networking solution that is designed to work seamlessly with Kubernetes, providing a scalable, secure, and high-performance networking infrastructure. In this article, we will guide you through the steps to run Kubernetes with Calico.
- A Kubernetes cluster up and running
- Access to a terminal or command prompt
- Kubectl CLI installed
Step 1: Install Calico
To install Calico, you can use the Kubernetes manifest provided by the Calico project. The manifest installs the Calico components, such as the Calico CNI plugin, the Calico node daemon, and the Calico control plane.
To install Calico, run the following command:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
Step 2: Verify the installation
Once the Calico components are installed, you can verify the installation by checking if the Calico pods are running. You can do this by running the following command:
kubectl get pods -n kube-system -l k8s-app=calico-node
This should return a list of Calico nodes running in your cluster.
Step 3: Create a Kubernetes network policy with Calico
Calico provides advanced network policy features that enable you to define fine-grained rules for network traffic. To create a Kubernetes network policy with Calico, you can use the Calico policy API or the Kubernetes network policy API.
For example, you can create a network policy that allows traffic to a specific Kubernetes service by running the following command:
cat << EOF | kubectl apply -f -
selector: app == "nginx"
- action: Allow
selector: app == "frontend"
This creates a network policy that allows traffic to the "nginx" app from pods with the label "app=frontend" on port 80.
Step 4: Test the network policy
To test the network policy, you can create two pods in the same namespace, one running the "nginx" app and the other running the "frontend" app. Then, you can try to access the nginx app from the frontend app.
To create the pods, you can run the following commands:
kubectl run nginx --image=nginx --labels=app=nginx --expose --port=80
kubectl run frontend --image=nginx --labels=app=frontend --command -- /bin/sh -c "while true; do wget -qO- nginx; done"
This creates two pods, one running the nginx app and the other running the frontend app.
To test the network policy, you can try to access the nginx app from the frontend app by running the following command:
kubectl exec frontend -- wget -qO- nginx
If the network policy is working correctly, you should be able to access the nginx app from the frontend app.
Running Kubernetes with Calico provides a powerful and flexible networking infrastructure for your containerized applications. By following the steps outlined in this article, you can install Calico, create network policies, and test the networking infrastructure in your Kubernetes cluster.
Related Searches and Questions asked:
That's it for this post. Keep practicing and have fun. Leave your comments if any.