τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Ανάπτυξη εκτός σύνδεσης K8s
ανάπτυξη k8s εκτός σύνδεσης
Για λεπτομέρειες, ανατρέξτε στο άρθρο: "Εγκατάσταση εκτός σύνδεσης docker και συσκευασία εκτός σύνδεσης έργων back-end"
https://blog.csdn.net/qq_45371023/article/details/140279746?spm=1001.2014.3001.5501
Όλα τα αρχεία που χρησιμοποιούνται βρίσκονται στη διεύθυνση:
Σύνδεσμος: https://pan.baidu.com/s/10cb-dXkgdShdjPEBCyvTrw?pwd=fpuy
Κωδικός εξαγωγής: fpuy
1. Εγκαταστήστε το cri_dockerd
rpm -ivh cri-dockerd-0.3.9-3.el8.x86_64.rpm
2. Επαναλάβετε τη φόρτωση του δαίμονα συστήματος → Ρύθμιση του cri-dockerd για αυτόματη εκκίνηση → Έναρξη cri-dockerd
Επαναφόρτωση δαίμονα συστήματος
sudo systemctl daemon-reload
Ρυθμίστε το cri-dockerd για αυτόματη εκκίνηση
sudo systemctl enable cri-docker.socket cri-docker
Ξεκινήστε το cri-dockerd
sudo systemctl start cri-docker.socket cri-docker
sudo systemctl status cri-docker.socket
sudo systemctl status cri-docker
Πρόβλημα: Απέτυχε η εκκίνηση του cri-docker
Μετρήστε:
Μέθοδος 1: systemctl restart docker # Restart docker
Μέθοδος 2: Απεγκαταστήστε το docker και εγκαταστήστε το ξανά και, στη συνέχεια, εκτελέστε ξανά τα παραπάνω βήματα
1. Εγκαταστήστε το kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
2. Ελέγξτε εάν η εγκατάσταση έχει ολοκληρωθεί
kubectl version --client
3. Ανοίξτε τη θύρα ή κλείστε το τείχος προστασίας (για να εξασφαλίσετε μια ομαλή διαδικασία εγκατάστασης)
Άνοιγμα θύρας (διακομιστής cloud)
Ανοίξτε τη θύρα 6443
sudo firewall-cmd --zone=public --add-port=6443/tcp --permanent
Επαναφόρτωση τείχους προστασίας
sudo firewall-cmd --reload
Προβολή όλων των ανοιχτών θυρών
sudo firewall-cmd --zone=public --list-ports
Ή απενεργοποιήστε το τείχος προστασίας (εικονική μηχανή)
Απενεργοποιήστε το τείχος προστασίας
sudo systemctl stop firewalld
Απενεργοποιήστε την αυτόματη εκκίνηση του τείχους προστασίας
sudo systemctl disable firewalld
4. Απενεργοποιήστε το SELinux (βεβαιωθείτε ότι το κοντέινερ έχει πρόσβαση στους πόρους του συστήματος)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
5. Εγκαταστήστε τα kubeadm, kubelet και kubectl
Κατεβάστε το σχετικό πακέτο εγκατάστασης εκτός σύνδεσης σε μορφή rpm, το οποίο υπάρχει στο 3_yum_package Χρησιμοποιήστε την εντολή για να εγκαταστήσετε όλα τα πακέτα εγκατάστασης rpm στον κατάλογο.
cd 3_yum_package && rpm -ivh *.rpm
6. Ρυθμίστε το kubelet να ξεκινά αυτόματα
sudo systemctl enable --now kubelet
Αφού ολοκληρώσετε τα παραπάνω βήματα, θα έχετε το παρακάτω περιβάλλον
·Δύο διακομιστές ή εικονικές μηχανές με διαφορετικές διευθύνσεις IP μπορούν να επικοινωνούν μεταξύ τους και να διατηρούν την κατάσταση LAN Η διεύθυνση IP έχει οριστεί σε 192.168..34 και 192.168..35
·Ο χρόνος εκτέλεσης του κοντέινερ (Docker+cri_dockerd) είναι εγκατεστημένος και στους δύο διακομιστές και έχουν εγκατασταθεί τα στοιχεία kubernetes kubectl, kubeadm και kubelet.
7. Κλείστε το διαμέρισμα ανταλλαγής Αυτό χωρίζεται σε προσωρινό τερματισμό λειτουργίας και μόνιμος τερματισμός λειτουργίας συνιστάται για περιβάλλοντα εικονικής μηχανής, επειδή θα ενεργοποιείται και θα απενεργοποιείται συχνά.
Κλείστε προσωρινά το διαμέρισμα ανταλλαγής
swapoff -a
Για να κλείσετε οριστικά το διαμέρισμα swap, σχολιάστε τη γραμμή που περιέχει swap στο fstab.
vi /etc/fstab
# /dev/mapper/centos-swap swap προεπιλογές 0 0
Κάντε επανεκκίνηση για να τεθεί σε ισχύ η κατάσταση του cri-dockerd μπορεί να αλλάξει cri-dockerd και μετά ξεκινήστε το cri-dockerd για να κάνετε cri-dockerd η κατάσταση είναι κανονική
επανεκκίνηση
8. Εγκαταστήστε το runc ως περιβάλλον λειτουργίας k8s
Εγκαταστήστε το runc
sudo install -m 755 runc.amd64 /usr/local/bin/runc
# Ελέγξτε εάν η εγκατάσταση είναι επιτυχής
runc -v
9. Το Docker και το cri-dockerd ρυθμίζουν την επιτάχυνση εγχώριας εικόνας (Δεδομένου ότι τα ονόματα των ακόλουθων πακέτων λογισμικού που θα χρησιμοποιηθούν σε αυτόν τον φάκελο έχουν κατοπτρικές διευθύνσεις, συνιστάται να ρυθμίσετε την αντίστοιχη επιτάχυνση καθρέφτη ακόμη και σε ένα τοπικό δίκτυο για να αποτρέψετε το kubectl να απαιτεί από το Διαδίκτυο να τραβήξει πακέτα λογισμικού και να αγνοήσει τον τοπικό καθρέφτη μετά την η εγκατάσταση έχει ολοκληρωθεί.)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://tsvqojsz.mirror.aliyuncs.com"]
}
EOF
# 找到第10行
vi /usr/lib/systemd/system/cri-docker.service
# 修改为ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
Επανεκκινήστε τα στοιχεία Docker
systemctl daemon-reload && systemctl restart docker cri-docker.socket cri-docker
# Ελέγξτε την κατάσταση στοιχείου Docker
systemctl status docker cir-docker.socket cri-docker
10. Ελέγξτε το όνομα κεντρικού υπολογιστή και τους κεντρικούς υπολογιστές
κύριος κόμβος
Το όνομα κεντρικού υπολογιστή είναι k8s-master
vi /etc/hostname
Προσθήκη αντιστοίχισης ονόματος τομέα
echo "192.168.**.35 k8s-slave01">> /etc/hosts
Άλλοι κόμβοι
όνομα κεντρικού υπολογιστή为k8s-slave01
vi /etc/hostname
Προσθήκη αντιστοίχισης ονόματος τομέα
echo "192.168.**.34 k8s-master" >> /etc/hosts
11. Προωθήστε το IPv4 και αφήστε τα iptables να δουν τη ροή της γέφυρας
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
Ορίστε τις απαιτούμενες παραμέτρους sysctl, οι οποίες παραμένουν σε όλες τις επανεκκινήσεις
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
#Εφαρμογή παραμέτρων sysctl χωρίς επανεκκίνηση
sudo sysctl --system
lsmod | grep br_netfilter
lsmod | grep overlay
sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward
# Εάν το σφάλμα iptables εξακολουθεί να ζητείται κατά την έναρξη, εκτελέστε το
echo "1">/proc/sys/net/bridge/bridge-nf-call-iptables
echo "1">/proc/sys/net/ipv4/ip_forward
12. Αρχικοποιήστε τον κύριο κόμβο
Πριν από την προετοιμασία, πρέπει να αποκτήσετε την εικόνα docker που απαιτείται για την προετοιμασία μέσω των εικόνων διαμόρφωσης kubeadm:
Εγκαταστήστε τη φόρτωση docker εικόνας -i **.tar
Σχετικά αρχεία εικόνας υπάρχουν στο 5_kubeadm-images.
Εκτελέστε αρχικοποίηση:
kubeadm init --node-name=k8s-master list--image-repository=registry.aliyuncs.com/google_containers --cri-socket=unix:///var/run/cri-dockerd.sock --apiserver-advertise-address=192.168.**.34 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
–image-repository=registry.aliyuncs.com/google_containers # Αντικαταστήστε την πηγή εικόνας του κοντέινερ με το Alibaba Cloud Διαφορετικά, η εικόνα δεν μπορεί να τραβηχτεί προς τα κάτω για λόγους δικτύου και η εκτέλεση σίγουρα θα αποτύχει.
–cri-socket=unix:///var/run/cri-dockerd.sock # Αυτός είναι ο καθορισμένος χρόνος εκτέλεσης κοντέινερ, επειδή το κοντέινερ είναι επίσης ένα από τα στοιχεία του Docker Downloading Docker θα πραγματοποιήσει επίσης λήψη του κοντέινερ κατά την προετοιμασία του Kubernetes ανιχνεύει ότι υπάρχουν πολλά περιβάλλοντα χρόνου εκτέλεσης κοντέινερ, πρέπει να επιλέξει χειροκίνητα ένα. Μπορεί επίσης να φανεί εδώ ότι το κοντέινερ είναι στην πραγματικότητα πολύ πιο ελαφρύ από το Docker.
–apiserver-advertise-address=192.168.56.50 # Ορίστε τη διεύθυνση εκπομπής για τον διακομιστή API Επιλέξτε εδώ την τοπική διεύθυνση IPv4 Εάν δεν θέλετε να οριστεί ο API SERVER σε άλλους κόμβους.
–pod-network-cidr=10.244.0.0/16 # Καθορίστε το εύρος διευθύνσεων IP που μπορεί να χρησιμοποιηθεί από το δίκτυο pod Εάν δεν είστε ακόμα σίγουροι, μπορείτε να το αγνοήσετε και να χρησιμοποιήσετε αυτήν την τιμή.
–service-cidr=10.96.0.0/12 # Καθορίστε ένα πρόσθετο τμήμα διεύθυνσης IP για την εικονική διεύθυνση IP της υπηρεσίας Εάν δεν είστε ακόμα σίγουροι, μπορείτε απλώς να χρησιμοποιήσετε αυτήν την τιμή ανεξάρτητα.
Πρόβλημα: cordns:v1.10.1 έλεγχος δεν υπάρχει, στην πραγματικότητα cordns:v1.10.1 υπάρχει ήδη, αλλά είναι cordns:1.10.1.
Μέτρα: Τροποποίηση της ετικέτας των κορδονιών.
docker tag registry.aliyuncs.com/google_containers/coredns:1.10.1 registry.aliyuncs.com/google_containers/coredns:v1.10.1
Εκτελέστε ξανά την εντολή αρχικοποίησης
Καταγράψτε τις πληροφορίες κάτω από την ένωση kubeadm, οι οποίες απαιτούνται για την ένωση κόμβου Οι σχετικές πληροφορίες για το παραπάνω παράδειγμα είναι:
kubeadm join 192.168.51.34:6443 --token 1qtv3k.p8tfvdcds6x5ichf
--discovery-token-ca-cert-hash sha256:90afb5751086aabf7ac90d9e77a946eb768d47ffaaead62243264641954a5e26
Εάν το ξεχάσετε, μπορείτε να χρησιμοποιήσετε τη λίστα διακριτικών kubeadm για να κάνετε ερώτημα Το διακριτικό υπάρχει για 24 ώρες, να δημιουργήσετε ξανά το διακριτικό kubeadm δημιουργία --print-join-command και να το διαγράψετε χρησιμοποιώντας το διακριτικό kubeadm delete.
Χρήστες που δεν είναι root παρακαλούμε εκτελέστε
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Ο χρήστης Root εκτελεί απευθείας
Εφαρμόζεται προσωρινά και θα καταστεί άκυρη μετά την επανεκκίνηση.
export KUBECONFIG=/etc/kubernetes/admin.conf
Εφαρμόζεται μόνιμα Δεν χρειάζεται να εκτελεστεί ξανά αυτή η εντολή μετά την εκτέλεση του kubeadm reset και ξανά.
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
Μετά την εκτέλεση της μόνιμης αποτελεσματικής εντολής, πρέπει να την προμηθεύσετε για να την κάνετε αποτελεσματική.
source ~/.bash_profile
Ελέγξτε εάν η διαμόρφωση είναι αποτελεσματική
echo $KUBECONFIG
/etc/kubernetes/admin.conf
13. Εγκαταστήστε και διαμορφώστε τα πρόσθετα δικτύου
Εδώ το flannel χρησιμοποιείται για τη λήψη και τη μεταφόρτωση του αρχείου kube-flannel.yml στον διακομιστή.
Ανεβάστε τη σχετική εικόνα στον διακομιστή για εγκατάσταση. Το kube-flannel.yml και τα αρχεία εικόνας υπάρχουν στο 6_kube-flannel.
Ερώτηση κάρτας δικτύου
ifconfig
Το kube-flannel.yml θα αναζητήσει την κάρτα δικτύου enp1s0 από προεπιλογή. Σε αυτό το παράδειγμα, η κάρτα δικτύου 34 είναι enp1s0 και δεν χρειάζεται να τροποποιηθεί.
//Τροποποιήστε το kube-flannel.yml του 35 και προσθέστε –iface=enp0s3 για να καθορίσετε (enp0s3 εδώ είναι η κάρτα δικτύου που αντιστοιχεί στην ip, όπως το τμήμα στο παραπάνω πλαίσιο). Οι θέσεις των παραμέτρων είναι οι εξής:
container:
......
command:
- /opt/bin/flanneld
arg:
- --ip-masq
- --kube-subnet-mgr
- --iface=enp4s0
Διαμόρφωση της προσθήκης δικτύου flannel για το Kubernetes
kubectl apply -f /data/k8s/6_kube-flannel/kube-flannel.yml
cat /run/flannel/subnet.env
# Εάν δεν υπάρχει τέτοιο αρχείο ή φάκελος, πρέπει να το δημιουργήσετε με μη αυτόματο τρόπο. Το περιεχόμενο είναι το ίδιο όπως παρακάτω.
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true
14. Ο κόμβος συνδέεται με το Master
14.1 Αντιγράψτε το /etc/kubernetes/admin.conf στο μηχάνημα κύριου κόμβου στο μηχάνημα υποτελούς κόμβου.
scp /etc/kubernetes/admin.conf 192.168.56.51:/etc/kubernetes/
# Μην ξεχάσετε να προσθέσετε το admin.conf στη μεταβλητή περιβάλλοντος Χρησιμοποιήστε το απευθείας εδώ για να τεθεί σε ισχύ μόνιμα.
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
Εάν υπάρχει πρόβλημα κατά την αντιγραφή:
Το κλειδί κεντρικού υπολογιστή ECDSA για το 192.168.55.187 άλλαξε και ζητήσατε αυστηρό έλεγχο. Η επαλήθευση κλειδιού κεντρικού υπολογιστή απέτυχε.
Εκτελέστε τις παρακάτω προτάσεις για επιδιόρθωση
ssh-keygen -R 192.168.55.187
14.2 Εκτελέστε την εντολή σύνδεσης (αφού ο κύριος κόμβος προετοιμαστεί με επιτυχία, θα δοθεί η εντολή σύνδεσης)
Για παράδειγμα:
kubeadm join 192.168.51.34:6443 --token by7t4x.da3f98dzrvjylykz --discovery-token-ca-cert-hash sha256:90afb5751086aabf7ac90d9e77a8a89474343444444444 5e26 --cri-socket unix:///var/run/cri-dockerd.sock
14.3 Εκτελέστε κόμβους λήψης kubectl
Το σύμπλεγμα k8s αναπτύχθηκε με επιτυχία! ! !
kubectl πάρει κόμβους
Μέτρα: Ελέγξτε εάν η ανταλλαγή είναι κλειστή, ελέγξτε εάν το τείχος προστασίας ανοίγει τη θύρα 6443
Κλείσιμο ανταλλαγής
Απενεργοποιήστε προσωρινά το τείχος προστασίας
επιτυχία
kubectl πάρει κόμβους
Αφού προσθέσετε έναν κόμβο k8s στο σύμπλεγμα, ελέγξτε ότι η κατάσταση του κόμβου είναι NotReady
Μετρήστε:
systemctl restart kubelet.service
systemctl restart docker.service
Επανεκκινήστε το kubelet και το docker
kubeadm join 192.168.51.34:6443 --token l2qlvh.and3fnjmzecueu9h --discovery-token-ca-cert-hash sha256:90afb5751086aabf7ac90d9e77a846454546545465464544645446544676a 26 --cri-socket unix:///var/run/cri-dockerd.sock
Παρουσιάζεται ένα χρονικό όριο προετοιμασίας κατά την προσθήκη θυγατρικών κόμβων σε ένα σύμπλεγμα k8s.
Μετρήστε:
kubeadm reset -f --cri-socket unix:///var/run/cri-dockerd.sock
επιτυχία
Αντιγράψτε το /etc/kubernetes/admin.conf στο μηχάνημα κύριου κόμβου στο μηχάνημα υποτελών κόμβων
scp /etc/kubernetes/admin.conf 192.168.55.187:/etc/kubernetes/
Εάν η αντιγραφή του αρχείου αποτύχει, το μήνυμα σφάλματος είναι το ακόλουθο:
Το κλειδί κεντρικού υπολογιστή ECDSA για το 192.168.55.187 έχει αλλάξει και έχετε ζητήσει αυστηρό έλεγχο.
Η επαλήθευση κλειδιού κεντρικού υπολογιστή απέτυχε.
Εκτελέστε τις παρακάτω προτάσεις για επιδιόρθωση
ssh-keygen -R 192.168.55.187
kubectl delete node k8s-slave01
kubectl delete node k8s-slave02
kubectl delete node k8s-master
σκλάβος κόμβος
rm -rf /etc/kubernetes/*
kubeadm reset --cri-socket unix:///var/run/cri-dockerd.sock
κύριος κόμβος
rm -rf /etc/kubernetes/*
rm -rf ~/.kube/*
rm -rf /var/lib/etcd/*
kubeadm reset -f --cri-socket unix:///var/run/cri-dockerd.sock
Εάν είναι απαραίτητο, αρχικοποιήστε ξανά το σύμπλεγμα k8s.
kubeadm init --node-name=k8s-master --image-repository=registry.aliyuncs.com/google_containers --cri-socket=unix:///var/run/cri-dockerd.sock --apiserver-advertise-address=192.168.51.34 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
κύριος κόμβος
kubectl apply -f /data/k8s/6_kube-flannel/kube-flannel.yml
kubectl get pod -A
κύριος κόμβος
scp /etc/kubernetes/admin.conf 192.168.51.35:/etc/kubernetes/
scp /etc/kubernetes/admin.conf 192.168.51.36:/etc/kubernetes/
σκλάβος κόμβος
kubeadm join 192.168.51.34:6443 --token 1k9kdy.dvn2qbtd7rjar1ly
--discovery-token-ca-cert-hash sha256:ff90d8ed41ae1902a839194f179a1c3ba8374a5197ea3111e10e5ca1c09fa442 --cri-socket unix:///var/run/cri-dockerd.sock
kubectl get pod -A
kubectl get nodes