Installieren Sie das KubeSphere Practical Tutorial unter Ubuntu 22.04

Autor: Lao Z, ein Betriebs- und Wartungsarchitekt von China Telecom Digital Intelligence Technology Co., Ltd. Shandong Branch, ein Cloud-Native-Enthusiast, der sich derzeit auf Cloud-Native-Betrieb und -Wartung sowie den Technologie-Stack im Cloud-Native-Bereich konzentriert umfasst Kubernetes, KubeSphere, DevOps, OpenStack, Ansible usw.

Vorwort

Karte

Wissenspunkte

  • Bewertung: Einstiegsniveau
  • KubeKey-Installation und Bereitstellung von KubeSphere und Kubernetes
  • Grundkonfiguration des Ubuntu-Betriebssystems
  • Erstellung gängiger Kubernetes-Workloads

Demo-Server-Konfiguration

CPU-Name IP Zentralprozessor Speicher Systemfestplatte Datenträger verwenden
ks-master-0 192.168.9.91 4 16 40 200 KubeSphere/k8s-master/k8s-worker
ks-master-1 192.168.9.92 4 16 40 200 KubeSphere/k8s-master/k8s-worker
ks-master-2 192.168.9.93 4 16 40 200 KubeSphere/k8s-master/k8s-worker
gesamt 3 12 48 120 600

Die Demo-Umgebung umfasst Informationen zur Softwareversion

  • Betriebssystem: Ubuntu 22.04.2 LTS
  • KubeSphere: 3.3.2
  • Kubernetes: v1.25.5
  • KubeKey: v3.0.7

Einführung

In diesem Artikel wird beschrieben, wie Sie einen KubeSphere- und Kubernetes-Cluster auf einem Ubuntu 22.04 LTS-Server bereitstellen. Wir werden das von KubeSphere entwickelte KubeKey-Tool verwenden, um die automatisierte Bereitstellung zu implementieren, und den Hochverfügbarkeitsmodus auf drei Servern implementieren, um die Bereitstellung von Kubernetes-Clustern und KubeSphere zu minimieren. Wir stellen detaillierte Bereitstellungsanweisungen zur Verfügung, damit die Leser den Bereitstellungsprozess problemlos durchführen können.

Grundkonfiguration des Betriebssystems

Bitte beachten Sie, dass die folgenden Vorgänge auf allen Ubuntu-Servern durchgeführt werden müssen, sofern nicht anders angegeben. Dieser Artikel dient nur einem der Server als Demonstration und geht davon aus, dass die übrigen Server auf die gleiche Weise konfiguriert und eingerichtet sind.

Benutzer erstellen

Vor der Installation von KubeSphere und Kubernetes müssen Sie einen gemeinsamen Benutzer erstellen. Dies kann der ursprüngliche Benutzer sein, den Ubuntu standardmäßig bei der Installation des Ubuntu-Systems erstellt hat , oder ein neu erstellter Benutzer. In diesem Artikel verwenden wir den neu erstellten Benutzer kube als Beispiel.

  • Erstellen Sie einen Benutzer und legen Sie ein Passwort fest

Erstellen Sie einen neuen Benutzer mit dem Namen kube und legen Sie ein Passwort für diesen Benutzer fest , indem Sie den folgenden Befehl ausführen . Wenn Sie zur Eingabe eines Passworts aufgefordert werden, geben Sie das gewünschte Passwort ein und bestätigen Sie es.

sudo useradd -m -s /bin/bash kube
sudo passwd kube
  • Konfigurieren Sie Benutzer so, dass sie Befehle ohne Passwörter ausführen

Um KubeSphere und Kubernetes zu installieren und bereitzustellen, muss der Kube- Benutzer so konfiguriert werden, dass er mit sudo zum Root-Benutzer wechselt, um Systembefehle ohne Kennwort auszuführen.

Um dem kube- Benutzer die Verwendung des sudo-Befehls ohne Passwort zu ermöglichen, führen Sie den folgenden Befehl aus.

cat <<EOF | sudo tee /etc/sudoers.d/kube
Defaults:kube !fqdn
Defaults:kube !requiretty
kube ALL=(ALL) NOPASSWD: ALL
EOF

Hostnamen konfigurieren

sudo hostnamectl hostname ks-master-0

