Kubernetes tutorial: How to install a cluster on Ubuntu with kubeadm?

Sdílet
Vložit
  • čas přidán 20. 08. 2024
  • Start learning Kubernetes with my useful tutorial on installing a cluster on Ubuntu with kubeadm. In this step-by-step guide, I'll walk you through the process of setting up a Kubernetes cluster on Ubuntu, leveraging the simplicity and efficiency of kubeadm. Whether you're a beginner eager to dive into container orchestration or an experienced user looking to expand your skills, this tutorial provides clear instructions and practical demonstrations to help you get your Kubernetes cluster up.
    Discover the ease of deploying a Kubernetes cluster on Ubuntu with kubeadm in my in-depth video tutorial. From installing the necessary dependencies to initializing the cluster and joining nodes, I cover every aspect of the setup process. Don't miss out on this opportunity to level up your Kubernetes expertise!
  • Věda a technologie

Komentáře • 49

  • @osamaabou-el-gibeen9704
    @osamaabou-el-gibeen9704 Před 2 měsíci +1

    man that cgroup driver saved my week. thanks a million

  • @shang-mokai5428
    @shang-mokai5428 Před měsícem

    Thanks You Very Much !!! working well for me

  • @timetraveller2045
    @timetraveller2045 Před 2 měsíci

    Many Thanks! Very usefull video!

    • @IndianSumaira
      @IndianSumaira Před 16 dny

      did it worked for you ? I am facing some trouble when i try to init cluster, says its: st:10248/healthz": dial tcp 127.0.0.1:10248: connect: connection refused.
      Unfortunately, an error has occurred:
      timed out waiting for the condition
      This error is likely caused by:
      - The kubelet is not running
      - The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)
      If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands:
      - 'systemctl status kubelet'
      - 'journalctl -xeu kubelet'
      Additionally, a control plane component may have crashed or exited when started by the container runtime.
      To troubleshoot, list all containers using your preferred container runtimes CLI.
      Here is one example how you may list all running Kubernetes containers by using crictl:
      - 'crictl --runtime-endpoint unix:///var/run/containerd/containerd.sock ps -a | grep kube | grep -v pause'
      Once you have found the failing container, you can inspect its logs with:
      - 'crictl --runtime-endpoint unix:///var/run/containerd/containerd.sock logs CONTAINERID'
      error execution phase wait-control-plane: couldn't initialize a Kubernetes cluster
      To see the stack trace of this error execute with --v=5 or higher

  • @knvssandeepbolisetti5008
    @knvssandeepbolisetti5008 Před 3 měsíci +1

    Thank You Very Much.

  • @user-wi6nl8zl3b
    @user-wi6nl8zl3b Před 3 měsíci +1

    Hi, what will be the command at 3:55 if i am using docker instead of containerd

    • @LearnDevOpswithSerge
      @LearnDevOpswithSerge  Před 3 měsíci

      Hi, Kubernetes has not supported Docker since version 1.24. Here is more information about it: kubernetes.io/blog/2022/02/17/dockershim-faq/

  • @ashanp1234
    @ashanp1234 Před 2 měsíci +1

    Thank you very much for this video. Can you share the manifest file you created in 9:09 ?

    • @LearnDevOpswithSerge
      @LearnDevOpswithSerge  Před 2 měsíci +2

      Hi, here it is:
      apiVersion: apps/v1
      kind: Deployment
      metadata:
      name: nginx-deployment
      labels:
      app: nginx
      spec:
      replicas: 3
      selector:
      matchLabels:
      app: nginx
      template:
      metadata:
      labels:
      app: nginx
      spec:
      containers:
      - name: nginx
      image: nginx:1.14.2
      ports:
      - containerPort: 80
      ---
      apiVersion: v1
      kind: Service
      metadata:
      name: nginx
      spec:
      type: ClusterIP
      ports:
      - targetPort: 80
      port: 80
      selector:
      app: nginx

  • @ramankhanna9526
    @ramankhanna9526 Před 3 měsíci +2

    thankyou

  • @hamzaerrahma9858
    @hamzaerrahma9858 Před měsícem

    Thank you for this video, I initialized my cluster and everything was working perfectly. However, after I rebooted my machines, the kubectl get nodes command stopped working. When I run sudo kubectl get nodes, I get the following error message:The connection to the server 192.168.56.101:6443 was refused - did you specify the right host or port?

    • @LearnDevOpswithSerge
      @LearnDevOpswithSerge  Před měsícem

      Hi, have you disabled swap?
      stackoverflow.com/questions/56737867/the-connection-to-the-server-x-x-x-6443-was-refused-did-you-specify-the-right
      Try to execute these commands on the master node:
      1. sudo -i
      2. swapoff -a

    • @hamzaerrahma9858
      @hamzaerrahma9858 Před 29 dny

      @@LearnDevOpswithSerge Thanks You Very Much

  • @sarvamsahitya
    @sarvamsahitya Před měsícem

    Thanks. Did try to install the dashboard. Please share if you have done it already

  • @satishbarnana2267
    @satishbarnana2267 Před 15 dny

    how can we configure 3 vms in single machine and can we run master and worker nodes on same machine?

    • @LearnDevOpswithSerge
      @LearnDevOpswithSerge  Před 15 dny

      Hi,
      I use VirtualBox with Vagrant to create VMs. In Linux, you can use KVM or VirtualBox too.
      Yes, you can use master for your workloads. To do it, remove taints on the master/control plane node.

  • @PratapKumar-sm9if
    @PratapKumar-sm9if Před měsícem

    Hi Serge,
    I have followed your tutorial, However, Kube Proxy status shows a Crashloop error
    Any suggestion Please ?
    Thanks

    • @LearnDevOpswithSerge
      @LearnDevOpswithSerge  Před měsícem

      Hi, I guess you mean Flannel when talking about kube proxy.
      1. Check logs of the crashed container: "kubectl -n logs -p "
      2. Check events of the pod in the 'CrashLoopBackOff' state: "kubectl -n describe pod "
      3. Analyze the information from the 1st and 2d list items.

  • @suryagowda3663
    @suryagowda3663 Před 3 dny

    What is kubeadm? What is the use? When we should use?

  • @badex3301
    @badex3301 Před 3 měsíci

    Thanks for the informative vid. Would be nice to have a google doc stating the command at 3:55

    • @LearnDevOpswithSerge
      @LearnDevOpswithSerge  Před 3 měsíci +5

      Hi,
      containerd config default | sed 's/SystemdCgroup = false/SystemdCgroup = true/' | sed 's/sandbox_image = "registry.k8s.io\/pause:3.6"/sandbox_image = "registry.k8s.io\/pause:3.9"/' | sudo tee /etc/containerd/config.toml

    • @badex3301
      @badex3301 Před 3 měsíci +2

      @@LearnDevOpswithSerge thank you! Subscribed

  • @suryagowda3663
    @suryagowda3663 Před 3 dny

    Hi , i want to learn step by step about kubernetes with syllabus. Can u share here...

  • @sathvikbandaru3985
    @sathvikbandaru3985 Před měsícem

    Thanks you

    • @sathvikbandaru3985
      @sathvikbandaru3985 Před měsícem

      for me Culster set up is ready because of you but little issue my pods are not running properly when im using flannel but when i using calico now my pods are running

  • @sumanth6114
    @sumanth6114 Před 19 dny

    dude at 3:49 its big command where can i get that?

    • @LearnDevOpswithSerge
      @LearnDevOpswithSerge  Před 19 dny

      Hi,
      containerd config default | sed 's/SystemdCgroup = false/SystemdCgroup = true/' | sed 's/sandbox_image = "registry.k8s.io\/pause:3.6"/sandbox_image = "registry.k8s.io\/pause:3.9"/' | sudo tee /etc/containerd/config.toml

  • @laurentsun4707
    @laurentsun4707 Před měsícem

    Hello, for the command at 5:35 how to you find the --apiserver-advertise-address

    • @LearnDevOpswithSerge
      @LearnDevOpswithSerge  Před měsícem +1

      Hi, it is an IP of your master node. You can find out it by the command: "ip address show" or shortly "ip a".
      ```
      vagrant@master:~$ ip address show | grep 192.168.1.50
      inet 192.168.1.50/24 brd 192.168.1.255 scope global enp0s8
      ```

    • @laurentsun4707
      @laurentsun4707 Před měsícem

      @@LearnDevOpswithSerge Thank you! Do you have a video to show how to setup the kubernetes dashboard?

    • @LearnDevOpswithSerge
      @LearnDevOpswithSerge  Před měsícem +1

      I haven't done it yet. Thanks for the idea!

    • @user-oz2of8yq7z
      @user-oz2of8yq7z Před 14 dny

      @@LearnDevOpswithSerge also, the --pod-network-cidr, where did you find that?

    • @LearnDevOpswithSerge
      @LearnDevOpswithSerge  Před 13 dny

      @@user-oz2of8yq7z Hi, 2d item kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#initializing-your-control-plane-node

  • @youtea7324
    @youtea7324 Před měsícem

    at 03:47 you prepared a command, from where do i get it.

    • @LearnDevOpswithSerge
      @LearnDevOpswithSerge  Před měsícem

      Hi,
      containerd config default | sed 's/SystemdCgroup = false/SystemdCgroup = true/' | sed 's/sandbox_image = "registry.k8s.io\/pause:3.6"/sandbox_image = "registry.k8s.io\/pause:3.9"/' | sudo tee /etc/containerd/config.toml

    • @christopherobinna2140
      @christopherobinna2140 Před 29 dny

      @@LearnDevOpswithSerge how did you generate this command. any documentation for it. up till this stage you have explained everything in detail but just copied and pasted this out of nowhere. the tutorial is very great!

    • @LearnDevOpswithSerge
      @LearnDevOpswithSerge  Před 27 dny

      ​ @christopherobinna2140 Hi,
      1. SystemdCgroup = true # The documentaion about it kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd-systemd
      2. The issue with sandbox image: github.com/cri-o/cri-o/issues/6985
      discuss.kubernetes.io/t/can-not-install-kubernetes-cluster-with-kubeadm/24079
      ----
      Note that the version of the sandbox image in each Containerd version can be changed so check it. For example, in my video, the version is 3.6 and now it is 3.8.
      The message while installing Kubernetes:
      W0725 06:32:35.829024 14158 checks.go:844] detected that the sandbox image "registry.k8s.io/pause:3.8" of the container runtime is inconsistent with that used by kubeadm.It is recommended to use "registry.k8s.io/pause:3.9" as the CRI sandbox image.

  • @magicalvibez2037
    @magicalvibez2037 Před měsícem

    how did u created the master and worker nodes?

  • @sandeepthapa9478
    @sandeepthapa9478 Před 15 dny

    containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
    $ sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
    from where did u get this command in k8s documentation

    • @LearnDevOpswithSerge
      @LearnDevOpswithSerge  Před 15 dny

      Hi,
      1. SystemdCgroup = true # The documentaion about it kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd-systemd
      2. The issue with sandbox image:
      github.com/cri-o/cri-o/issues/6985
      discuss.kubernetes.io/t/can-not-install-kubernetes-cluster-with-kubeadm/24079
      ----
      Note that the version of the sandbox image in each Containerd version can be changed so check it. For example, in my video, the version is 3.6 and now it is 3.8.
      The message while installing Kubernetes:
      W0725 06:32:35.829024 14158 checks.go:844] detected that the sandbox image "registry.k8s.io/pause:3.8" of the container runtime is inconsistent with that used by kubeadm.It is recommended to use "registry.k8s.io/pause:3.9" as the CRI sandbox image.