Deploy Kubernetes With Kubeadm on CentOS 7

Overview

This article is meant to help you get a Kubernetes cluster up and running with kubeadm in no time. This guide will be deploying two servers, one master and one worker, however you can deploy as many servers as you would like.

What is kubeadm?

Kubeadm is a tool developed by Kubernetes which allows you to get a minimum viable cluster up and running by following best practices. It will only bootstrap your cluster, not provision machines. Things such as addons, the Kubernetes dashboard, monitoring solutions and so on are not something kubeadm will do for you.

Prerequisites

There are a few requirements for the servers we will deploy. One or more machines running a deb/rpm-compatible OS. We will be using CentOS.

  • 2 GB or more of RAM per machine
  • 2 CPUs or more on the master

Full network connectivity among all machines in the cluster

The two servers deployed in this guide are the following: - 1 CPU 2GB RAM with CentOS 7 (Worker node) - 2 CPU 4GB RAM with CentOS 7 (Master node)

With this amount of RAM on both servers, Kubernetes will have plenty of room to breathe.

Configuring the worker and master

Here are the steps we will have to take on both the master and worker node:

  • Yum update & packages
  • Install docker
  • Disable selinux
  • Disable swap
  • Disable Firewall
  • Update IPTables
  • Install kubelet/kubeadm/kubectl

Installing Docker

We'll be using version 1.14 of Kubernetes in this tutorial. For this version, Kubernetes recommends running Docker version 18.06.2. Be sure to check the recommended Docker version for your version of Kuberenetes

We will be adding the Docker repository to yum and specifically installing 18.06.2. Once Docker is installed, we'll need to configure the docker daemon to the settings recommended by Kubernetes.

###Add yum-utils, if not installed already
yum install yum-utils

###Add Docker repository.
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

###Install Docker CE.
yum update && yum install docker-ce-18.06.2.ce

###Create /etc/docker directory.
mkdir /etc/docker

###Setup daemon.
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
EOF

mkdir -p /etc/systemd/system/docker.service.d

###Restart Docker
systemctl daemon-reload
systemctl enable docker.service
systemctl restart docker

Disable SELinux

Since we are using CentOS we need to disable SELinux. This is necessary to allow containers access to the host filesystem.

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disable/' /etc/selinux/config

Disable Swap

Swap needs to be disabled to allow kubelet to work properly.

sed -i '/swap/d' /etc/fstab
swapoff -a

Disable Firewall

Kubernetes uses IPTables to handle inbound and outbound traffic - so to avoid any issues we disable firewalld.

systemctl disable firewalld
systemctl stop firewalld

Update IPTables

Kubernetes recommends that we ensure net.bridge.bridge-nf-call-iptables is set to 1. This is due to issues where REHL/CentOS 7 has had issues with traffic being rerouted incorrectly due to bypassing iptables.

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

Install kubelet/kubeadm/kubectl

We will need to add the kubernetes repo to yum. Once we do that we just need to run the install command and enable kubelet.

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
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/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kube*
EOF

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet

Now we have fully configured both our master and worker node. We can now initialize our master node and join our worker nodes to the master!

Note If you wanted to add more worker nodes the process above would have to be done on all of those nodes as well.

Master Node setup

We want to initialize our master node by running the following command. You'll want to substitute your master node's IP address in the command below. Additionally, we'll pass in the pod-network-cidr to make it easier for us later when we install the Flannel network overlay.

kubeadm init --apiserver-advertise-address=YOUR_IP_HERE --pod-network-cidr=10.244.0.0/16

This may take a while to complete but once it is completed you will see something similar at the end of the output like the following.

kubeadm join YOUR_IP:6443 --token 4if8c2.pbqh82zxcg8rswui \
--discovery-token-ca-cert-hash sha256:a0b2bb2b31bf7b06bb5058540f02724240fc9447b0e457e049e59d2ce19fcba2

This command is what your worker nodes need to execute to join the cluster, so take note of it.

Next up is Flannel. Flannel is what allows pod to pod communication. There are various other types of network overlays that you can install but for simplicity this guide will use Flannel.

Copy the kube/config file over to your $Home so you can execute kubectl commands.

mkdir $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config

One final step on the master node is to install Flannel. Run the following command.

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

With this config copied over you will be able to run kubectl get cs and get a response.

NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok
controller-manager   Healthy   ok
etcd-0               Healthy   {"health":"true"}

Your master node is set and ready to go. Onto the worker node!

Worker Node

At this point there is no extra work that is necessary on the worker node. All we need to do is run the kubeadm join command that we got from our kubeadm init output.

If by some chance you misplaced the kubeadm join command you can generate another one on the master node by running kubeadm token create --print-join-command

Once you run the kubeadm join command, if you run kubectl get nodes on master you will see a similar output to the following.

NAME          STATUS   ROLES    AGE    VERSION
k8-master   Ready    master   107m   v1.14.2
k8-worker   Ready    <none>   45m    v1.14.2

Wrapping up