Konfigurieren Sie die Hosts-Datei

Bearbeiten Sie die Datei /etc/hosts und fügen Sie der Datei die geplante Server-IP und den Hostnamen hinzu.

192.168.9.91    ks-master-0
192.168.9.92    ks-master-1
192.168.9.93    ks-master-2

Konfigurieren Sie die schlüsselbasierte SSH-Authentifizierung

KubeKey unterstützt die Verwendung von Passwörtern und Schlüsseln als Verbindungsauthentifizierungsmethoden für Remote-Server bei der automatischen Bereitstellung von KubeSphere- und Kubernetes-Diensten. In diesem Artikel wird gezeigt, wie Sie Passwörter und Schlüssel gleichzeitig konfigurieren. Daher ist es notwendig, die passwortfreie SSH-Authentifizierung für den Bereitstellungsbenutzer kube zu konfigurieren.

Dieser Abschnitt ist ein optionales Konfigurationselement. Wenn Sie ein reines Passwort als Authentifizierungsmethode für die Server-Remoteverbindung verwenden, können Sie diesen Abschnitt ignorieren.

In diesem Artikel wird der Master-0-Knoten als Bereitstellungsknoten verwendet. Die folgenden Vorgänge müssen auf dem Master-0- Knoten ausgeführt werden.

Melden Sie sich als kube-Benutzer beim System an und verwenden Sie dann den Befehl ssh-keygen , um ein neues SSH-Schlüsselpaar zu generieren. Nach Abschluss des Befehls werden der öffentliche SSH-Schlüssel und der private Schlüssel im Verzeichnis /home/kube/ gespeichert. ssh- Verzeichnis.

su - kube
ssh-keygen -t ed25519

Der Effekt der Befehlsausführung ist wie folgt:

ubuntu@ks-master-0:~$ su - kube
Password:
kube@ks-master-0:~$ ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/kube/.ssh/id_ed25519):
Created directory '/home/kube/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/kube/.ssh/id_ed25519
Your public key has been saved in /home/kube/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:tQzVX/3bF87KzKjYnZcm6M3wdMRRlKyixFtCTQOcBks kube@ks-master-0
The key's randomart image is:
+--[ED25519 256]--+
|       Eo.*+  ooo|
|      . .* .o .oo|
|       .= .  o...|
|         B +..o..|
|        S B .oo +|
|         o  .  +o|
|         ...=.o .|
|        o.BooO   |
|       ..+.*+    |
+----[SHA256]-----+

Geben Sie als Nächstes den folgenden Befehl ein, um den öffentlichen SSH-Schlüssel vom Master-0- Knoten an andere Knoten zu senden. Geben Sie „Ja“ ein , wenn der Befehl ausgeführt wird , um den SSH-Fingerabdruck des Servers zu akzeptieren, und geben Sie dann das Kennwort des Kube- Benutzers ein , wenn Sie dazu aufgefordert werden .

ssh-copy-id kube@ks-master-0

Das Folgende ist die korrekte Ausgabe, wenn der Schlüssel kopiert wird:

kube@ks-master-0:~$ ssh-copy-id kube@ks-master-0
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/kube/.ssh/id_ed25519.pub"
The authenticity of host 'ks-master-0 (192.168.9.91)' can't be established.
ED25519 key fingerprint is SHA256:XMc3FWjoTJY6TFH7BK3S6bRmLt+ZxoPvdUh9Dz3ENgk.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
kube@ks-master-0's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'kube@ks-master-0'"
and check to make sure that only the key(s) you wanted were added.

Nachdem Sie den öffentlichen SSH-Schlüssel hinzugefügt und hochgeladen haben, können Sie nun den folgenden Befehl ausführen, um zu überprüfen, ob Sie über den kube-Benutzer eine Verbindung zu allen Servern ohne Passwortüberprüfung herstellen können.

kube@ks-master-0:~$ ssh kube@ks-master-1
# 登陆输出结果 略

Installieren Sie Systemabhängigkeiten

Melden Sie sich auf allen Knoten als kube- Benutzer beim System an (nicht erforderlich, andere Systembenutzer sind ebenfalls akzeptabel) und führen Sie den folgenden Befehl aus, um die grundlegenden Systemabhängigkeitspakete für Kubernetes zu installieren.

