KubeKey déploie K8s v1.28.8 en pratique

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.confet 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

  1. 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 .

  1. 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 !

Cet article est publié par OpenWrite , un blog qui publie plusieurs articles !

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 ;
{{o.name}}
{{m.nom}}

Je suppose que tu aimes

Origine my.oschina.net/u/4197945/blog/11105906
conseillé
Classement