Just like that you have bootstrapped a Kubernetes cluster using kubeadm. You could also do this with private networks. Vultr, as well as other cloud providers, allow for private networks. Also, if you want to execute kubectl commands from your local machine against your cluster, you can accomplish this by having kubectl installed locally and pull down the .kube/config file from the cluster to your local machine in $HOME/.kube/config.

Hopefully this guide helps you traverse kubeadm and gets you playing with kubernetes in no time!

Useful links:


Instaloni Plesk në CentOS 7

Instaloni Plesk në CentOS 7

Përdorimi i një sistemi të ndryshëm? Plesk është një panel kontrolli i pronarit të hostit në internet që lejon përdoruesit të administrojnë faqet e tyre të internetit personale dhe/ose të klientëve, bazat e të dhënave

Si të instaloni Squid Proxy në CentOS

Si të instaloni Squid Proxy në CentOS

Squid është një program i popullarizuar, falas Linux që ju lejon të krijoni një përfaqësues në ueb përcjellës. Në këtë udhëzues, do të shihni se si të instaloni Squid në CentOS për t'ju kthyer

Si të instaloni Lighttpd (LLMP Stack) në CentOS 6

Si të instaloni Lighttpd (LLMP Stack) në CentOS 6

Hyrje Lighttpd është një fork i Apache që synon të jetë shumë më pak intensiv me burime. Është i lehtë, prandaj emri i tij, dhe është mjaft i thjeshtë për t'u përdorur. Instaloni

Konfigurimi i rrjeteve statike dhe IPv6 në CentOS 7

Konfigurimi i rrjeteve statike dhe IPv6 në CentOS 7

VULTR kohët e fundit ka bërë ndryshime në fund të tyre dhe gjithçka duhet të funksionojë mirë tani me NetworkManager të aktivizuar. Nëse dëshironi të çaktivizoni

Modifikimi i Icinga2 për të përdorur Modelin Master/Klient në CentOS 6 ose CentOS 7

Modifikimi i Icinga2 për të përdorur Modelin Master/Klient në CentOS 6 ose CentOS 7

Icinga2 është një sistem i fuqishëm monitorimi dhe kur përdoret në një model master-klient, ai mund të zëvendësojë nevojën për kontrolle monitorimi të bazuara në NRPE. Master-klien

Si të instaloni Apache Cassandra 3.11.x në CentOS 7

Si të instaloni Apache Cassandra 3.11.x në CentOS 7

Përdorimi i një sistemi të ndryshëm? Apache Cassandra është një sistem i menaxhimit të bazës së të dhënave NoSQL falas dhe me burim të hapur që është krijuar për të ofruar shkallëzim, të lartë

Si të instaloni Microweber në CentOS 7

Si të instaloni Microweber në CentOS 7

Përdorimi i një sistemi të ndryshëm? Microweber është një CMS me burim të hapur drag and drop dhe dyqan online. Kodi burimor Microweber është pritur në GitHub. Ky udhëzues do t'ju tregojë

Si të instaloni Mattermost 4.1 në CentOS 7

Si të instaloni Mattermost 4.1 në CentOS 7

Përdorimi i një sistemi të ndryshëm? Mattermost është një alternativë me burim të hapur, të vetë-strehuar për shërbimin e mesazheve Slack SAAS. Me fjalë të tjera, me Mattermost, ju rreth

Le të enkriptojmë në Plesk

Le të enkriptojmë në Plesk

Paneli i kontrollit Plesk përmban një integrim shumë të bukur për Lets Encrypt. Lets Encrypt është një nga ofruesit e vetëm SSL që jep plotësisht certifikata

Lejon enkriptimin në cPanel

Lejon enkriptimin në cPanel

Lets Encrypt është një autoritet certifikimi i dedikuar për të ofruar certifikata SSL pa pagesë. cPanel ka ndërtuar një integrim të pastër në mënyrë që ju dhe klienti juaj

Si të instaloni Concrete5 në CentOS 7

Si të instaloni Concrete5 në CentOS 7

Përdorimi i një sistemi të ndryshëm? Concrete5 është një CMS me burim të hapur që ofron shumë veçori dalluese dhe të dobishme për të ndihmuar redaktorët në prodhimin e përmbajtjes me lehtësi dhe

How to Install Review Board on CentOS 7

How to Install Review Board on CentOS 7

Using a Different System? Review Board is a free and open source tool for reviewing source code, documentation, images and many more. It is web-based softwar

Konfiguro vërtetimin HTTP me Nginx në CentOS 7

Konfiguro vërtetimin HTTP me Nginx në CentOS 7

Në këtë udhëzues, do të mësoni se si të konfiguroni vërtetimin HTTP për një server ueb Nginx që funksionon në CentOS 7. Kërkesat Për të filluar, do t'ju duhet

Si të instaloni YOURLS në CentOS 7

Si të instaloni YOURLS në CentOS 7

YOURLS (Shkurtësi juaj i URL-së) është një aplikacion për shkurtimin e URL-ve me burim të hapur dhe analitikë të të dhënave. Në këtë artikull, ne do të mbulojmë procesin e instalimit