sudo apt-get update
sudo apt-get install curl socat conntrack ebtables ipset ipvsadm

Konfigurieren Sie die Zeitzone des Servers

Konfigurieren Sie die Serverzeitzone als Asien/Shanghai :

sudo timedatectl set-timezone Asia/Shanghai

Installieren Sie chrony und konfigurieren Sie die Zeitsynchronisierung

Installieren Sie chrony als Zeitsynchronisierungssoftware:

sudo apt-get install chrony

Ändern Sie die Konfigurationsdatei /etc/chrony/chrony.conf und ändern Sie die NTP-Serverkonfiguration:

sudo vi /etc/chrony/chrony.conf
# 删除所有的 pool 配置
pool ntp.ubuntu.com        iburst maxsources 4
pool 0.ubuntu.pool.ntp.org iburst maxsources 1
pool 1.ubuntu.pool.ntp.org iburst maxsources 1
pool 2.ubuntu.pool.ntp.org iburst maxsources 2

# 增加国内的 ntp 服务器,或是指定其他常用的时间服务器
server ntp.api.bz iburst

Starten Sie den Chrony-Dienst neu:

sudo systemctl restart chrony

Überprüfen Sie den Chrony-Synchronisierungsstatus:

# 执行查看命令
sudo chronyc sourcestats -v

# 正常的输出结果如下
kube@ks-master-0:~/kubekey$ sudo 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
==============================================================================
185.53.177.52               0   0     0     +0.000   2000.000     +0ns  4000ms

Installieren und bereitstellen Sie KubeSphere und Kubernetes

Laden Sie KubeKey herunter

In diesem Artikel wird der Master-0-Knoten als Bereitstellungsknoten verwendet und die Binärdatei der neuesten Version (3.0.7) von KubeKey (im Folgenden als kk bezeichnet) wird auf den Server heruntergeladen. Die spezifische KubeKey-Versionsnummer kann auf der KubeKey-Release-Seite eingesehen werden .

  • Laden Sie die neueste Version von KubeKey herunter
cd ~
mkdir kubekey
cd kubekey/
# 选择中文区下载(访问github受限时使用)
export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | sh -

# 也可以使用下面的命令指定具体版本
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.7 sh -

# 正确的执行效果如下
kube@ks-master-0:~$ cd ~
kube@ks-master-0:~$ mkdir kubekey
kube@ks-master-0:~$ cd kubekey/
kube@ks-master-0:~/kubekey$ export KKZONE=cn
kube@ks-master-0:~/kubekey$ curl -sfL https://get-kk.kubesphere.io | sh -

Downloading kubekey v3.0.7 from https://kubernetes.pek3b.qingstor.com/kubekey/releases/download/v3.0.7/kubekey-v3.0.7-linux-amd64.tar.gz ...


Kubekey v3.0.7 Download Complete!

kube@ks-master-0:~/kubekey$ ll
total 111996
drwxrwxr-x 2 kube kube     4096 May 17 07:19 ./
drwxr-x--- 5 kube kube     4096 May 17 07:17 ../
-rwxr-xr-x 1 kube kube 78901793 Jan 18 01:59 kk*
-rw-rw-r-- 1 kube kube 35769576 May 17 07:19 kubekey-v3.0.7-linux-amd64.tar.gz
  • Sehen Sie sich die Liste der von KubeKey unterstützten Kubernetes-Versionen an
./kk version --show-supported-k8s

# 输出如下
kube@ks-master-0:~/kubekey$ ./kk version --show-supported-k8s
v1.19.0
v1.19.8
v1.19.9
v1.19.15
v1.20.4
v1.20.6
v1.20.10
v1.21.0
v1.21.1
v1.21.2
v1.21.3
v1.21.4
v1.21.5
v1.21.6
v1.21.7
v1.21.8
v1.21.9
v1.21.10
v1.21.11
v1.21.12
v1.21.13
v1.21.14
v1.22.0
v1.22.1
v1.22.2
v1.22.3
v1.22.4
v1.22.5
v1.22.6
v1.22.7
v1.22.8
v1.22.9
v1.22.10
v1.22.11
v1.22.12
v1.22.13
v1.22.14
v1.22.15
v1.22.16
v1.22.17
v1.23.0
v1.23.1
v1.23.2
v1.23.3
v1.23.4
v1.23.5
v1.23.6
v1.23.7
v1.23.8
v1.23.9
v1.23.10
v1.23.11
v1.23.12
v1.23.13
v1.23.14
v1.23.15
v1.24.0
v1.24.1
v1.24.2
v1.24.3
v1.24.4
v1.24.5
v1.24.6
v1.24.7
v1.24.8
v1.24.9
v1.25.0
v1.25.1
v1.25.2
v1.25.3
v1.25.4
v1.25.5
v1.26.0

