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.conf
und ä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
- 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 .
- 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 !
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 geschlossenDieser Artikel wurde von OpenWrite veröffentlicht , einem Blog, der mehrere Artikel veröffentlicht !