Démonstration pratique du déploiement openEuler du cluster version Kubernetes 1.29.4

Cet article est partagé par la communauté Huawei Cloud « OpenEuler déploie le cluster de version Kubernetes 1.29.4 » par Jiang Wanzhengchouyu.

1. Préparation du nœud de cluster Kubernetes

1.1 Description du système d'exploitation hôte

Numéro de série du système d'exploitation et remarques sur la version
1 CentOS7u9 ou OpenEuler2203

1.2 Description de la configuration matérielle de l'hôte

Exigences Mémoire CPU rôle de disque dur Nom d'hôte
valeur 8C 8G 1024 Go maître k8s-master01
valeur 8C 16G 1024 Go travailleur (nœud) k8s-worker01
valeur 8C 16G 1024 Go travailleur (nœud) k8s-worker02

1.3 Configuration de l'hôte

1.3.1 Configuration du nom d'hôte

Étant donné que trois hôtes sont utilisés cette fois pour terminer le déploiement du cluster Kubernetes, l'un d'eux est le nœud maître, nommé k8s-master01 ; deux d'entre eux sont des nœuds de travail, nommés : k8s-worker01 et k8s-worker02.

# nœud maître

hostnamectl set-hostname k8s-master01

#worker01node
hostnamectl set-hostname k8s-worker01
 
#worker02node
hostnamectl set-hostname k8s-worker02

1.3.2 Adresse IP, résolution de nom et confiance mutuelle

La configuration #IP ne sera pas expliquée ici.

