Πώς να εγκαταστήσετε ένα σύμπλεγμα Kubernetes στο CentOS 7


Δωρεά από την Google στην κοινότητα Opensource, το Kubernetes έχει γίνει πλέον το εργαλείο διαχείρισης κοντέινερ της επιλογής. Μπορεί να διαχειριστεί και να ενορχηστρώσει όχι μόνο χρόνους εκτέλεσης docker αλλά και χρόνους εκτέλεσης Containers και Rkt.

Ένα τυπικό σύμπλεγμα Kubernetes θα έχει γενικά έναν κύριο κόμβο και αρκετούς κόμβους-εργάτες ή Minions. Στη συνέχεια, η διαχείριση των κόμβων-εργαζομένων γίνεται από τον κύριο κόμβο, διασφαλίζοντας έτσι ότι η διαχείριση του συμπλέγματος γίνεται από ένα κεντρικό σημείο.

Είναι επίσης σημαντικό να αναφέρουμε ότι μπορείτε επίσης να αναπτύξετε ένα σύμπλεγμα Kubernetes ενός κόμβου το οποίο γενικά συνιστάται για πολύ ελαφρούς, μη παραγωγικούς φόρτους εργασίας. Για αυτό, μπορείτε να χρησιμοποιήσετε το Minikube, το οποίο είναι ένα εργαλείο που εκτελεί ένα σύμπλεγμα Kubernetes ενός κόμβου σε μια εικονική μηχανή στον κόμβο σας.

Συνιστώμενη ανάγνωση: Πώς να εγκαταστήσετε ένα σύμπλεγμα Kubernetes στο CentOS 8

Για αυτό το σεμινάριο, θα διαβάσουμε μια εγκατάσταση συμπλέγματος Kubernetes πολλαπλών κόμβων στο CentOS 7 Linux. Αυτό το σεμινάριο βασίζεται στη γραμμή εντολών, επομένως θα χρειαστείτε πρόσβαση στο παράθυρο του τερματικού σας.

Προαπαιτούμενα

  1. Πολλοί διακομιστές που εκτελούν Centos 7 (1 κύριος κόμβος, 2 κόμβοι εργασίας). Συνιστάται ο Κύριος κόμβος να έχει τουλάχιστον 2 CPU, αν και αυτό δεν είναι αυστηρή απαίτηση.
  2. Συνδεσιμότητα στο Διαδίκτυο σε όλους τους κόμβους σας. Θα λάβουμε πακέτα Kubernetes και docker από το αποθετήριο. Ομοίως, θα πρέπει να βεβαιωθείτε ότι ο διαχειριστής πακέτων yum είναι εγκατεστημένος από προεπιλογή και μπορεί να ανακτήσει πακέτα από απόσταση.
  3. Θα χρειαστείτε επίσης πρόσβαση σε έναν λογαριασμό με δικαιώματα sudo ή root. Σε αυτό το σεμινάριο, θα χρησιμοποιήσω τον root λογαριασμό μου.

Το σύμπλεγμα 3 κόμβων μας θα μοιάζει κάπως έτσι:

Εγκατάσταση του συμπλέγματος Kubernetes στο Master-Node

Για να λειτουργήσει το Kubernetes, θα χρειαστείτε έναν κινητήρα κοντέινερ. Για αυτήν την εγκατάσταση, θα χρησιμοποιήσουμε το docker καθώς είναι το πιο δημοφιλές.

Τα παρακάτω βήματα θα εκτελεστούν στον Master-Node.

Βήμα 1: Προετοιμάστε το όνομα κεντρικού υπολογιστή, το τείχος προστασίας και το SELinux

Στον κύριο κόμβο σας, ορίστε το όνομα κεντρικού υπολογιστή και εάν δεν έχετε διακομιστή DNS, ενημερώστε επίσης το αρχείο /etc/hosts.

hostnamectl set-hostname master-node
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

Μπορείτε να κάνετε ping στο worker-node-1 και στο worker-node-2 για να ελέγξετε εάν το ενημερωμένο κεντρικό αρχείο σας είναι εντάξει χρησιμοποιώντας την εντολή ping.

ping 10.128.0.29
ping 10.128.0.30

Στη συνέχεια, απενεργοποιήστε το SElinux και ενημερώστε τους κανόνες του τείχους προστασίας σας.

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
reboot

