KubeKey setzt K8s v1.28.8 in der Praxis ein

In einigen Produktionsumgebungen benötigen wir nur einen nativen K8s-Cluster und es ist nicht erforderlich, eine grafische Verwaltungskonsole wie KubeSphere bereitzustellen. In unserem bestehenden Technologie-Stack sind wir es gewohnt, KubeKey für die Bereitstellung von KubeSphere- und K8s-Clustern zu verwenden. Heute zeige ich Ihnen, wie Sie mit KubeKey auf openEuler 22.03 LTS SP3 einen reinen K8s-Cluster bereitstellen .

Tatsächliche Serverkonfiguration (Architektur 1:1-Nachbildung einer kleinen Produktionsumgebung, Konfiguration ist etwas anders)

CPU-Name IP CPU Erinnerung Systemfestplatte Datenträger verwenden
ksp-master-1 192.168.9.131 8 16 40 100 k8s-master
ksp-master-2 192.168.9.132 8 16 40 100 k8s-master
ksp-master-3 192.168.9.133 8 16 40 100 k8s-master
gesamt 3 24 48 120 300

Die tatsächliche Kampfumgebung umfasst Informationen zur Softwareversion

  • Betriebssystem: openEuler 22.03 LTS SP3 x64

  • K8s: v1.28.8

  • Containerd: 1.7.13

  • KubeKey: v3.1.1

1. Grundkonfiguration des Betriebssystems

Bitte beachten Sie, dass die folgenden Vorgänge auf allen Servern durchgeführt werden müssen, sofern nicht anders angegeben. In diesem Artikel wird nur der Master-1-Knoten zur Demonstration ausgewählt und es wird davon ausgegangen, dass die anderen Server auf die gleiche Weise konfiguriert und eingerichtet wurden.

1.1 Hostnamen konfigurieren

hostnamectl hostname ksp-master-1

1.2 DNS konfigurieren

echo "nameserver 114.114.114.114" > /etc/resolv.conf

1.3 Serverzeitzone konfigurieren

  • Konfigurieren Sie die Serverzeitzone auf Asia/Shanghai .
timedatectl set-timezone Asia/Shanghai

1.4 Zeitsynchronisation konfigurieren

  • Installieren Sie chrony als Zeitsynchronisierungssoftware
yum install chrony 
  • Bearbeiten Sie die Konfigurationsdatei /etc/chrony.confund ändern Sie die NTP-Serverkonfiguration
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
  • Starten Sie den Chrony-Dienst neu und stellen Sie ihn so ein, dass er beim Booten automatisch startet
systemctl enable chronyd --now
  • Überprüfen Sie den Synchronisierungsstatus
# 执行查看命令
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 Schalten Sie die System-Firewall aus

systemctl stop firewalld && systemctl disable firewalld

1.6 SELinux deaktivieren

Auf dem minimal installierten System von openEuler 22.03 SP3 ist SELinux standardmäßig aktiviert. Um Probleme zu reduzieren, deaktivieren alle unsere Knoten SELinux.

# 使用 sed 修改配置文件,实现彻底的禁用
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 使用命令,实现临时禁用,这一步其实不做也行,KubeKey 会自动配置
setenforce 0

1.7 Systemabhängigkeiten installieren

Führen Sie auf allen Knoten den folgenden Befehl aus, um die grundlegenden Systemabhängigkeitspakete für Kubernetes zu installieren.

# 安装 Kubernetes 系统依赖包
yum install curl socat conntrack ebtables ipset ipvsadm

# 安装 tar 包,不装的话后面会报错。openEuler 也是个奇葩,迭代这么多版本了,默认居然还不安装 tar
yum install tar

2. Festplattenkonfiguration des Betriebssystems

Der Server fügt einen neuen Datenträger /dev/sdb für die dauerhafte Speicherung von Containerd und K8s Pod hinzu.

Um den Wünschen einiger Benutzer gerecht zu werden, kann eine dynamische Erweiterung erreicht werden, wenn die Festplattenkapazität nach dem Hochfahren der Produktion nicht ausreicht. In diesem Artikel wird LVM zum Konfigurieren der Festplatte verwendet ( tatsächlich wird LVM in der von mir verwalteten Produktionsumgebung selten verwendet ).

Bitte beachten Sie, dass die folgenden Vorgänge auf allen Knoten im Cluster durchgeführt werden müssen, sofern nicht anders angegeben. In diesem Artikel wird nur der Master-1- Knoten zur Demonstration ausgewählt und es wird davon ausgegangen, dass die anderen Server auf die gleiche Weise konfiguriert und eingerichtet wurden.