Erstellen Sie Kubernetes- und KubeSphere-Bereitstellungsprofile

Erstellen Sie eine Cluster-Konfigurationsdatei. Wählen Sie in diesem Beispiel KubeSphere v3.3.2 und Kubernetes v1.25.5 aus. Geben Sie gleichzeitig den Namen der Konfigurationsdatei als kubesphere-v3.3.2.yaml an . Wenn nicht angegeben, lautet der Standarddateiname config -sample.yaml .

./kk create config -f kubesphere-v3.3.2.yaml --with-kubernetes v1.25.5 --with-kubesphere v3.3.2

Nachdem der Befehl erfolgreich ausgeführt wurde, wird im aktuellen Verzeichnis eine Konfigurationsdatei mit dem Namen kubesphere-v3.3.2.yaml generiert.

kube@ks-master-0:~/kubekey$ ./kk create config -f kubesphere-v3.3.2.yaml --with-kubernetes v1.25.5 --with-kubesphere v3.3.2
Generate KubeKey config file successfully
kube@ks-master-0:~/kubekey$ ls
kk  kubekey-v3.0.7-linux-amd64.tar.gz  kubesphere-v3.3.2.yaml

In diesem Beispiel werden drei Knoten als Control-Plane-Knoten verwendet und als Worker-Knoten gemultiplext.

Bearbeiten Sie die Konfigurationsdatei kubesphere-v3.3.2.yaml und ändern Sie Informationen wie Hosts und Rollengruppen. Die Änderungsanweisungen lauten wie folgt.

  • hosts gibt die IP, den SSH-Benutzer, das SSH-Passwort und den SSH-H-Schlüssel des Knotens an. Das Beispiel zeigt die Konfigurationsmethode, bei der Passwort und Schlüssel gleichzeitig verwendet werden
  • RoleGroups gibt ks-master-0, ks-master-1, ks-master-2 als etcd, Kontrollebene, Arbeitsknoten an
  • internalLoadbalancer aktiviert den integrierten HAProxy Load Balancer

Das modifizierte Beispiel lautet wie folgt:

apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
  name: sample
spec:
  hosts:
  - {name: ks-master-0, address: 192.168.9.91, internalAddress: 192.168.9.91, user: kube, password: "P@88w0rd"}
  - {name: ks-master-1, address: 192.168.9.92, internalAddress: 192.168.9.92, user: kube, privateKeyPath: "~/.ssh/id_ed25519"}
  - {name: ks-master-2, address: 192.168.9.93, internalAddress: 192.168.9.93, user: kube, privateKeyPath: "~/.ssh/id_ed25519"}
  roleGroups:
    etcd:
    - ks-master-0
    - ks-master-1
    - ks-master-2
    control-plane:
    - ks-master-0
    - ks-master-1
    - ks-master-2
    worker:
    - ks-master-0
    - ks-master-1
    - ks-master-2
  controlPlaneEndpoint:
    ## Internal loadbalancer for apiservers
    internalLoadbalancer: haproxy

    domain: lb.kubesphere.local
    address: ""
    port: 6443
  kubernetes:
    version: v1.25.5
    clusterName: cluster.local
    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: []

Stellen Sie KubeSphere und Kubernetes bereit

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

./kk create cluster -f kubesphere-v3.3.2.yaml

Nachdem der obige Befehl ausgeführt wurde, prüft kk zunächst die Abhängigkeiten und andere detaillierte Anforderungen für die Bereitstellung von Kubernetes. 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.

kube@ks-master-0:~/kubekey$ ./kk create cluster -f kubesphere-v3.3.2.yaml


 _   __      _          _   __
