ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
Προαπαιτούμενα
Διαμόρφωση του εργάτη και του πλοιάρχου
Ρύθμιση κύριου κόμβου
Κόμβος εργάτη
Τυλίγοντας
ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
Αυτό το άρθρο έχει σκοπό να σας βοηθήσει να θέσετε σε λειτουργία ένα σύμπλεγμα Kubernetes με το kubeadm σε χρόνο μηδέν. Αυτός ο οδηγός θα αναπτύξει δύο διακομιστές, έναν κύριο και έναν εργαζόμενο, ωστόσο μπορείτε να αναπτύξετε όσους διακομιστές θέλετε.
Τι είναι το kubeadm;
Το Kubeadm είναι ένα εργαλείο που αναπτύχθηκε από την Kubernetes και σας επιτρέπει να δημιουργήσετε και να λειτουργήσετε ένα ελάχιστο βιώσιμο σύμπλεγμα ακολουθώντας τις βέλτιστες πρακτικές. Θα εκκινήσει μόνο το σύμπλεγμα σας, όχι τα μηχανήματα παροχής. Πράγματα όπως τα πρόσθετα, ο πίνακας ελέγχου Kubernetes, οι λύσεις παρακολούθησης και ούτω καθεξής δεν είναι κάτι που θα κάνει το kubeadm για εσάς.
Προαπαιτούμενα
Υπάρχουν μερικές απαιτήσεις για τους διακομιστές που θα αναπτύξουμε. Ένα ή περισσότερα μηχανήματα που εκτελούν λειτουργικό σύστημα συμβατό με deb/rpm. Θα χρησιμοποιήσουμε το CentOS.
- 2 GB ή περισσότερο RAM ανά μηχάνημα
- 2 ή περισσότερες CPU στην κύρια μονάδα
Πλήρης συνδεσιμότητα δικτύου μεταξύ όλων των μηχανημάτων του συμπλέγματος
Οι δύο διακομιστές που αναπτύσσονται σε αυτόν τον οδηγό είναι οι ακόλουθοι: - 1 CPU 2 GB RAM με CentOS 7 (Κόμβος εργασίας) - 2 CPU 4 GB RAM με CentOS 7 (Κύριος κόμβος)
Με αυτήν την ποσότητα μνήμης RAM και στους δύο διακομιστές, η Kubernetes θα έχει άφθονο χώρο για να αναπνεύσει.
Διαμόρφωση του εργάτη και του πλοιάρχου
Ακολουθούν τα βήματα που θα πρέπει να ακολουθήσουμε τόσο στον κύριο όσο και στον κόμβο εργάτη:
- Yum ενημέρωση & πακέτα
- Εγκαταστήστε το docker
- Απενεργοποιήστε το selinux
- Απενεργοποιήστε την εναλλαγή
- Απενεργοποιήστε το τείχος προστασίας
- Ενημέρωση πινάκων IPT
- Εγκαταστήστε το kubelet/kubeadm/kubectl
Εγκατάσταση Docker
Θα χρησιμοποιήσουμε την έκδοση 1.14του Kubernetes σε αυτό το σεμινάριο. Για αυτήν την έκδοση, η Kubernetes συνιστά την εκτέλεση της έκδοσης Docker 18.06.2. Βεβαιωθείτε ότι έχετε ελέγξει την προτεινόμενη έκδοση Docker για την έκδοση του Kuberenetes που διαθέτετε
Θα προσθέσουμε το αποθετήριο Docker στο yum και θα εγκαταστήσουμε συγκεκριμένα 18.06.2. Μόλις εγκατασταθεί το Docker, θα χρειαστεί να διαμορφώσουμε τον δαίμονα του docker στις ρυθμίσεις που προτείνει η 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
Απενεργοποιήστε το SELinux
Εφόσον χρησιμοποιούμε CentOS πρέπει να απενεργοποιήσουμε το SELinux. Αυτό είναι απαραίτητο για να επιτραπεί η πρόσβαση των κοντέινερ στο σύστημα αρχείων του κεντρικού υπολογιστή.
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disable/' /etc/selinux/config
Απενεργοποιήστε το Swap
Το Swap πρέπει να απενεργοποιηθεί για να επιτρέψει στο kubelet να λειτουργήσει σωστά.
sed -i '/swap/d' /etc/fstab
swapoff -a
Απενεργοποιήστε το τείχος προστασίας
Το Kubernetes χρησιμοποιεί IPTables για τη διαχείριση της εισερχόμενης και εξερχόμενης κίνησης - έτσι για να αποφύγουμε τυχόν προβλήματα απενεργοποιούμε το τείχος προστασίας.
systemctl disable firewalld
systemctl stop firewalld
Ενημέρωση πινάκων IPT
Η Kubernetes συνιστά να διασφαλίσουμε ότι net.bridge.bridge-nf-call-iptablesέχει οριστεί σε 1. Αυτό οφείλεται σε ζητήματα όπου το REHL/CentOS 7 αντιμετώπισε προβλήματα με την εσφαλμένη αναδρομολόγηση της κυκλοφορίας λόγω παράκαμψης 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
Εγκαταστήστε το kubelet/kubeadm/kubectl
Θα χρειαστεί να προσθέσουμε το repo kubernetes στο yum. Μόλις το κάνουμε αυτό, πρέπει απλώς να εκτελέσουμε την εντολή εγκατάστασης και να ενεργοποιήσουμε το 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
Τώρα έχουμε διαμορφώσει πλήρως τον κόμβο κύριο και εργαζόμενο. Μπορούμε τώρα να αρχικοποιήσουμε τον κύριο κόμβο μας και να ενώσουμε τους κόμβους εργάτη μας στον κύριο κόμβο!
Σημείωση Εάν θέλετε να προσθέσετε περισσότερους κόμβους εργασίας, η παραπάνω διαδικασία θα πρέπει να γίνει και σε όλους αυτούς τους κόμβους.
Ρύθμιση κύριου κόμβου
Θέλουμε να αρχικοποιήσουμε τον κύριο κόμβο μας εκτελώντας την ακόλουθη εντολή. Θα θέλετε να αντικαταστήσετε τη διεύθυνση IP του κύριου κόμβου σας στην παρακάτω εντολή. Επιπλέον, θα περάσουμε στο pod-network-cidr για να μας διευκολύνουμε αργότερα όταν εγκαταστήσουμε την επικάλυψη δικτύου Flannel.
kubeadm init --apiserver-advertise-address=YOUR_IP_HERE --pod-network-cidr=10.244.0.0/16
Μπορεί να χρειαστεί λίγος χρόνος για να ολοκληρωθεί, αλλά μόλις ολοκληρωθεί θα δείτε κάτι παρόμοιο στο τέλος της εξόδου όπως το παρακάτω.
kubeadm join YOUR_IP:6443 --token 4if8c2.pbqh82zxcg8rswui \
--discovery-token-ca-cert-hash sha256:a0b2bb2b31bf7b06bb5058540f02724240fc9447b0e457e049e59d2ce19fcba2
Αυτή η εντολή είναι αυτό που πρέπει να εκτελέσουν οι κόμβοι εργαζομένων σας για να ενταχθούν στο σύμπλεγμα, οπότε λάβετε υπόψη τη.
Επόμενο είναι το Flannel. Το Flannel είναι αυτό που επιτρέπει την επικοινωνία pod to pod. Υπάρχουν διάφοροι άλλοι τύποι επικαλύψεων δικτύου που μπορείτε να εγκαταστήσετε, αλλά για λόγους απλότητας αυτός ο οδηγός θα χρησιμοποιεί Flannel.
Αντιγράψτε το kube/configαρχείο στο δικό σας $Homeγια να μπορείτε να εκτελέσετε kubectlεντολές.
mkdir $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config
Ένα τελευταίο βήμα στον κύριο κόμβο είναι η εγκατάσταση του Flannel. Εκτελέστε την ακόλουθη εντολή.
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Με αυτήν τη ρύθμιση παραμέτρων αντιγραμμένη, θα μπορείτε να εκτελέσετε kubectl get csκαι να λάβετε απάντηση.
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}
Ο κύριος κόμβος σας έχει ρυθμιστεί και είναι έτοιμος να ξεκινήσει. Στον κόμβο εργασίας!
Κόμβος εργάτη
Σε αυτό το σημείο δεν υπάρχει επιπλέον εργασία που είναι απαραίτητη στον κόμβο εργάτη. Το μόνο που χρειάζεται να κάνουμε είναι να εκτελέσουμε την kubeadm joinεντολή που λάβαμε από την kubeadm initέξοδο μας .
Εάν κατά τύχη τοποθετήσατε λάθος την εντολή kubeadm join, μπορείτε να δημιουργήσετε μια άλλη στον κύριο κόμβο εκτελώντας
kubeadm token create --print-join-command
Μόλις εκτελέσετε την εντολή kubeadm join, εάν εκτελείτε kubectl get nodesστο master θα δείτε μια παρόμοια έξοδο με την παρακάτω.
NAME STATUS ROLES AGE VERSION
k8-master Ready master 107m v1.14.2
k8-worker Ready <none> 45m v1.14.2
Τυλίγοντας
Όπως ακριβώς έχετε κάνει bootstrapped ένα σύμπλεγμα Kubernetes χρησιμοποιώντας το kubeadm. Θα μπορούσατε επίσης να το κάνετε αυτό με ιδιωτικά δίκτυα. Το Vultr, καθώς και άλλοι πάροχοι cloud, επιτρέπουν ιδιωτικά δίκτυα. Επίσης, εάν θέλετε να εκτελέσετε εντολές kubectl από τον τοπικό σας υπολογιστή σε σχέση με το σύμπλεγμα σας, μπορείτε να το πετύχετε έχοντας εγκαταστήσει το kubectl τοπικά και να κατεβάσετε το .kube/configαρχείο από το σύμπλεγμα στον τοπικό σας υπολογιστή στο $HOME/.kube/config.
Ας ελπίσουμε ότι αυτός ο οδηγός θα σας βοηθήσει να διασχίσετε το kubeadm και να σας κάνει να παίξετε με τα kubernetes σε χρόνο μηδέν!
Χρήσιμοι σύνδεσμοι: