Dans certains environnements de production, nous n'avons besoin que d'un cluster K8s natif, et il n'est pas nécessaire de déployer une console de gestion graphique telle que KubeSphere . Dans notre pile technologique existante, nous sommes habitués à utiliser KubeKey pour déployer des clusters KubeSphere et K8s. Aujourd'hui, je vais vous montrer comment déployer un cluster K8s pur à l'aide de KubeKey sur openEuler 22.03 LTS SP3 .
Configuration réelle du serveur (architecture réplique 1:1 d'un environnement de production à petite échelle, la configuration est légèrement différente)
Nom du processeur | IP | CPU | Mémoire | disque système | disque de données | utiliser |
---|---|---|---|---|---|---|
ksp-master-1 | 192.168.9.131 | 8 | 16 | 40 | 100 | k8s-maître |
ksp-master-2 | 192.168.9.132 | 8 | 16 | 40 | 100 | k8s-maître |
ksp-master-3 | 192.168.9.133 | 8 | 16 | 40 | 100 | k8s-maître |
total | 3 | 24 | 48 | 120 | 300 |
L'environnement de combat réel implique des informations sur la version du logiciel
-
Système d'exploitation : openEuler 22.03 LTS SP3 x64
-
K8 : v1.28.8
-
Conteneur:1.7.13
-
Clé Kube : v3.1.1
1. Configuration de base du système d'exploitation
Veuillez noter que les opérations suivantes doivent être effectuées sur tous les serveurs, sauf indication contraire. Cet article sélectionne uniquement le nœud Master-1 pour la démonstration et suppose que les autres serveurs ont été configurés et configurés de la même manière.
1.1 Configurer le nom d'hôte
hostnamectl hostname ksp-master-1
1.2 Configurer le DNS
echo "nameserver 114.114.114.114" > /etc/resolv.conf
1.3 Configurer le fuseau horaire du serveur
- Configurez le fuseau horaire du serveur sur Asie/Shanghai .
timedatectl set-timezone Asia/Shanghai
1.4 Configurer la synchronisation de l'heure
- Installez Chrony comme logiciel de synchronisation de l'heure
yum install chrony
- Editez le fichier de configuration
/etc/chrony.conf
et modifiez la configuration du serveur ntp
vi /etc/chrony.conf
# 删除所有的 pool 配置
pool pool.ntp.org iburst
# 增加国内的 ntp 服务器,或是指定其他常用的时间服务器
pool cn.pool.ntp.org iburst
# 上面的手工操作,也可以使用 sed 自动替换
sed -i 's/^pool pool.*/pool cn.pool.ntp.org iburst/g' /etc/chrony.conf
- Redémarrez et configurez le service chrony pour qu'il démarre automatiquement au démarrage
systemctl enable chronyd --now
- Vérifier l'état de synchronisation Chrony
# 执行查看命令
chronyc sourcestats -v
# 正常的输出结果如下
[root@ksp-master-1 ~]# chronyc sourcestats -v
.- Number of sample points in measurement set.
/ .- Number of residual runs with same sign.
| / .- Length of measurement set (time).
| | / .- Est. clock freq error (ppm).
| | | / .- Est. error in freq.
| | | | / .- Est. offset.
| | | | | | On the -.
| | | | | | samples. \
| | | | | | |
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev
==============================================================================
111.230.189.174 18 11 977 -0.693 6.795 -1201us 2207us
electrode.felixc.at 18 10 917 +2.884 8.258 -31ms 2532us
tick.ntp.infomaniak.ch 14 7 720 +2.538 23.906 +6176us 4711us
time.cloudflare.com 18 7 913 +0.633 9.026 -2543us 3142us
1.5 Désactivez le pare-feu du système
systemctl stop firewalld && systemctl disable firewalld
1.6 Désactiver SELinux
Le système minimalement installé d'openEuler 22.03 SP3 a SELinux activé par défaut Afin de réduire les problèmes, tous nos nœuds désactivent SELinux.
# 使用 sed 修改配置文件,实现彻底的禁用
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 使用命令,实现临时禁用,这一步其实不做也行,KubeKey 会自动配置
setenforce 0
1.7 Installer les dépendances du système
Sur tous les nœuds, exécutez la commande suivante pour installer les packages de dépendances système de base pour Kubernetes.
# 安装 Kubernetes 系统依赖包
yum install curl socat conntrack ebtables ipset ipvsadm
# 安装 tar 包,不装的话后面会报错。openEuler 也是个奇葩,迭代这么多版本了,默认居然还不安装 tar
yum install tar
2. Configuration du disque du système d'exploitation
Le serveur ajoute un nouveau disque de données /dev/sdb pour le stockage persistant de Containerd et K8s Pod .
Afin de satisfaire les souhaits de certains utilisateurs, une expansion dynamique peut être réalisée lorsque la capacité du disque est insuffisante après la mise en production. Cet article utilise LVM pour configurer le disque ( en fait, l'environnement de production que je gère utilise rarement LVM ).
Veuillez noter que les opérations suivantes doivent être effectuées sur tous les nœuds du cluster, sauf indication contraire. Cet article sélectionne uniquement le nœud Master-1 pour la démonstration et suppose que les autres serveurs ont été configurés et configurés de la même manière.
2.1 Utiliser LVM pour configurer les disques
- Créer un PV
pvcreate /dev/sdb
- CréerVG
vgcreate data /dev/sdb
- Créer une VL
# 使用所有空间,VG 名字为 data,LV 名字为 lvdata
lvcreate -l 100%VG data -n lvdata
2.2 Formater le disque
mkfs.xfs /dev/mapper/data-lvdata
2.3 Montage du disque
- Montage manuel
mkdir /data
mount /dev/mapper/data-lvdata /data/
- Monter automatiquement au démarrage
tail -1 /etc/mtab >> /etc/fstab
2.4 Créer un répertoire de données
- Créer le répertoire racine des données locales OpenEBS
mkdir -p /data/openebs/local
- Créer un répertoire de données Containerd
mkdir -p /data/containerd
- Créer une connexion logicielle au répertoire de données Containerd
ln -s /data/containerd /var/lib/containerd
Remarque : Jusqu'à la version v3.1.1, KubeKey ne prenait pas en charge la modification du répertoire de données de Containerd pendant le déploiement. Vous pouvez uniquement utiliser ce lien symbolique de répertoire pour contourner le problème afin d'augmenter l'espace de stockage ( Containerd peut également être installé manuellement à l'avance ).
3. Installez et déployez les K8
3.1 Télécharger KubeKey
Cet article utilise le nœud master-1 comme nœud de déploiement et télécharge la dernière version du fichier binaire KubeKey ( v3.1.1 ) sur le serveur. Le numéro de version spécifique de KubeKey peut être consulté sur la page de version de KubeKey .
- Téléchargez la dernière version de KubeKey
mkdir ~/kubekey
cd ~/kubekey/
# 选择中文区下载(访问 GitHub 受限时使用)
export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | sh -
- Le résultat d'exécution correct est le suivant
[root@ksp-master-1 ~]# mkdir ~/kubekey
[root@ksp-master-1 ~]# cd ~/kubekey/
[root@ksp-master-1 kubekey]# export KKZONE=cn
[root@ksp-master-1 kubekey]# curl -sfL https://get-kk.kubesphere.io | sh -
Downloading kubekey v3.1.1 from https://kubernetes.pek3b.qingstor.com/kubekey/releases/download/v3.1.1/kubekey-v3.1.1-linux-amd64.tar.gz ...
Kubekey v3.1.1 Download Complete!
[root@ksp-master-1 kubekey]# ll -h
total 114M
-rwxr-xr-x. 1 root root 79M Apr 16 12:30 kk
-rw-r--r--. 1 root root 36M Apr 25 09:37 kubekey-v3.1.1-linux-amd64.tar.gz
- Afficher la liste des versions de Kubernetes prises en charge par KubeKey
./kk version --show-supported-k8s
[root@ksp-master-1 kubekey]# ./kk version --show-supported-k8s
v1.19.0
......(受限于篇幅,中间的不展示,请读者根据需求查看)
v1.28.0
v1.28.1
v1.28.2
v1.28.3
v1.28.4
v1.28.5
v1.28.6
v1.28.7
v1.28.8
v1.29.0
v1.29.1
v1.29.2
v1.29.3
Remarque : Les résultats de sortie sont ceux pris en charge par KubeKey, mais cela ne signifie pas que KubeSphere et les autres K8 peuvent également parfaitement les prendre en charge. Cet article utilise uniquement KubeKey pour déployer les K8, il n'est donc pas nécessaire de prendre en compte la compatibilité des versions.
La version K8s prise en charge par KubeKey est encore relativement nouvelle. Cet article choisit la v1.28.8 . Pour l'environnement de production, vous pouvez choisir la v1.26.15 ou d'autres versions avec un nombre pair de versions mineures et plus de 5 versions de correctifs . Il n'est pas recommandé de choisir une version trop ancienne. Après tout, la v1.30 est sortie.
3.2 Créer un fichier de configuration de déploiement de cluster K8s
- Créer un fichier de configuration de cluster
Cet article a choisi K8s v1.28.8 . Par conséquent, le nom du fichier de configuration spécifié est k8s-v1288.yaml . S'il n'est pas spécifié, le nom du fichier par défaut est config-sample.yaml .
./kk create config -f k8s-v1288.yaml --with-kubernetes v1.28.8
Remarque : Le fichier de configuration par défaut généré a beaucoup de contenu, je ne le montrerai donc pas en détail ici. Pour des paramètres de configuration plus détaillés, veuillez vous référer à l'exemple de configuration officiel .
- Modifier le fichier de configuration
L'exemple de cet article utilise simultanément trois nœuds comme plan de contrôle, etcd et nœuds de travail.
Editez le fichier de configuration k8s-v1288.yaml
, modifiez principalement la configuration associée du genre : Section Cluster
Modifiez les informations sur les hôtes et les groupes de rôles dans la section kind: Cluster . Les instructions de modification sont les suivantes.
- hôtes : spécifiez l'adresse IP du nœud, l'utilisateur ssh, le mot de passe ssh, le port ssh
- roleGroups : spécifiez 3 nœuds etcd et de plan de contrôle, et réutilisez la même machine comme 3 nœuds de travail
- internalLoadbalancer : activer l'équilibreur de charge HAProxy intégré
- Domaine : nom de domaine personnalisé lb.opsxlab.cn s'il n'y a pas d'exigences particulières, vous pouvez utiliser la valeur par défaut lb.kubesphere.local.
- clusterName : personnalisez opsxlab.cn . S'il n'y a pas d'exigences particulières, vous pouvez utiliser la valeur par défaut cluster.local.
- autoRenewCerts : ce paramètre peut réaliser le renouvellement automatique de l'expiration du certificat, la valeur par défaut est true
- conteneurManager : utilisation de conteneurd
L'exemple modifié complet est le suivant :
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
name: sample
spec:
hosts:
- {name: ksp-master-1, address: 192.168.9.131, internalAddress: 192.168.9.131, user: root, password: "OpsXlab@2024"}
- {name: ksp-master-2, address: 192.168.9.132, internalAddress: 192.168.9.132, user: root, password: "OpsXlab@2024"}
- {name: ksp-master-3, address: 192.168.9.133, internalAddress: 192.168.9.133, user: root, password: "OpsXlab@2024"}
roleGroups:
etcd:
- ksp-master-1
- ksp-master-2
- ksp-master-3
control-plane:
- ksp-master-1
- ksp-master-2
- ksp-master-3
worker:
- ksp-master-1
- ksp-master-2
- ksp-master-3
controlPlaneEndpoint:
## Internal loadbalancer for apiservers
internalLoadbalancer: haproxy
domain: lb.opsxlab.cn
address: ""
port: 6443
kubernetes:
version: v1.28.8
clusterName: opsxlab.cn
autoRenewCerts: true
containerManager: containerd
etcd:
type: kubekey
network:
plugin: calico
kubePodsCIDR: 10.233.64.0/18
kubeServiceCIDR: 10.233.0.0/18
## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
multusCNI:
enabled: false
registry:
privateRegistry: ""
namespaceOverride: ""
registryMirrors: []
insecureRegistries: []
addons: []
3.3 Déployer les K8
Ensuite, nous exécutons la commande suivante pour déployer les K8 à l'aide du fichier de configuration généré ci-dessus.
export KKZONE=cn
./kk create cluster -f k8s-v1288.yaml
Une fois la commande ci-dessus exécutée, KubeKey vérifiera d'abord les dépendances et autres exigences détaillées pour le déploiement des K8. Après avoir réussi le contrôle, vous serez invité à confirmer l'installation. Entrez oui et appuyez sur ENTRÉE pour poursuivre le déploiement.
[root@ksp-master-1 kubekey]# ./kk create cluster -f k8s-v1288.yaml
_ __ _ _ __
| | / / | | | | / /
| |/ / _ _| |__ ___| |/ / ___ _ _
| \| | | | '_ \ / _ \ \ / _ \ | | |
| |\ \ |_| | |_) | __/ |\ \ __/ |_| |
\_| \_/\__,_|_.__/ \___\_| \_/\___|\__, |
__/ |
|___/
10:45:28 CST [GreetingsModule] Greetings
10:45:28 CST message: [ksp-master-3]
Greetings, KubeKey!
10:45:28 CST message: [ksp-master-1]
Greetings, KubeKey!
10:45:28 CST message: [ksp-master-2]
Greetings, KubeKey!
10:45:28 CST success: [ksp-master-3]
10:45:28 CST success: [ksp-master-1]
10:45:28 CST success: [ksp-master-2]
10:45:28 CST [NodePreCheckModule] A pre-check on nodes
10:45:31 CST success: [ksp-master-3]
10:45:31 CST success: [ksp-master-1]
10:45:31 CST success: [ksp-master-2]
10:45:31 CST [ConfirmModule] Display confirmation form
+--------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+
| name | sudo | curl | openssl | ebtables | socat | ipset | ipvsadm | conntrack | chrony | docker | containerd | nfs client | ceph client | glusterfs client | time |
+--------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+
| ksp-master-1 | y | y | y | y | y | y | y | y | y | | | | | | CST 10:45:31 |
| ksp-master-2 | y | y | y | y | y | y | y | y | y | | | | | | CST 10:45:31 |
| ksp-master-3 | y | y | y | y | y | y | y | y | y | | | | | | CST 10:45:31 |
+--------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+
This is a simple check of your environment.
Before installation, ensure that your machines meet all requirements specified at
https://github.com/kubesphere/kubekey#requirements-and-recommendations
Continue this installation? [yes/no]:
Avis:
- Les trois clients liés au stockage, le client nfs, le client ceph et le client glusterfs, ne sont pas installés séparément plus tard dans l'implémentation réelle du stockage d'accueil.
- docker et containersd seront automatiquement installés selon le type de containersManager sélectionné dans le fichier de configuration .
Le déploiement prend environ 10 à 20 minutes. Cela dépend de la vitesse du réseau et de la configuration de la machine. Ce déploiement prend 20 minutes.
Une fois le déploiement terminé, vous devriez voir une sortie similaire à celle suivante sur votre terminal.
10:59:25 CST [ConfigureKubernetesModule] Configure kubernetes
10:59:25 CST success: [ksp-master-1]
10:59:25 CST skipped: [ksp-master-2]
10:59:25 CST skipped: [ksp-master-3]
10:59:25 CST [ChownModule] Chown user $HOME/.kube dir
10:59:26 CST success: [ksp-master-3]
10:59:26 CST success: [ksp-master-2]
10:59:26 CST success: [ksp-master-1]
10:59:26 CST [AutoRenewCertsModule] Generate k8s certs renew script
10:59:27 CST success: [ksp-master-2]
10:59:27 CST success: [ksp-master-3]
10:59:27 CST success: [ksp-master-1]
10:59:27 CST [AutoRenewCertsModule] Generate k8s certs renew service
10:59:28 CST success: [ksp-master-3]
10:59:28 CST success: [ksp-master-2]
10:59:28 CST success: [ksp-master-1]
10:59:28 CST [AutoRenewCertsModule] Generate k8s certs renew timer
10:59:29 CST success: [ksp-master-2]
10:59:29 CST success: [ksp-master-3]
10:59:29 CST success: [ksp-master-1]
10:59:29 CST [AutoRenewCertsModule] Enable k8s certs renew service
10:59:29 CST success: [ksp-master-3]
10:59:29 CST success: [ksp-master-2]
10:59:29 CST success: [ksp-master-1]
10:59:29 CST [SaveKubeConfigModule] Save kube config as a configmap
10:59:29 CST success: [LocalHost]
10:59:29 CST [AddonsModule] Install addons
10:59:29 CST success: [LocalHost]
10:59:29 CST Pipeline[CreateClusterPipeline] execute successfully
Installation is complete.
Please check the result using the command:
kubectl get pod -A
4. Vérifiez le cluster K8s
4.1 Ligne de commande kubectl pour vérifier l'état du cluster
Cette section ne présente que brièvement l'état de base, qui n'est pas exhaustif. Vous pouvez découvrir et explorer plus de détails par vous-même.
- Afficher les informations sur le nœud de cluster
Exécutez la commande kubectl sur le nœud master-1 pour obtenir la liste des nœuds disponibles sur le cluster K8s.
kubectl get nodes -o wide
Comme vous pouvez le voir dans le résultat, le cluster K8s actuel dispose de trois nœuds disponibles, l'adresse IP interne du nœud, le rôle du nœud, le numéro de version K8s du nœud, l'exécution et le numéro de version du conteneur, le type de système d'exploitation, la version du noyau et d'autres informations.
[root@ksp-master-1 kubekey]# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
ksp-master-1 Ready control-plane,worker 9m43s v1.28.8 192.168.9.131 <none> openEuler 22.03 (LTS-SP3) 5.10.0-182.0.0.95.oe2203sp3.x86_64 containerd://1.7.13
ksp-master-2 Ready control-plane,worker 8m8s v1.28.8 192.168.9.132 <none> openEuler 22.03 (LTS-SP3) 5.10.0-182.0.0.95.oe2203sp3.x86_64 containerd://1.7.13
ksp-master-3 Ready control-plane,worker 8m9s v1.28.8 192.168.9.133 <none> openEuler 22.03 (LTS-SP3) 5.10.0-182.0.0.95.oe2203sp3.x86_64 containerd://1.7.13
- Afficher la liste des modules
Entrez la commande suivante pour obtenir la liste des pods exécutés sur le cluster K8s.
kubectl get pods -o wide -A
Comme vous pouvez le voir dans le résultat, tous les pods sont en cours d'exécution.
[root@ksp-master-1 kubekey]# kubectl get pod -A -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE
kube-system calico-kube-controllers-64f6cb8db5-fsgnq 1/1 Running 0 4m59s 10.233.84.2 ksp-master-1
kube-system calico-node-5hkm4 1/1 Running 0 4m59s 192.168.9.133 ksp-master-3
kube-system calico-node-wqz9s 1/1 Running 0 4m59s 192.168.9.132 ksp-master-2
kube-system calico-node-zzr5n 1/1 Running 0 4m59s 192.168.9.131 ksp-master-1
kube-system coredns-76dd97cd74-66k8z 1/1 Running 0 6m22s 10.233.84.1 ksp-master-1
kube-system coredns-76dd97cd74-94kvl 1/1 Running 0 6m22s 10.233.84.3 ksp-master-1
kube-system kube-apiserver-ksp-master-1 1/1 Running 0 6m39s 192.168.9.131 ksp-master-1
kube-system kube-apiserver-ksp-master-2 1/1 Running 0 4m52s 192.168.9.132 ksp-master-2
kube-system kube-apiserver-ksp-master-3 1/1 Running 0 5m9s 192.168.9.133 ksp-master-3
kube-system kube-controller-manager-ksp-master-1 1/1 Running 0 6m39s 192.168.9.131 ksp-master-1
kube-system kube-controller-manager-ksp-master-2 1/1 Running 0 4m58s 192.168.9.132 ksp-master-2
kube-system kube-controller-manager-ksp-master-3 1/1 Running 0 5m5s 192.168.9.133 ksp-master-3
kube-system kube-proxy-2xpq4 1/1 Running 0 5m3s 192.168.9.131 ksp-master-1
kube-system kube-proxy-9frmd 1/1 Running 0 5m3s 192.168.9.133 ksp-master-3
kube-system kube-proxy-bhg2k 1/1 Running 0 5m3s 192.168.9.132 ksp-master-2
kube-system kube-scheduler-ksp-master-1 1/1 Running 0 6m39s 192.168.9.131 ksp-master-1
kube-system kube-scheduler-ksp-master-2 1/1 Running 0 4m59s 192.168.9.132 ksp-master-2
kube-system kube-scheduler-ksp-master-3 1/1 Running 0 5m5s 192.168.9.133 ksp-master-3
kube-system nodelocaldns-gl6dc 1/1 Running 0 6m22s 192.168.9.131 ksp-master-1
kube-system nodelocaldns-q45jf 1/1 Running 0 5m9s 192.168.9.133 ksp-master-3
kube-system nodelocaldns-rskk5 1/1 Running 0 5m8s 192.168.9.132 ksp-master-2
- Afficher la liste des images
Entrez la commande suivante pour obtenir la liste des images téléchargées sur le nœud du cluster K8s.
[root@ksp-master-1 kubekey]# crictl images ls
IMAGE TAG IMAGE ID SIZE
registry.cn-beijing.aliyuncs.com/kubesphereio/cni v3.27.3 6527a35581401 88.4MB
registry.cn-beijing.aliyuncs.com/kubesphereio/coredns 1.9.3 5185b96f0becf 14.8MB
registry.cn-beijing.aliyuncs.com/kubesphereio/k8s-dns-node-cache 1.22.20 ff71cd4ea5ae5 30.5MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-apiserver v1.28.8 e70a71eaa5605 34.7MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controller-manager v1.28.8 e5ae3e4dc6566 33.5MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controllers v3.27.3 3e4fd05c0c1c0 33.4MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-proxy v1.28.8 5ce97277076c6 28.1MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-scheduler v1.28.8 ad3260645145d 18.7MB
registry.cn-beijing.aliyuncs.com/kubesphereio/node v3.27.3 5c6ffd2b2a1d0 116MB
registry.cn-beijing.aliyuncs.com/kubesphereio/pause 3.9 e6f1816883972 321kB
Jusqu'à présent, nous avons achevé le déploiement d'un cluster K8 minimal avec trois nœuds maîtres et nœuds de travail réutilisés.
Ensuite, nous déploierons un simple serveur Web Nginx sur le cluster K8s pour tester et vérifier si le cluster K8s est normal.
5. Déployer des ressources de test
Cet exemple utilise des outils de ligne de commande pour déployer un serveur Web Nginx sur un cluster K8s.
5.1 Créer un déploiement Nginx
Exécutez la commande suivante pour créer un déploiement qui déploie le serveur Web Nginx. Dans cet exemple, nous allons créer un pod avec deux répliques basées sur l'image nginx:alpine.
kubectl create deployment nginx --image=nginx:alpine --replicas=2
5.2 Créer un service Nginx
Créez un nouveau service K8s avec le nom de service nginx, le type de service Nodeport et le port de service externe 80.
kubectl create service nodeport nginx --tcp=80:80
5.3 Vérifier le déploiement et le pod de Nginx
- Exécutez les commandes suivantes pour afficher les ressources de déploiement et de pod créées.
kubectl get deployment -o wide
kubectl get pods -o wide
- Visualisez les résultats comme suit :
[root@ksp-master-1 kubekey]# kubectl get deployment -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
nginx 2/2 2 2 20s nginx nginx:alpine app=nginx
[root@ksp-master-1 kubekey]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-6c557cc74d-tbw9c 1/1 Running 0 23s 10.233.102.187 ksp-master-2 <none> <none>
nginx-6c557cc74d-xzzss 1/1 Running 0 23s 10.233.103.148 ksp-master-1 <none> <none>
5.4 Vérifier le service Nginx
Exécutez la commande suivante pour afficher la liste des services disponibles. Dans la liste, nous pouvons voir que le type de service nginx est Nodeport et que le port 30619 est ouvert sur l'hôte Kubernetes.
kubectl get svc -o wide
Visualisez les résultats comme suit :
[root@ksp-master-1 kubekey]# kubectl get svc -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes ClusterIP 10.233.0.1 <none> 443/TCP 4d22h <none>
nginx NodePort 10.233.14.48 <none> 80:30619/TCP 5s app=nginx
5.5 Service de vérification
Exécutez la commande suivante pour accéder au service Nginx déployé et vérifiez si le service est déployé avec succès.
- Vérifier l'accès direct au Pod
curl 10.233.102.187
# 访问结果如下
[root@ks-master-1 ~]# curl 10.233.102.187
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
- Vérifier l'accès au service
curl 10.233.14.48
# 访问结果同上,略
- Vérifier l'accès à Nodeport
curl 192.168.9.131:30619
# 访问结果同上,略
6. Scripts Shell automatisés
Toutes les étapes de l'article ont été compilées dans des scripts automatisés et ne sont pas présentées dans ce document en raison de contraintes d'espace.
7. Résumé
Cet article partage le processus détaillé et les précautions à prendre pour déployer un cluster K8s v1.28.8 à l'aide de KubeKey , un outil développé par KubeSphere, sur le système d'exploitation openEuler 22.03 LTS SP3.
Les principaux contenus sont résumés comme suit :
- Configuration de base du système d'exploitation openEuler 22.03 LTS SP3
- Configuration de création de disque LVM sur le système d'exploitation openEuler 22.03 LTS SP3
- Utilisez KubeKey pour déployer le cluster haute disponibilité K8
- Test de vérification une fois le déploiement du cluster K8 terminé
Clause de non-responsabilité:
- Le niveau de l'auteur est limité. Bien qu'il ait effectué de nombreuses vérifications et contrôles et fait de son mieux pour garantir l'exactitude du contenu, il peut encore y avoir des omissions . N'hésitez pas à nous donner les conseils d'experts du secteur.
- Le contenu décrit dans cet article a uniquement été vérifié et testé dans des environnements de combat réels. Les lecteurs peuvent en tirer des leçons et des leçons, mais il est strictement interdit de l'utiliser directement dans des environnements de production . L'auteur n'est pas responsable des problèmes causés par cela !
RustDesk suspend ses services nationaux en raison d'une fraude généralisée Apple lance la puce M4 Taobao (taobao.com) redémarre le travail d'optimisation de la version Web Les lycéens créent leur propre langage de programmation open source comme cadeau de passage à l'âge adulte - Commentaires critiques des internautes : S'appuyer sur le défense Yunfeng a démissionné d'Alibaba et prévoit de produire à l'avenir La destination pour les programmeurs de jeux indépendants . Visual Studio Code 1.89 publie Java 17. C'est la version Java LTS la plus couramment utilisée. Windows 10 a une part de marché de 70. %, et Windows 11 continue de décliner | Google soutient Hongmeng pour prendre le relais ; l'open source Rabbit R1 prend en charge l'anxiété et les ambitions de Microsoft ;Cet article est publié par OpenWrite , un blog qui publie plusieurs articles !