| | / /     | |        | | / /
| |/ / _   _| |__   ___| |/ /  ___ _   _
|    \| | | | '_ \ / _ \    \ / _ \ | | |
| |\  \ |_| | |_) |  __/ |\  \  __/ |_| |
\_| \_/\__,_|_.__/ \___\_| \_/\___|\__, |
                                    __/ |
                                   |___/

16:24:04 CST [GreetingsModule] Greetings
16:24:05 CST message: [ks-master-2]
Greetings, KubeKey!
16:24:06 CST message: [ks-master-0]
Greetings, KubeKey!
16:24:08 CST message: [ks-master-1]
Greetings, KubeKey!
16:24:08 CST success: [ks-master-2]
16:24:08 CST success: [ks-master-0]
16:24:08 CST success: [ks-master-1]
16:24:08 CST [NodePreCheckModule] A pre-check on nodes
16:24:08 CST success: [ks-master-0]
16:24:08 CST success: [ks-master-2]
16:24:08 CST success: [ks-master-1]
16:24:08 CST [ConfirmModule] Display confirmation form
+-------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+
| name        | sudo | curl | openssl | ebtables | socat | ipset | ipvsadm | conntrack | chrony | docker | containerd | nfs client | ceph client | glusterfs client | time         |
+-------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+
| ks-master-0 | y    | y    | y       | y        | y     | y     | y       | y         | y      |        |            |            |             |                  | CST 16:24:08 |
| ks-master-1 | y    | y    | y       | y        | y     | y     | y       | y         | y      |        |            |            |             |                  | CST 16:24:08 |
| ks-master-2 | y    | y    | y       | y        | y     | y     | y       | y         | y      |        |            |            |             |                  | CST 16:24:08 |
+-------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+

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

Die Bereitstellung dauert je nach Netzwerkgeschwindigkeit und Maschinenkonfiguration etwa 10 bis 30 Minuten.

Nach Abschluss der Bereitstellung sollte auf dem Terminal eine Ausgabe ähnlich der folgenden angezeigt werden. Während Sie darauf hingewiesen werden, dass die Bereitstellung abgeschlossen ist, werden in der Ausgabe auch der Standardadministratorbenutzer und das Standardkennwort angezeigt, damit sich der Benutzer bei KubeSphere anmelden kann.

clusterconfiguration.installer.kubesphere.io/ks-installer created
16:36:44 CST skipped: [ks-master-2]
16:36:44 CST skipped: [ks-master-1]
16:36:44 CST success: [ks-master-0]
#####################################################
###              Welcome to KubeSphere!           ###
#####################################################

Console: http://192.168.9.91:30880
Account: admin
Password: P@88w0rd
NOTES:
  1. After you log into the console, please check the
     monitoring status of service components in
     "Cluster Management". If any service is not
     ready, please wait patiently until all components
     are up and running.
  2. Please change the default password after login.

#####################################################
https://kubesphere.io             2023-05-17 16:48:38
#####################################################
16:48:43 CST skipped: [ks-master-2]
16:48:43 CST skipped: [ks-master-1]
16:48:43 CST success: [ks-master-0]
16:48:43 CST Pipeline[CreateClusterPipeline] execute successfully
Installation is complete.

Please check the result using the command:

	kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

Bereitstellungsüberprüfung

  1. Überprüfen Sie die KubeSphere-Verwaltungskonsole

Wir öffnen den Browser, um auf die IP-Adresse und den Port „30880“ des Master-0-Knotens zuzugreifen, und sehen die Anmeldeseite der KubeSphere-Verwaltungskonsole.

Geben Sie den Standardbenutzer admin und das Standardkennwort P@88w0rd ein und klicken Sie auf „Anmelden“.

Nach der Anmeldung werden Sie aufgefordert, das Standardkennwort des KubeSphere-Standardbenutzers „admin“ zu ändern, das neue Kennwort einzugeben und auf „Senden“ zu klicken.

Nachdem die Übermittlung abgeschlossen ist, springt das System zur KubeSphere-Administrator-Benutzer-Workbench-Seite, auf der angezeigt wird, dass die aktuelle KubeSphere-Version v3.3.2 ist und die Anzahl der verfügbaren Kubernetes-Cluster 1 beträgt.

Klicken Sie anschließend oben links auf das Menü „Plattformverwaltung“ und wählen Sie „Clusterverwaltung“.