Ορίστε τους ακόλουθους κανόνες τείχους προστασίας στις θύρες. Βεβαιωθείτε ότι κάθε εντολή firewall-cmd επιστρέφει με επιτυχία.

firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=2379-2380/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10251/tcp
firewall-cmd --permanent --add-port=10252/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd –reload
modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

Βήμα 2: Ρυθμίστε το Kubernetes Repo

Θα χρειαστεί να προσθέσετε χειροκίνητα αποθετήρια Kubernetes, καθώς δεν είναι εγκατεστημένα από προεπιλογή στο CentOS 7.

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
EOF

Βήμα 3: Εγκαταστήστε το Kubeadm και το Docker

Με το αποθετήριο πακέτων τώρα έτοιμο, μπορείτε να προχωρήσετε και να εγκαταστήσετε πακέτα kubeadm και docker.

yum install kubeadm docker -y 

Όταν η εγκατάσταση ολοκληρωθεί με επιτυχία, ενεργοποιήστε και ξεκινήστε και τις δύο υπηρεσίες.

systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker

Βήμα 4: Εκκίνηση του Kubernetes Master and Setup Default User

Τώρα είμαστε έτοιμοι να αρχικοποιήσουμε το master kubernetes, αλλά πριν από αυτό θα πρέπει να απενεργοποιήσετε την εναλλαγή για να εκτελέσετε την εντολή "kubeadm init".

swapoff -a

Η εκκίνηση του κύριου Kubernetes είναι μια πλήρως αυτοματοποιημένη διαδικασία που διαχειρίζεται η εντολή "kubeadm init" την οποία θα εκτελέσετε.

kubeadm init

Ίσως θέλετε να αντιγράψετε την τελευταία γραμμή και να την αποθηκεύσετε κάπου, επειδή θα χρειαστεί να την εκτελέσετε στους κόμβους εργασίας.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  \ --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

Συμβουλή: Μερικές φορές αυτή η εντολή μπορεί να παραπονιέται για τα επιχειρήματα (args) που πέρασαν, επομένως επεξεργαστείτε την για να αποφύγετε τυχόν Σφάλματα. Έτσι, θα διαγράψετε τον χαρακτήρα ‘\’ που συνοδεύει το --token και η τελική εντολή σας θα μοιάζει με αυτό.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41

Μετά την επιτυχή προετοιμασία του Kubernetes, θα πρέπει να επιτρέψετε στον χρήστη σας να αρχίσει να χρησιμοποιεί το σύμπλεγμα. Στην περίπτωσή μας, θέλουμε να εκτελέσουμε αυτήν την εγκατάσταση ως χρήστης root, επομένως θα προχωρήσουμε και θα εκτελέσουμε αυτές τις εντολές ως root. Μπορείτε να αλλάξετε σε χρήστη με δυνατότητα sudo που προτιμάτε και να εκτελέσετε τα παρακάτω χρησιμοποιώντας το sudo.

Για να χρησιμοποιήσετε το root, εκτελέστε:

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

Για να χρησιμοποιήσετε έναν χρήστη με δυνατότητα sudo, εκτελέστε:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Τώρα ελέγξτε αν η εντολή kubectl είναι ενεργοποιημένη.

kubectl get nodes

Σε αυτό το σημείο, θα παρατηρήσετε επίσης ότι η κατάσταση του master-node είναι "NotReady". Αυτό συμβαίνει επειδή δεν έχουμε ακόμη αναπτύξει το δίκτυο pod στο σύμπλεγμα.

Το Δίκτυο pod είναι το δίκτυο επικάλυψης για το σύμπλεγμα, το οποίο αναπτύσσεται πάνω από το τρέχον δίκτυο κόμβων. Έχει σχεδιαστεί για να επιτρέπει τη συνδεσιμότητα σε όλο το pod.

Βήμα 5: Ρυθμίστε το δίκτυο pod σας

Η ανάπτυξη του συμπλέγματος δικτύου είναι μια εξαιρετικά ευέλικτη διαδικασία ανάλογα με τις ανάγκες σας και υπάρχουν πολλές διαθέσιμες επιλογές. Εφόσον θέλουμε να διατηρήσουμε την εγκατάστασή μας όσο το δυνατόν πιο απλή, θα χρησιμοποιήσουμε την προσθήκη Weavenet η οποία δεν απαιτεί καμία ρύθμιση παραμέτρων ή επιπλέον κώδικα και παρέχει μία διεύθυνση IP ανά ομάδα, η οποία είναι εξαιρετική για εμάς. Εάν θέλετε να δείτε περισσότερες επιλογές, ελέγξτε εδώ.