2.1 Verwenden Sie LVM zum Konfigurieren von Festplatten

  • PV erstellen
 pvcreate /dev/sdb
  • ErstellenVG
vgcreate data /dev/sdb
  • LV erstellen
# 使用所有空间,VG 名字为 data,LV 名字为 lvdata
lvcreate -l 100%VG data -n lvdata

2.2 Datenträger formatieren

mkfs.xfs /dev/mapper/data-lvdata

2.3 Festplattenmontage

  • Manuelle Montage
mkdir /data
mount /dev/mapper/data-lvdata /data/
  • Beim Booten automatisch mounten
tail -1 /etc/mtab >> /etc/fstab

2.4 Datenverzeichnis erstellen

  • Erstellen Sie ein lokales OpenEBS- Datenstammverzeichnis
mkdir -p /data/openebs/local
  • Erstellen Sie ein Containerd -Datenverzeichnis
mkdir -p /data/containerd
  • Erstellen Sie eine Soft-Verbindung zum Containerd-Datenverzeichnis
ln -s /data/containerd /var/lib/containerd

Hinweis: Bis Version v3.1.1 hat KubeKey das Ändern des Datenverzeichnisses von Containerd während der Bereitstellung nicht unterstützt. Sie können diesen Verzeichnis-Softlink nur als Problemumgehung verwenden, um den Speicherplatz zu erhöhen ( Containerd kann auch manuell im Voraus installiert werden ).

3. K8s installieren und bereitstellen

3.1 Laden Sie KubeKey herunter

In diesem Artikel wird der Master-1- Knoten als Bereitstellungsknoten verwendet und die neueste Version der KubeKey-Binärdatei ( v3.1.1 ) auf den Server heruntergeladen. Die spezifische KubeKey-Versionsnummer kann auf der KubeKey-Release-Seite eingesehen werden .

  • Laden Sie die neueste Version von KubeKey herunter
mkdir ~/kubekey
cd ~/kubekey/

# 选择中文区下载(访问 GitHub 受限时使用)
export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | sh -
  • Das korrekte Ausführungsergebnis ist wie folgt