Rufen Sie die Cluster-Verwaltungsschnittstelle auf. Auf dieser Seite können Sie die grundlegenden Informationen des Clusters anzeigen, einschließlich Cluster-Ressourcennutzung, Kubernetes-Status, Knotenressourcennutzung Top, Systemkomponenten, Toolbox usw.

Klicken Sie links auf das Menü „Knoten“ und dann auf „Clusterknoten“, um die Details der verfügbaren Knoten im Kubernetes-Cluster anzuzeigen.

Klicken Sie links auf das Menü „Systemkomponenten“, um detaillierte Informationen zu den installierten Komponenten anzuzeigen. Die aktuell vom Cluster verwendete Minimalinstallation umfasst nur drei Kategorien von Komponenten: KubeSphere, Kubernetes und Überwachung.

  1. Überprüfen Sie die Clusterinformationen über die Befehlszeile

Führen Sie den Befehl kubectl auf dem Master-0-Knoten aus, um eine Liste der verfügbaren Knoten im Kubernetes-Cluster abzurufen

kubectl get nodes

Wie Sie der Ausgabe entnehmen können, verfügt der aktuelle Kubernetes-Cluster über drei verfügbare Knoten: die interne IP des Knotens, die Rolle des Knotens, die Versionsnummer von Kubernetes des Knotens, die Laufzeit- und Versionsnummer des Containers sowie den Betrieb Systemtyp und die Kernel-Version.

kube@ks-master-0:~/kubekey$ kubectl get nodes -o wide
NAME          STATUS   ROLES                  AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
ks-master-0   Ready    control-plane,worker   36m   v1.25.5   192.168.9.91   <none>        Ubuntu 22.04.2 LTS   5.15.0-70-generic   containerd://1.6.4
ks-master-1   Ready    control-plane,worker   35m   v1.25.5   192.168.9.92   <none>        Ubuntu 22.04.2 LTS   5.15.0-70-generic   containerd://1.6.4
ks-master-2   Ready    control-plane,worker   35m   v1.25.5   192.168.9.93   <none>        Ubuntu 22.04.2 LTS   5.15.0-70-generic   containerd://1.6.4

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

kubectl get pods --all-namespaces

Wie Sie in der Ausgabe sehen können, sind im Kubernetes-Cluster mehrere Namespaces kube-system, kubesphere-control-system, kubesphere-monitoring-system und kubesphere-system verfügbar und alle Pods werden ausgeführt.

kube@ks-master-0:~/kubekey$ kubectl get pods --all-namespaces
NAMESPACE                      NAME                                           READY   STATUS    RESTARTS   AGE
kube-system                    calico-kube-controllers-75c594996d-mfl2c       1/1     Running   0          37m
kube-system                    calico-node-2xhqh                              1/1     Running   0          37m
kube-system                    calico-node-6vcl9                              1/1     Running   0          37m
kube-system                    calico-node-l9p9s                              1/1     Running   0          37m
kube-system                    coredns-67ddbf998c-t2z87                       1/1     Running   0          38m
kube-system                    coredns-67ddbf998c-xff4b                       1/1     Running   0          38m
kube-system                    kube-apiserver-ks-master-0                     1/1     Running   0          38m
kube-system                    kube-apiserver-ks-master-1                     1/1     Running   0          37m
kube-system                    kube-apiserver-ks-master-2                     1/1     Running   0          37m
kube-system                    kube-controller-manager-ks-master-0            1/1     Running   0          38m
kube-system                    kube-controller-manager-ks-master-1            1/1     Running   0          37m
kube-system                    kube-controller-manager-ks-master-2            1/1     Running   0          37m
kube-system                    kube-proxy-czmpt                               1/1     Running   0          37m
kube-system                    kube-proxy-mddtt                               1/1     Running   0          37m
kube-system                    kube-proxy-vjdzl                               1/1     Running   0          37m
kube-system                    kube-scheduler-ks-master-0                     1/1     Running   0          38m
kube-system                    kube-scheduler-ks-master-1                     1/1     Running   0          37m
kube-system                    kube-scheduler-ks-master-2                     1/1     Running   0          37m
kube-system                    nodelocaldns-5zpnj                             1/1     Running   0          37m
kube-system                    nodelocaldns-8849d                             1/1     Running   0          38m
kube-system                    nodelocaldns-v97cd                             1/1     Running   0          37m
kube-system                    openebs-localpv-provisioner-57d95c6875-lwvqt   1/1     Running   0          37m
kube-system                    snapshot-controller-0                          1/1     Running   0          35m
kubesphere-controls-system     default-http-backend-5d5c44d77f-kst9l          1/1     Running   0          31m
kubesphere-controls-system     kubectl-admin-788ff75cd7-4wqtc                 1/1     Running   0          25m
kubesphere-monitoring-system   kube-state-metrics-6cc9478499-9fr7h            3/3     Running   0          28m
kubesphere-monitoring-system   node-exporter-dzqw5                            2/2     Running   0          28m
kubesphere-monitoring-system   node-exporter-f6wvj                            2/2     Running   0          28m
kubesphere-monitoring-system   node-exporter-kqtj8                            2/2     Running   0          28m
kubesphere-monitoring-system   prometheus-k8s-0                               2/2     Running   0          28m
kubesphere-monitoring-system   prometheus-k8s-1                               2/2     Running   0          28m
kubesphere-monitoring-system   prometheus-operator-6bd484db88-l6666           2/2     Running   0          28m
kubesphere-system              ks-apiserver-6797fc669-dr9gs                   1/1     Running   0          31m
kubesphere-system              ks-console-6f9d57b699-whg9w                    1/1     Running   0          31m
kubesphere-system              ks-controller-manager-6656d4f57d-gfc5x         1/1     Running   0          31m
kubesphere-system              ks-installer-55b8b4c4d9-9gvjh                  1/1     Running   0          37m