Αυτές οι εντολές θα είναι σημαντικές για τη ρύθμιση του δικτύου pod.

export kubever=$(kubectl version | base64 | tr -d '\n')
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"

Τώρα, αν ελέγξετε την κατάσταση του κύριο κόμβου, θα πρέπει να είναι "Έτοιμος".

kubectl get nodes

Στη συνέχεια, προσθέτουμε τους κόμβους εργασίας στο σύμπλεγμα.

Ρύθμιση κόμβων εργαζομένων για συμμετοχή στο σύμπλεγμα Kubernetes

Τα παρακάτω βήματα θα εκτελεστούν στους κόμβους εργασίας. Αυτά τα βήματα θα πρέπει να εκτελούνται σε κάθε κόμβο εργαζόμενου κατά τη συμμετοχή στο σύμπλεγμα Kubernetes.

Βήμα 1: Προετοιμάστε το όνομα κεντρικού υπολογιστή, το τείχος προστασίας και το SELinux

Στους worker-node-1 και worker-node-2, ορίστε το όνομα κεντρικού υπολογιστή και σε περίπτωση που δεν έχετε διακομιστή DNS, ενημερώστε επίσης τον κύριο και τον εργαζόμενό σας κόμβους σε αρχείο /etc/hosts.

hostnamectl set-hostname 'node-1'
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

Μπορείτε να κάνετε ping στο master-node για να ελέγξετε εάν το ενημερωμένο κεντρικό αρχείο σας είναι εντάξει.

Στη συνέχεια, απενεργοποιήστε το SElinux και ενημερώστε τους κανόνες του τείχους προστασίας σας.

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

Ορίστε τους ακόλουθους κανόνες τείχους προστασίας στις θύρες. Βεβαιωθείτε ότι όλες οι εντολές firewall-cmd επιστρέφουν με επιτυχία.

firewall-cmd --permanent --add-port=6783/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd  --reload
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

Βήμα 2: Ρυθμίστε το Kubernetes Repo

Θα χρειαστεί να προσθέσετε χειροκίνητα αποθετήρια Kubernetes, καθώς δεν είναι προεγκατεστημένα στο CentOS 7.

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
EOF

Βήμα 3: Εγκαταστήστε το Kubeadm και το Docker

Με το αποθετήριο πακέτων τώρα έτοιμο, μπορείτε να προχωρήσετε και να εγκαταστήσετε πακέτα kubeadm και docker.

yum install kubeadm docker -y 

Ξεκινήστε και ενεργοποιήστε και τις δύο υπηρεσίες.

systemctl enable docker
systemctl start docker
systemctl enable kubelet
systemctl start kubelet

Βήμα 4: Συνδέστε τον Κόμβο Εργαζόμενου στο σύμπλεγμα Kubernetes

Τώρα απαιτούμε το διακριτικό που δημιούργησε το kubeadm για να ενταχθεί στο σύμπλεγμα. Μπορείτε να το αντιγράψετε και να το επικολλήσετε στον node-1 και τον node-2, αν τον είχατε αντιγράψει κάπου.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

Όπως προτείνεται στην τελευταία γραμμή, επιστρέψτε στον κύριο κόμβο και ελέγξτε εάν ο κόμβος εργαζόμενος-1 και ο κόμβος εργαζόμενος-2 έχουν ενταχθεί στο σύμπλεγμα χρησιμοποιώντας την ακόλουθη εντολή.

kubectl get nodes

Εάν όλα τα βήματα εκτελούνται με επιτυχία, τότε, θα πρέπει να δείτε τα node-1 και node-2 σε κατάσταση ετοιμότητας στον master-node.

Συνιστώμενη ανάγνωση: Πώς να αναπτύξετε το Nginx σε ένα σύμπλεγμα Kubernetes

Σε αυτό το σημείο, ολοκληρώσαμε επιτυχώς μια εγκατάσταση ενός συμπλέγματος Kubernetes στο Centos 7 και ενσωματώσαμε με επιτυχία δύο εργαζόμενους κόμβους. Τώρα μπορείτε να αρχίσετε να δημιουργείτε τις ομάδες σας και να αναπτύσσετε τις υπηρεσίες σας.