Welcome to the Linux Foundation Forum!

Got stuck on Chapter 3 Installation and Configuration on Node

I got stuck when running the kubeadm and I believe I have followed the step by step instruction. Any feedback would be appriciated.

Operating System: CentOS 7.5
Oracle VM Virtual Box:

  • Bridge network, allow all promiscuous mode
  • 2 vCPU
  • Base memory 4096M
  • OS Disk 15G
  • DHCP with static IP 192.168.0.31, DNS Server 192.168.0.24

Chapter 3 Installation and Configuration on Node
Steps to reproduce on Node:
1. su - root
2. yum update && yum upgrade –y
3. yum install docker

  1. vi /etc/yum.repos.d/kubernetes.repo
    [Kubernetes_Repository]
    name=Kubernetes
    baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64/
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg https://packages.cloud.google.com/yum/doc/yum-key.gpg
  2. yum update
  3. yum install kubeadm kubelet kubectl –y

  4. wget https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
    wget https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml

  5. less calico.yaml

  6. systemctl enable docker.service

  7. systemctl enable kubelet.service
  8. systemctl stop firewalld
  9. swapoff –a
  10. kubeadm init --kubernetes-version 1.15.1 --pod-network-cidr 192.168.0.0/16 | tee kubeadm-init.out

Error Result:
[kubelet-check] Initial timeout of 40s passed.
Error execution phase wait-control-plane: couldn’t initialize a Kubernetes cluster
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 system-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, e.g. docker .
    Here is one example how you may list all Kubernetes containers running in docker:

  • ‘docker ps –a | grep kube | grep –v pause’
    Once you have found the failing container, you can inspect its logs with:

  • ‘docker logs CONTAINERID”

When checking kubelet.service, it says “node server031.whiteopen.com” not found but the kubelet is on active(running) state.

When running this command “kubectl –n kube-system get cm kubeadm-config –oyamlkubectl
The result was “The connection to the server localhost:8080 was refused – did you specify the right host or port?”

Comments

  • chrispokorni
    chrispokorni Posts: 2,155

    Hi,

    Please read carefully all the notes and instructions in the Overview section. They provide important VM sizing details for both cloud and local installations. From your notes above, it seems your master node may not be sized accordingly.

    When setting up Virtual Box VMs, these were the steps which worked for me (this was a while back, but I assume they still work the same):
    1. Create 2 VMs (inspect lab exercise for sizing details)
    2. Each VM with 1 NIC adapter - Bridged, Promiscuous mode: Allow All
    3. Install guest OS (Ubuntu 16.04 LTS in my case) and virtualbox guest additions
    4. Check ufw status, it should be inactive (or any firewall at the guest OS level)
    5. Disable the swap partition
    6. Verify VMs' full access to the internet and between each other via nc (netcat)
    7. Run the installation steps provided in the lab to install docker and kubernetes on each VMs

    The lab exercises in their current format require Kubernetes v1.14.1. Download v1.14.1 (instead of latest, as it seems you did based on your notes above) and bootstrap your master with kubeadm init --kubernetes-version 1.14.1 ... .

    The kubelet service error seems to be related to the DNS configuration of your virtual environment, which may be work-related?

    The kubectl command above seems a little off, maybe due to a copy/paste issue, but, kubectl will not run until you finish the master's setup process and fully configure kubectl with necessary endpoint, keys, certs to access the cluster control plane. By attempting to run it so early in the process will produce errors such as yours.

    I hope this helps.
    If all else fails, just spin up 2 Ubuntu 16 LTS VMs and follow the exercises as they are presented in the lab manual, or sign up for the free 1 year trial of GCP and spin up 2 GCE Ubuntu instances in the cloud.

    Regards,
    -Chris

  • neirkate
    neirkate Posts: 12
    edited August 2019

    Hello Chris,

    I see. So i need to use the Kubernetes v.1.14.1 instead of the latest?
    I was trying to set the first node and for the requirement it said that i was ready for the course when i ran the ready-for.sh.

    Firewall was already inactive and swap was off. But what do you mean by "The kubelet service error seems to be related to the
    DNS configuration of your virtual environment, which may be work-related?". Sorry, i am a beginner and does not have enough knowledge about network but the network can ping google or yahoo.
    May i know how to properly configure the network in my case? I want to use static IP which is 192.168.0.31 and my DNS server is 192.168.0.24.
    For the kubectl, i found that command from some forums that i have surfed to debug the errors.
    I will try the installation from the start, and using Kubernetes v.1.14.1.

    Thank you for the information and reply.
    If it still does not work, i will try using the images that prepared by LF or your recommendations.

    Regards,
    Neirkate

  • serewicz
    serewicz Posts: 1,000

    Hello,

    The ready-for.sh script is used to make sure the non-kubernetes software is present, it does not configure the cluster itself. If using an Ubuntu instance you should be able to follow the commands as written and find success. Please note the overview to the installation lab mentions other considerations such as opening all firewall ports.

    I encourage you to read the full lab document, not just the commands to type.

    Regards,

  • neirkate
    neirkate Posts: 12

    Hello,

    Yes, i know the ready-for.sh script is to check for the environment requirements only, and it was my first step after installing CentOS 7.
    I have read the lab documentations from Lab 1 - Lab 3 since i was doing it step by step. For the firewall, i chose to stop the firewalld service so there will be no firewall. I've configured the sudo for the system too.

    I'll try with Ubuntu then instead of CentOS 7.

    Thanks.

    Regards,
    Neirkate

Categories

Upcoming Training