Bisher haben wir einen minimalen Kubernetes-Cluster mit drei Ubuntu-Serverknoten und KubeSphere bereitgestellt. Wir haben den Status des Clusters auch über die KubeSphere-Verwaltungskonsole und die Befehlszeilenschnittstelle angezeigt.

Als Nächstes stellen wir einen einfachen Nginx-Webserver im Kubernetes-Cluster bereit, um zu testen und zu überprüfen, ob Kubernetes und KubeSphere normalerweise verfügbar sind.

Testressourcen bereitstellen

In diesem Beispiel werden Befehlszeilentools verwendet, um einen Nginx-Webserver auf einem Kubernetes-Cluster bereitzustellen, und die grafische Verwaltungskonsole von KubeSphere wird verwendet, um bereitgestellte Ressourceninformationen anzuzeigen.

Erstellen Sie eine Nginx-Bereitstellung

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

Erstellen Sie einen Nginx-Dienst

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

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

Überprüfen Sie die Nginx-Bereitstellung und Pods

Führen Sie den folgenden Befehl 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:

kube@ks-master-0:~$ kubectl get deployment -o wide
NAME    READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES         SELECTOR
nginx   2/2     2            2           72s   nginx        nginx:alpine   app=nginx

kube@ks-master-0:~$ kubectl get pods -o wide
NAME                     READY   STATUS    RESTARTS   AGE   IP             NODE          NOMINATED NODE   READINESS GATES
nginx-55f494c486-85zsc   1/1     Running   0          78s   10.233.103.5   ks-master-1   <none>           <none>
nginx-55f494c486-hpzlr   1/1     Running   0          78s   10.233.102.7   ks-master-2   <none>           <none>

Überprüfen Sie den Nginx-Dienst

Führen Sie den 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 32710 auf dem Kubernetes-Host geöffnet ist.

kubectl get svc -o wide

Sehen Sie sich die Ergebnisse wie folgt an:

kube@ks-master-0:~$ kubectl get svc -o wide
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE     SELECTOR
kubernetes   ClusterIP   10.233.0.1     <none>        443/TCP        16h     <none>
nginx        NodePort    10.233.10.40   <none>        80:32710/TCP   6m21s   app=nginx

Greifen Sie auf den Nginx-Dienst zu

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

  • Authentifizieren des direkten Zugriffs auf Pods
curl 10.233.103.5

# 访问结果如下
kube@ks-master-0:~$ curl 10.233.103.5
<!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.10.40

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

# 访问结果同上,略

Ansicht in der Verwaltungskonsole