#Ce qui suit est la configuration de la résolution de nom
[root@k8s-master01 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.11 k8s-master01
192.168.0.12 k8s-worker01
192.168.0.13 k8s-worker02

#Configuration de la confiance mutuelle de l'hôte  
[root@k8s-master01 ~]# ssh-keygen
Génération d'une paire de clés rsa publique/privée.
Entrez le fichier dans lequel enregistrer la clé (/root/.ssh/id_rsa) :
Saisissez la phrase secrète (vide s'il n'y a pas de phrase secrète) :
Saisissez à nouveau la même phrase secrète :
Votre identification a été enregistrée dans /root/.ssh/id_rsa
Votre clé publique a été enregistrée dans /root/.ssh/id_rsa.pub
L’empreinte digitale de la clé est :
SHA256:Rr6W4rdnY350fzMeszeWFR/jUJt0VOZ3yZECp5VJJQA root@k8s-master01
L'image randomart de la clé est :
+---[RSA 3072]----+
| E.o+=++*|
| ++o*+|
| . . +oB|
| O. *o|
| S o =|
| . O. ..o|
| . + . . +o|
| . o. = . *B|
| ...*.ou oui*|
+----[SHA256]-----+
[root@k8s-master01 ~]# pour i dans {11..13} ; faire ssh-copy-id 192.168.0.${i} ; terminé

/usr/bin/ssh-copy-id : INFO : Source de la ou des clés à installer : "/root/.ssh/id_rsa.pub"
L'authenticité de l'hôte « 192.168.0.11 (192.168.0.11) » ne peut pas être établie.
L'empreinte digitale de la clé ED25519 est SHA256:s2R582xDIla4wyNozHa/HEmRR7LOU4WAciEcAw57U/Q.
Cette clé n'est connue sous aucun autre nom
Êtes-vous sûr de vouloir continuer à vous connecter (oui/non/[empreinte digitale]) ? Oui
/usr/bin/ssh-copy-id : INFO : tentative de connexion avec la ou les nouvelles clés, pour filtrer celles déjà installées
/usr/bin/ssh-copy-id : INFO : 1 clé(s) restent à installer -- si vous êtes invité maintenant, c'est pour installer les nouvelles clés

Utilisateurs autorisés uniquement. Toutes les activités peuvent être surveillées et signalées.
Mot de passe de [email protected] :

Nombre de clé(s) ajoutée(s) : 1

1.3.4 Configuration du pare-feu

Tous les hôtes nécessitent une opération.

Désactiver le pare-feu existant

# systemctl désactive le pare-feu

# systemctl arrête le pare-feu

ou

systemctl désactiver --now firewalld

Afficher l'état du pare-feu

# pare-feu-cmd --state

ne pas courrir

Commande d'exécution de référence :

[root@k8s-master01 ~]# pour i dans {11..13} ; faire ssh 192.168.0.${i} 'systemctl désactiver --now firewalld' ; terminé

Utilisateurs autorisés uniquement. Toutes les activités peuvent être surveillées et signalées.

Utilisateurs autorisés uniquement. Toutes les activités peuvent être surveillées et signalées.

Utilisateurs autorisés uniquement. Toutes les activités peuvent être surveillées et signalées.
[root@k8s-master01 ~]# pour i dans {11..13} ; faites ssh 192.168.0.${i} 'firewall-cmd --state' ; terminé

Utilisateurs autorisés uniquement. Toutes les activités peuvent être surveillées et signalées.
ne pas courrir

Utilisateurs autorisés uniquement. Toutes les activités peuvent être surveillées et signalées.
ne pas courrir

Utilisateurs autorisés uniquement. Toutes les activités peuvent être surveillées et signalées.
ne pas courrir

1.3.5 Configuration SELINUX

Tous les hôtes nécessitent une opération. La modification de la configuration SELinux nécessite le redémarrage du système d'exploitation.

# sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# statut

Commande d'exécution de référence :

[root@k8s-master01 ~]# pour i dans {11..13};do ssh 192.168.0.${i} 'sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/ config' ; terminé

Utilisateurs autorisés uniquement. Toutes les activités peuvent être surveillées et signalées.

Utilisateurs autorisés uniquement. Toutes les activités peuvent être surveillées et signalées.

Utilisateurs autorisés uniquement. Toutes les activités peuvent être surveillées et signalées.
 
[root@k8s-master01 ~]# pour i dans {11..13} ; faire ssh 192.168.0.${i} 'sestatus' ; terminé

Utilisateurs autorisés uniquement. Toutes les activités peuvent être surveillées et signalées.
Statut SELinux : désactivé

Utilisateurs autorisés uniquement. Toutes les activités peuvent être surveillées et signalées.
Statut SELinux : désactivé

Utilisateurs autorisés uniquement. Toutes les activités peuvent être surveillées et signalées.
Statut SELinux : désactivé

1.3.6 Configuration de la synchronisation horaire

Tous les hôtes nécessitent une opération. Le système d'installation minimale nécessite l'installation du logiciel ntpdate.

# crontab -l

0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com
pour i dans {11..13};do ssh 192.168.0.${i} ' echo '0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com' >> /etc/crontab' ; fait
#Définir le fuseau horaire de Shanghai, Huitième District Est

timedatectl définir le fuseau horaire Asie/Shanghai

pour moi dans {11..13} ; faites ssh 192.168.0.${i} ' timedatectl set-timezone Asia/Shanghai' ;done

1.3.7 Mettre à niveau le noyau du système d'exploitation

Le système centos doit mettre à niveau le contenu. Plus précisément, Baidu et OpenEuler2203 n'ont pas besoin d'être mis à niveau.

1.3.8 Configurer le transfert de routage du noyau et le filtrage de pont

Tous les hôtes nécessitent une opération.

Ajouter des fichiers de configuration de filtrage de pont et de transfert du noyau

sed -i 's/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
# cat > /etc/sysctl.d/k8s.conf << EOF

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
EOF
#Configurer et charger le module br_netfilter

chat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
recouvrir
br_netfilter
EOF

#Charger le module de superposition br_netfilter
modprobe br_netfilter
superposition de sonde mod
#Vérifiez s'il est chargé

# lsmod | grep br_netfilter

br_netfilter 22256 0
pont 151336 1 br_netfilter

# Rendre efficace

 sysctl --système

# Utilisez le fichier de configuration par défaut pour prendre effet
sysctl -p

# Utilisez le fichier de configuration nouvellement ajouté pour prendre effet
sysctl -p /etc/sysctl.d/k8s.conf

1.3.9 Installer ipset et ipvsadm

Tous les hôtes nécessitent une opération.

Installer ipset et ipvsadm

# miam -y installer ipset ipvsadm
Configurer la méthode de chargement du module ipvsadm
Ajouter des modules qui doivent être chargés

# cat > /etc/sysconfig/modules/ipvs.modules <<EOF

#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
 
Autoriser, exécuter, vérifier si chargé
chmod 755 /etc/sysconfig/modules/ipvs.module && /etc/sysconfig/modules/ipvs.module

Vérifiez si le module correspondant est chargé avec succès
# lsmod | grep -e ip_vs -e nf_conntrack_ipv4

1.3.10 Fermer la partition SWAP

Une fois la modification terminée, le système d'exploitation doit être redémarré. S'il ne redémarre pas, il peut être temporairement arrêté. La commande est swapoff -a.

Fermez définitivement la partition d'échange et devez redémarrer le système d'exploitation

# chat /etc/fstab

......

# /dev/mapper/centos-swap swap valeurs par défaut 0 0

Ajoutez # au début de la ligne précédente

2. Installation de l'environnement de conteneur conteneurd

2.1 Installer le package d'environnement containersd

Tous les hôtes nécessitent une opération.

#Fichiers compressés

pour moi dans {11..13} ; faites ssh 192.168.0.${i} ' wget https://blog-source-mkt.oss-cn-chengdu.aliyuncs.com/resources/k8s/kubeadm%20init/ k8s1.29.tar.gz'; fait

# Décompressez Containerd et installez-le
pour i dans {11..13} ; faites ssh 192.168.0.${i} ' tar -zxvf /root/k8s1.29.tar.gz' ; fait

pour je dans {11..13};do ssh 192.168.0.${i} ' tar -zxvf /root/workdir/containerd-1.7.11-linux-amd64.tar.gz && mv /root/bin/* /usr/local/bin/ && rm -rf /root/bin'; fait
# Créez un service, tous les hôtes doivent fonctionner
chat << EOF > /usr/lib/systemd/system/containerd.service
[Unité]
Description=environnement d'exécution du conteneur conteneurd
Documentation=https://containerd.io
Après = réseau.target local-fs.target

[Service]
ExecStartPre=-/sbin/modprobe superposition
ExecStart=/usr/local/bin/containerd

Tapez=notifier
Délégué = oui
KillMode = processus
Redémarrer = toujours
RedémarrerSec=5

# Avoir des limites non nulles entraîne des problèmes de performances en raison de la surcharge comptable
# dans le noyau. Nous vous recommandons d'utiliser des groupes de contrôle pour effectuer une comptabilité locale du conteneur.
LimitNPROC=infini
LimitCORE=infini

# Commentez TasksMax si votre version systemd ne le prend pas en charge.
# Seul Systemd 226 et supérieur prend en charge cette version.
TasksMax = infini
OOMScoreAdjust=-999

[Installer]
WantedBy=multi-user.target
EOF
# Démarrer le service de conteneur
pour i dans {11..13} ;do ssh 192.168.0.${i} 'systemctl daemon-reload && systemctl activate --now containersd '; fait

# Installer runc
pour moi dans {11..13};do ssh 192.168.0.${i} 'install -m 755 /root/workdir/runc.amd64 /usr/local/sbin/runc '; fait
#Installer le plug-in cni
pour moi dans {11..13};do ssh 192.168.0.${i} 'mkdir -p /opt/cni/bin && tar -xzvf /root/workdir/cni-plugins-linux-amd64-v1.4.0 .tgz -C /opt/cni/bin/ '; fait
# Générer le fichier de configuration du conteneur et le modifier
pour i dans {11..13} ;do ssh 192.168.0.${i} 'mkdir -p /etc/containerd && containersd config default | sudo tee /etc/containerd/config.toml '; fait
 
# Modifier l'image du sandbox, tous les hôtes doivent fonctionner

sed -i 's#sandbox_image = "registry.k8s.io/pause:.*"#sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"#' /etc/containerd/config.toml
#Redémarrer le conteneur
systemctl redémarrer le conteneur

2.2 Installer k8s sur l'hôte maître

# Configurez la source k8s v2.19, tous les nœuds doivent être installés
chat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[Kubernetes]
nom=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/
activé=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/repodata/repomd.xml.key
EOF
#Installez les outils k8s, tous les nœuds doivent être installés
miam tout nettoyer && miam makecache

miam install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
# Configurer kubelet Afin d'assurer la cohérence entre le cgroupdriver utilisé par docker et le cgroup utilisé par kubelet, il est recommandé de modifier le contenu du fichier suivant. Tous les nœuds doivent être installés

# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"

Ou la commande suivante
echo 'KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"' > /etc/sysconfig/kubelet
systemctl activer kubelet

#Remarque, ne démarrez pas kubelet, kubeadm démarrera automatiquement s'il est démarré, l'installation signalera une erreur.

# Installez la commande k8s et exécutez-la sur le nœud maître. Il n'y a que l'image de la version 1.29.4 ici.

kubeadm init --apiserver-advertise-address=192.168.0.11 --image-repository Registry.aliyuncs.com/google_containers --kubernetes-version v1.29.4 --service-cidr=10.96.0.0/12 --pod-network- cidr=10.224.0.0/16
#Enfin, exécutez la commande suivante
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

exporter KUBECONFIG=/etc/kubernetes/admin.conf

2.3 Installer le plug-in réseau Calico

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
#Enfin, vérifiez l'état des nœuds et des branches de pods

kubectl récupère les nœuds
 
kubectl récupère les pods -A

 

Cliquez pour suivre et découvrir les nouvelles technologies de Huawei Cloud dès que possible~

Linus a pris sur lui d'empêcher les développeurs du noyau de remplacer les tabulations par des espaces. Son père est l'un des rares dirigeants capables d'écrire du code, son deuxième fils est directeur du département de technologie open source et son plus jeune fils est un noyau open source. contributeur. Robin Li : Le langage naturel deviendra un nouveau langage de programmation universel. Le modèle open source prendra de plus en plus de retard sur Huawei : il faudra 1 an pour migrer complètement 5 000 applications mobiles couramment utilisées vers Java, qui est le langage le plus enclin . vulnérabilités tierces. L'éditeur de texte riche Quill 2.0 a été publié avec des fonctionnalités, une fiabilité et des développeurs. L'expérience a été grandement améliorée. Bien que l'ouverture soit terminée, Meta Llama 3 a été officiellement publié. la source de Laoxiangji n'est pas le code, les raisons derrière cela sont très réconfortantes. Google a annoncé une restructuration à grande échelle.
{{o.name}}
{{m.nom}}

Je suppose que tu aimes

Origine my.oschina.net/u/4526289/blog/11053977
conseillé
Classement