[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
  • Sehen Sie sich die Liste der von KubeKey unterstützten Kubernetes-Versionen an./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

Hinweis: Die Ausgabeergebnisse werden von KubeKey unterstützt. Dies bedeutet jedoch nicht, dass KubeSphere und andere K8s dies auch perfekt unterstützen können. In diesem Artikel wird KubeKey nur zum Bereitstellen von K8s verwendet, daher besteht keine Notwendigkeit, die Versionskompatibilität zu berücksichtigen.

Die von KubeKey unterstützte K8s-Version ist noch relativ neu. In diesem Artikel wird v1.28.8 für die Produktionsumgebung ausgewählt. Sie können v1.26.15 oder andere Versionen mit einer geraden Anzahl von Nebenversionen und mehr als 5 Patchversionen auswählen . Es wird nicht empfohlen, eine zu alte Version zu wählen. Schließlich wurde v1.30 veröffentlicht.

3.2 Erstellen Sie eine K8s-Cluster-Bereitstellungskonfigurationsdatei

  1. Erstellen Sie eine Cluster-Konfigurationsdatei

In diesem Artikel wurde K8s v1.28.8 ausgewählt . Daher lautet der angegebene Name der Konfigurationsdatei k8s-v1288.yaml . Wenn nicht angegeben, lautet der Standarddateiname config-sample.yaml .

./kk create config -f k8s-v1288.yaml --with-kubernetes v1.28.8

Hinweis: Die generierte Standardkonfigurationsdatei hat viel Inhalt, daher werde ich sie hier nicht im Detail zeigen. Ausführlichere Konfigurationsparameter finden Sie im offiziellen Konfigurationsbeispiel .

  1. Konfigurationsdatei ändern

Das Beispiel in diesem Artikel verwendet drei Knoten gleichzeitig als Steuerebene, etcd und Worker-Knoten.

Bearbeiten Sie die Konfigurationsdatei. k8s-v1288.yamlÄndern Sie hauptsächlich die zugehörige Konfiguration wie folgt: Abschnitt „Cluster“.

Ändern Sie die Host- und Rollengruppeninformationen im Abschnitt „Kind: Cluster“ . Die Änderungsanweisungen lauten wie folgt.

  • Hosts: Geben Sie die IP des Knotens, den SSH-Benutzer, das SSH-Passwort und den SSH-Port an
  • Rollengruppen: Geben Sie 3 etcd- und Control-Plane-Knoten an und verwenden Sie dieselbe Maschine als 3 Worker-Knoten wieder
  • internalLoadbalancer: Aktivieren Sie den integrierten HAProxy Load Balancer
  • Domäne: Benutzerdefinierter Domänenname lb.opsxlab.cn . Wenn keine besonderen Anforderungen bestehen, können Sie den Standardwert lb.kubesphere.local verwenden.
  • ClusterName: Passen Sie opsxlab.cn an . Wenn keine besonderen Anforderungen bestehen, können Sie den Standardwert „ Cluster.local“ verwenden.
  • autoRenewCerts: Dieser Parameter kann die automatische Erneuerung des Zertifikatsablaufs realisieren, der Standardwert ist true
  • ContainerManager: Containerd verwenden

Das vollständige modifizierte Beispiel lautet wie folgt:

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 K8s bereitstellen

Als Nächstes führen wir den folgenden Befehl aus, um K8s mithilfe der oben generierten Konfigurationsdatei bereitzustellen.

export KKZONE=cn
./kk create cluster -f k8s-v1288.yaml

Nachdem der obige Befehl ausgeführt wurde, prüft KubeKey zunächst die Abhängigkeiten und andere detaillierte Anforderungen für die Bereitstellung von K8s. Nach bestandener Prüfung werden Sie aufgefordert, die Installation zu bestätigen. Geben Sie „Ja“ ein und drücken Sie die EINGABETASTE, um mit der Bereitstellung fortzufahren.

[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]:

Beachten:

  • Die drei speicherbezogenen Clients, NFS-Client, Ceph-Client und Glusterfs-Client, werden nicht installiert. Wir werden sie später in der tatsächlichen Implementierung des Docking-Speichers separat installieren.
  • Docker und Containerd werden automatisch entsprechend dem in der Konfigurationsdatei ausgewählten ContainerManager- Typ installiert .

Die Bereitstellung dauert etwa 10 bis 20 Minuten. Dies hängt von der Netzwerkgeschwindigkeit und der Maschinenkonfiguration ab.

Sobald die Bereitstellung abgeschlossen ist, sollten Sie auf Ihrem Terminal eine Ausgabe ähnlich der folgenden sehen.

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. Überprüfen Sie den K8s-Cluster

4.1 Kubectl-Befehlszeile zum Überprüfen des Clusterstatus

In diesem Abschnitt wird nur kurz auf den Grundstatus eingegangen, der keinen Anspruch auf Vollständigkeit erhebt. Weitere Details können Sie selbst erleben und erkunden.

  • Informationen zum Clusterknoten anzeigen

Führen Sie den Befehl kubectl auf dem Master-1-Knoten aus, um die Liste der verfügbaren Knoten im K8s-Cluster abzurufen.

kubectl get nodes -o wide

Wie Sie in der Ausgabe sehen können, verfügt der aktuelle K8s-Cluster über drei verfügbare Knoten, die interne IP des Knotens, die Knotenrolle, die K8s-Versionsnummer des Knotens, die Containerlaufzeit und -versionsnummer, den Betriebssystemtyp, die Kernel-Version und andere Informationen.

[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
  • Pod-Liste anzeigen

Geben Sie den folgenden Befehl ein, um die Liste der Pods abzurufen, die im K8s-Cluster ausgeführt werden.

kubectl get pods -o wide -A

Wie Sie in der Ausgabe sehen können, laufen alle Pods.

[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
  • Bildliste anzeigen

Geben Sie den folgenden Befehl ein, um die Liste der Bilder abzurufen, die auf den K8s-Clusterknoten heruntergeladen wurden.

[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

Bisher haben wir die Bereitstellung eines minimalen K8s-Clusters mit drei Master-Knoten und wiederverwendeten Worker-Knoten abgeschlossen.

Als Nächstes stellen wir einen einfachen Nginx-Webserver auf dem K8s-Cluster bereit, um zu testen und zu überprüfen, ob der K8s-Cluster normal ist.

5. Stellen Sie Testressourcen bereit

In diesem Beispiel werden Befehlszeilentools verwendet, um einen Nginx-Webserver auf einem K8s-Cluster bereitzustellen.

5.1 Nginx-Bereitstellung erstellen

Führen Sie den folgenden Befehl aus, um eine Bereitstellung zu erstellen, die den Nginx-Webserver bereitstellt. In diesem Beispiel erstellen wir einen Pod mit zwei Replikaten basierend auf dem nginx:alpine-Image.

kubectl create deployment nginx --image=nginx:alpine --replicas=2

5.2 Nginx-Dienst erstellen

Erstellen Sie einen neuen K8s-Dienst mit dem Dienstnamen nginx, dem Diensttyp Nodeport und dem externen Dienstport 80.

kubectl create service nodeport nginx --tcp=80:80

5.3 Überprüfen Sie die Nginx-Bereitstellung und den Pod

  • Führen Sie die folgenden Befehle aus, um die erstellten Bereitstellungs- und Pod-Ressourcen anzuzeigen.
kubectl get deployment -o wide
kubectl get pods -o wide
  • Sehen Sie sich die Ergebnisse wie folgt an:
[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 Überprüfen Sie den Nginx-Dienst

Führen Sie den folgenden Befehl aus, um die Liste der verfügbaren Dienste anzuzeigen. In der Liste können wir sehen, dass der Nginx-Diensttyp Nodeport ist und Port 30619 auf dem Kubernetes-Host geöffnet ist.

kubectl get svc -o wide

Sehen Sie sich die Ergebnisse wie folgt an:

[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 Verifizierungsdienst

Führen Sie den folgenden Befehl aus, um auf den bereitgestellten Nginx-Dienst zuzugreifen und zu überprüfen, ob der Dienst erfolgreich bereitgestellt wurde.

  • Überprüfen Sie den direkten Zugriff auf den 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>
  • Überprüfen Sie den Zugriff auf den Dienst
curl 10.233.14.48

# 访问结果同上,略
  • Überprüfen Sie den Zugriff auf Nodeport
curl 192.168.9.131:30619

# 访问结果同上,略

6. Automatisierte Shell-Skripte

Alle Schritte im Artikel wurden in automatisierten Skripten kompiliert und werden aus Platzgründen in diesem Dokument nicht angezeigt.

7. Zusammenfassung

In diesem Artikel werden der detaillierte Prozess und die Vorsichtsmaßnahmen für die Bereitstellung eines K8s v1.28.8- Clusters mit KubeKey , einem von KubeSphere entwickelten Tool, auf dem Betriebssystem openEuler 22.03 LTS SP3 beschrieben.

Die wesentlichen Inhalte sind wie folgt zusammengefasst:

  • Grundkonfiguration des Betriebssystems openEuler 22.03 LTS SP3
  • Konfiguration der LVM-Festplattenerstellung auf dem Betriebssystem openEuler 22.03 LTS SP3
  • Verwenden Sie KubeKey, um den Hochverfügbarkeitscluster von K8 bereitzustellen
  • Verifizierungstest nach Abschluss der K8s-Clusterbereitstellung

Haftungsausschluss:

  • Das Niveau des Autors ist begrenzt. Obwohl er viele Überprüfungen und Prüfungen durchgeführt und sein Bestes gegeben hat, um die Richtigkeit des Inhalts sicherzustellen, kann es dennoch zu Auslassungen kommen . Lassen Sie sich gerne von Branchenexperten beraten.
  • Der in diesem Artikel beschriebene Inhalt wurde nur in tatsächlichen Kampfumgebungen überprüft und getestet. Der Leser kann daraus lernen und lernen, es ist jedoch strengstens untersagt, ihn direkt in Produktionsumgebungen zu verwenden . Der Autor übernimmt keine Verantwortung für hierdurch verursachte Probleme !

Dieser Artikel wurde von OpenWrite veröffentlicht , einem Blog, der mehrere Artikel veröffentlicht !

RustDesk stellt inländische Dienste wegen grassierendem Betrug ein. Apple veröffentlicht M4-Chip. Taobao (taobao.com) startet die Arbeit zur Optimierung der Webversion neu. Oberstufenschüler erstellen ihre eigene Open-Source-Programmiersprache als Geschenk für das Erwachsenwerden – kritische Kommentare von Internetnutzern: Verlassen Sie sich auf die Verteidigung Yunfeng ist von Alibaba zurückgetreten und plant , in Zukunft Java 17 als Ziel für unabhängige Spieleprogrammierer . Es ist die am häufigsten verwendete Java LTS-Version mit einem Marktanteil von 70 % und Windows 11 gehen weiter zurück. Google unterstützt die Übernahme von Open-Source-Rabbit. Microsoft hat die offene Plattform geschlossen
{{o.name}}
{{m.name}}

Ich denke du magst

Origin my.oschina.net/u/4197945/blog/11105906
Empfohlen
Rangfolge