Sobes.tech
Junior

Have you worked with kubeadm?

sobes.tech AI

Answer from AI

Yes.

Kubeadm is a tool that helps quickly and easily set up a minimal functional Kubernetes cluster on your machine. It automates key steps in cluster setup, such as initializing the control plane and joining worker nodes.

Main steps when using kubeadm:

  1. Preliminary preparation: Installing Docker or another container runtime, kubelet, kubectl, and kubeadm on all cluster nodes. Configuring the network bridge and disabling swap.
  2. Control plane initialization: Running the command kubeadm init on the node that will become the master node. This creates necessary certificates, an etcd cluster, and sets up control plane components (API server, Controller manager, Scheduler, Kube-proxy) as static pods or services.
  3. Deploying a network plugin (CNI): After initializing the master node, a network plugin (e.g., Calico, Flannel, Weave Net) must be installed to enable communication between pods.
    # Example command to install Calico
    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    
  4. Joining worker nodes: On each worker node, run the kubeadm join command provided by kubeadm init. This command connects the worker node to the cluster, installing kubelet and kube-proxy and registering the node with the control plane.
    # Example join command
    kubeadm join <master_node_ip>:<apiserver_port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
    
  5. Access configuration: Copy the kubeconfig from the master node to enable working with the cluster via kubectl.
    # Example commands to set up kubectl
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    

Kubeadm simplifies the deployment process but is not a full lifecycle management tool (updating, scaling, monitoring). For production environments, more advanced tools or Kubernetes distributions are often used. Nevertheless, kubeadm is a great starting point for learning and creating test clusters.