Distribuera Kubernetes med Kubeadm på CentOS 7

Översikt

Den här artikeln är tänkt att hjälpa dig att få igång ett Kubernetes-kluster med kubeadm på nolltid. Den här guiden kommer att distribuera två servrar, en master och en arbetare, men du kan distribuera så många servrar du vill.

Vad är kubeadm?

Kubeadm är ett verktyg utvecklat av Kubernetes som låter dig få ett minimum av livskraftiga kluster igång genom att följa bästa praxis. Det kommer bara att starta upp ditt kluster, inte tillhandahållande av maskiner. Saker som tillägg, Kubernetes instrumentpanel, övervakningslösningar och så vidare är inget kubeadm kommer att göra för dig.

Förutsättningar

Det finns några krav för de servrar vi kommer att distribuera. En eller flera maskiner som kör ett deb/rpm-kompatibelt OS. Vi kommer att använda CentOS.

  • 2 GB eller mer RAM per maskin
  • 2 processorer eller fler på mastern

Full nätverksanslutning mellan alla maskiner i klustret

De två servrarna som används i den här guiden är följande: - 1 CPU 2GB RAM med CentOS 7 (arbetarnod) - 2 CPU 4GB RAM med CentOS 7 (Masternod)

Med denna mängd RAM-minne på båda servrarna kommer Kubernetes att ha gott om utrymme att andas.

Konfigurera arbetare och master

Här är stegen vi måste ta på både huvud- och arbetarnoden:

  • Mums uppdatering och paket
  • Installera docker
  • Inaktivera selinux
  • Inaktivera swap
  • Inaktivera brandvägg
  • Uppdatera IPTables
  • Installera kubelet/kubeadm/kubectl

Installerar Docker

Vi kommer att använda versionen 1.14av Kubernetes i denna handledning. För den här versionen rekommenderar Kubernetes att köra Docker-versionen 18.06.2. Se till att kontrollera den rekommenderade Docker-versionen för din version av Kuberenetes

Vi kommer att lägga till Docker-förrådet till yum och specifikt installera 18.06.2. När Docker är installerat måste vi konfigurera docker-demonen till de inställningar som rekommenderas av 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

Inaktivera SELinux

Eftersom vi använder CentOS måste vi inaktivera SELinux. Detta är nödvändigt för att ge behållare åtkomst till värdfilsystemet.

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

Inaktivera Swap

Swap måste inaktiveras för att kubelet ska fungera korrekt.

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

Inaktivera brandvägg

Kubernetes använder IPTables för att hantera inkommande och utgående trafik - så för att undvika problem inaktiverar vi brandvägg.

systemctl disable firewalld
systemctl stop firewalld

Uppdatera IPTables

Kubernetes rekommenderar att vi ser till att den net.bridge.bridge-nf-call-iptablesär inställd på 1. Detta beror på problem där REHL/CentOS 7 har haft problem med att trafiken omdirigeras felaktigt på grund av att iptables förbigår.

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

Installera kubelet/kubeadm/kubectl

Vi kommer att behöva lägga till kubernetes repo till yum. När vi väl gör det behöver vi bara köra installationskommandot och aktivera 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

Nu har vi konfigurerat både vår huvud- och arbetarnod. Vi kan nu initiera vår huvudnod och ansluta våra arbetarnoder till mastern!

Notera Om du vill lägga till fler arbetarnoder måste processen ovan också göras på alla dessa noder.

Master Node setup

Vi vill initiera vår masternod genom att köra följande kommando. Du vill byta ut din masternods IP-adress i kommandot nedan. Dessutom skickar vi in ​​pod-network-cidr för att göra det lättare för oss senare när vi installerar Flannel-nätverksöverlägget.

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

Detta kan ta ett tag att slutföra men när det är klart kommer du att se något liknande i slutet av utdata som följande.

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

Det här kommandot är vad dina arbetarnoder behöver utföra för att gå med i klustret, så notera det.