Als nächstes kehren wir zur KubeSphere-Verwaltungskonsole zurück und sehen uns die erstellten Ressourcen in der Verwaltungskonsole an.

Hinweis: Die Verwaltungskonsole von KubeSphere hat die Funktion, verschiedene Kubernetes-Ressourcen auf benutzerfreundliche und grafische Weise zu erstellen. Der Hauptgrund dafür ist, dass Screenshots zu mühsam sind. Daher wird in diesem Artikel die Befehlszeile verwendet, um einfach Testressourcen zu erstellen.

Ich möchte Ihnen nur die Grundfunktionen der KubeSphere-Verwaltungskonsole beim Anzeigen zeigen. Im tatsächlichen Gebrauch können Sie Kubernetes-Ressourcen grafisch erstellen und verwalten.

  • Melden Sie sich bei der KubeSphere-Verwaltungskonsole an, klicken Sie auf „Plattformverwaltung“ und wählen Sie „Clusterverwaltung“.
  • Klicken Sie auf der linken Seite der Clusterverwaltungsseite auf „Anwendungslast“ und dann auf „Arbeitslast“. Standardmäßig werden alle Workloads vom Typ „Bereitstellung“ angezeigt .

Wir verwenden das Administratorkonto, damit wir alle Workloads sehen können. Geben Sie „nginx“ in das Suchfeld ein und es werden nur Nginx-Bereitstellungs-Workloads angezeigt.

  • Klicken Sie in der Bereitstellungsliste auf Nginx, um detailliertere Informationen anzuzeigen und die Nginx-Bereitstellung (Bereitstellung) zu verwalten.

  • Gehen Sie zurück zur Seite „Plattformverwaltung“ – „Clusterverwaltung“, klicken Sie auf der linken Seite der Clusterverwaltungsseite auf „Anwendungslast“ und dann auf „Dienst“. Standardmäßig werden alle Workloads vom Typ „ Service“ angezeigt.

Wir verwenden das Administratorkonto, damit wir alle Arbeitslasten sehen können. Geben Sie „nginx“ in das Suchfeld ein und es werden nur die Arbeitslasten des Nginx-Dienstes angezeigt.

  • Klicken Sie in der Dienstliste auf Nginx, um detailliertere Informationen anzuzeigen und Nginx-Dienste zu verwalten (Dienst).

Bisher haben wir die Bereitstellung des Nginx-Webservers im Kubernetes-Cluster implementiert und die Details der bereitgestellten Bereitstellung, des Pods und des Dienstes über die KubeSphere-Verwaltungskonsole angezeigt und überprüft.

häufiges Problem

SSH-Verbindungsfehler

  • Fehlermeldung
# ssh 服务器时报错如下
ssh: connect to host 192.168.9.91 port 22: Connection refused
  • Lösung
# 问题原因 ubuntu 服务器默认安装后 openssh 服务启动失败, 需要执行如下命令后再启动 sshd 服务

# 切换到 root 用户
sudo -i

# 执行命令
ssh-keygen -A

# 启动 sshd 服务
systemctl start sshd

Abschluss

In diesem Artikel wird hauptsächlich der detaillierte Prozess der Verwendung von KubeKey zur automatischen Bereitstellung von KubeSphere- und Kubernetes-Hochverfügbarkeitsclustern auf drei Ubuntu 22.04-Servern vorgestellt.

Nach Abschluss der Bereitstellung verwenden wir außerdem die KubeSphere-Verwaltungskonsole und die kubectl-Befehlszeile, um den Status der KubeSphere- und Kubernetes-Cluster anzuzeigen und zu überprüfen.

Am Ende überprüften wir die Verfügbarkeit des Kubernetes-Clusters und von KubeSphere, indem wir den Nginx-Webserver auf dem Kubenetes-Cluster bereitstellten, und lernten die grundlegende Verwendung von KubeSphere kennen, indem wir die Vorgänge des Nginx-Pods und den Dienststatus in der KubeSphere-Verwaltungskonsole betrachteten.

Dieser Artikel wurde von OpenWrite veröffentlicht, einer Multi-Post-Plattform zum Bloggen !

{{o.name}}
{{m.name}}

Supongo que te gusta

Origin my.oschina.net/u/4197945/blog/8816587
Recomendado
Clasificación