Si të instaloni dhe konfiguroni ArangoDB në CentOS 7

Si të instaloni dhe konfiguroni ArangoDB në CentOS 7

Përdorimi i një sistemi të ndryshëm? Hyrje ArangoDB është një bazë të dhënash NoSQL me burim të hapur me një model fleksibël të dhënash për dokumente, grafikë dhe vlera-kyçe. Eshte

Përdorimi i Etckeeper për kontrollin e versionit të /etc

Përdorimi i Etckeeper për kontrollin e versionit të /etc

Hyrje Drejtoria /etc/ luan një rol kritik në mënyrën se si funksionon një sistem Linux. Arsyeja për këtë është sepse pothuajse çdo konfigurim i sistemit

Pse duhet të përdorni SSHFS? Si të montoni një sistem skedari në distancë me SSHFS në CentOS 6

Pse duhet të përdorni SSHFS? Si të montoni një sistem skedari në distancë me SSHFS në CentOS 6

Shumë administratorë të sistemit menaxhojnë sasi të mëdha serverash. Kur skedarët duhet të aksesohen nëpër serverë të ndryshëm, hyni në secilin individualisht rreth

Vendosja e një serveri Half Life 2 në CentOS 6

Vendosja e një serveri Half Life 2 në CentOS 6

Ky tutorial do të mbulojë procesin e instalimit të një serveri lojërash Half Life 2 në Sistemin CentOS 6. Hapi 1: Instalimi i parakushteve Për të vendosur ou

Si të instaloni Laravel GitScrum në CentOS 7

Si të instaloni Laravel GitScrum në CentOS 7

Laravel GitScrum, ose GitScrum është një mjet produktiviteti me burim të hapur i krijuar për të ndihmuar ekipet e zhvillimit të zbatojnë metodologjinë Scrum në një mënyrë të ngjashme.

Si të instaloni PowerDNS në CentOS

Si të instaloni PowerDNS në CentOS

Hyrje Në këtë tutorial të Vultr, do të mësoni se si të instaloni PowerDNS. PowerDNS është një program për ekzekutimin e serverëve tuaj të emrave. Është shumë e dobishme kur

Ngritja e makinave: Aplikimet në botën reale të AI

Ngritja e makinave: Aplikimet në botën reale të AI

Inteligjenca Artificiale nuk është në të ardhmen, është këtu në të tashmen Në këtë blog Lexoni se si aplikacionet e inteligjencës artificiale kanë ndikuar në sektorë të ndryshëm.

Sulmet DDOS: Një përmbledhje e shkurtër

Sulmet DDOS: Një përmbledhje e shkurtër

A jeni edhe ju viktimë e Sulmeve DDOS dhe jeni konfuz në lidhje me metodat e parandalimit? Lexoni këtë artikull për të zgjidhur pyetjet tuaja.

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

Ju mund të keni dëgjuar se hakerët fitojnë shumë para, por a keni menduar ndonjëherë se si i fitojnë ato para? Le te diskutojme.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Dëshironi të shihni shpikjet revolucionare nga Google dhe se si këto shpikje ndryshuan jetën e çdo njeriu sot? Më pas lexoni në blog për të parë shpikjet nga Google.

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

Koncepti i makinave vetë-drejtuese për të dalë në rrugë me ndihmën e inteligjencës artificiale është një ëndërr që e kemi prej kohësh. Por, pavarësisht nga disa premtime, ato nuk shihen askund. Lexoni këtë blog për të mësuar më shumë…

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Ndërsa Shkenca evoluon me një ritëm të shpejtë, duke marrë përsipër shumë nga përpjekjet tona, rriten edhe rreziqet për t'iu nënshtruar një Singulariteti të pashpjegueshëm. Lexoni, çfarë mund të thotë singulariteti për ne.

Evolucioni i ruajtjes së të dhënave - Infografik

Evolucioni i ruajtjes së të dhënave - Infografik

Metodat e ruajtjes së të dhënave kanë evoluar mund të jenë që nga lindja e të dhënave. Ky blog mbulon evolucionin e ruajtjes së të dhënave në bazë të një infografike.

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Lexoni blogun për të njohur shtresat e ndryshme në arkitekturën e të dhënave të mëdha dhe funksionalitetet e tyre në mënyrën më të thjeshtë.

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

Në këtë botë të drejtuar nga dixhitali, pajisjet inteligjente të shtëpisë janë bërë një pjesë thelbësore e jetës. Këtu janë disa përfitime të mahnitshme të pajisjeve shtëpiake inteligjente se si ato e bëjnë jetën tonë të vlefshme dhe më të thjeshtë.

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Së fundmi Apple lëshoi ​​macOS Catalina 10.15.4 një përditësim shtesë për të rregulluar problemet, por duket se përditësimi po shkakton më shumë probleme që çojnë në bricking të makinerive mac. Lexoni këtë artikull për të mësuar më shumë