Nästa upp är Flanell. Flanell är det som tillåter pod till pod kommunikation. Det finns olika andra typer av nätverksöverlägg som du kan installera men för enkelhetens skull kommer denna guide att använda Flannel.

Kopiera kube/configfilen till din $Homeså att du kan utföra kubectlkommandon.

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

Ett sista steg på masternoden är att installera Flannel. Kör följande kommando.

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

Med den här konfigurationen kopierad kommer du att kunna köra kubectl get csoch få ett svar.

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

Din huvudnod är inställd och redo att gå. Till arbetarnoden!

Arbetarnod

Vid denna tidpunkt är det inget extra arbete som är nödvändigt på arbetarnoden. Allt vi behöver göra är att köra kubeadm joinkommandot som vi fick från vår kubeadm initutdata.

Om du av en slump tappade kubeadm join-kommandot kan du generera ett annat på masternoden genom att köra kubeadm token create --print-join-command

När du väl kör kommandot kubeadm join, om du kör kubectl get nodespå master kommer du att se en liknande utdata som följande.

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

Avslutar

Precis så har du stövlat ett Kubernetes-kluster med kubeadm. Du kan också göra detta med privata nätverk. Vultr, liksom andra molnleverantörer, tillåter privata nätverk. Dessutom, om du vill köra kubectl-kommandon från din lokala dator mot ditt kluster, kan du åstadkomma detta genom att ha kubectl installerat lokalt och dra ner .kube/configfilen från klustret till din lokala dator i $HOME/.kube/config.

Förhoppningsvis hjälper den här guiden dig att korsa kubeadm och få dig att spela med kubernetes på nolltid!

Användbara länkar:

Lämna en kommentar

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.

DDOS-attacker: En kort översikt

DDOS-attacker: En kort översikt

Är du också ett offer för DDOS-attacker och förvirrad över de förebyggande metoderna? Läs den här artikeln för att lösa dina frågor.

Har du någonsin undrat hur hackare tjänar pengar?

Har du någonsin undrat hur hackare tjänar pengar?

Du kanske har hört att hackare tjänar mycket pengar, men har du någonsin undrat hur de tjänar den typen av pengar? låt oss diskutera.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Vill du se revolutionerande uppfinningar av Google och hur dessa uppfinningar förändrade livet för varje människa idag? Läs sedan till bloggen för att se uppfinningar av Google.

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Konceptet med att självkörande bilar ska ut på vägarna med hjälp av artificiell intelligens är en dröm vi har ett tag nu. Men trots flera löften finns de ingenstans att se. Läs den här bloggen för att lära dig mer...

Technological Singularity: A Distant Future of Human Civilization?

Technological Singularity: A Distant Future of Human Civilization?

När vetenskapen utvecklas i snabb takt och tar över en hel del av våra ansträngningar, ökar också riskerna för att utsätta oss för en oförklarlig singularitet. Läs, vad singularitet kan betyda för oss.

Funktioner för Big Data Reference Architecture Layers

Funktioner för Big Data Reference Architecture Layers

Läs bloggen för att känna till olika lager i Big Data Architecture och deras funktionaliteter på enklaste sätt.

Utveckling av datalagring – Infographic

Utveckling av datalagring – Infographic

Lagringsmetoderna för data har utvecklats kan vara sedan födelsen av data. Den här bloggen tar upp utvecklingen av datalagring på basis av en infografik.

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

I denna digitala värld har smarta hemenheter blivit en avgörande del av livet. Här är några fantastiska fördelar med smarta hemenheter om hur de gör vårt liv värt att leva och enklare.

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

Nyligen släppte Apple macOS Catalina 10.15.4, en tilläggsuppdatering för att åtgärda problem, men det verkar som om uppdateringen orsakar fler problem som leder till att mac-datorer blir murade. Läs den här artikeln för att lära dig mer