KubeKey は実際に K8s v1.28.8 をデプロイします

一部の実稼働環境では、ネイティブ K8s クラスターのみが必要で、 KubeSphereなどのグラフィカル管理コンソールをデプロイする必要はありません。当社の既存のテクノロジー スタックでは、 KubeKeyを使用してKubeSphere および K8s クラスターをデプロイすることに慣れています。今日は、 openEuler 22.03 LTS SP3で KubeKey を使用して純粋な K8s クラスターをデプロイする方法を説明します。

実際のサーバー構成 (小規模な運用環境のアーキテクチャ 1:1 レプリ​​カ、構成は若干異なります)

CPU名 IP CPU メモリ システムディスク データディスク 使用
ksp-マスター-1 192.168.9.131 8 16 40 100 k8sマスター
ksp-マスター-2 192.168.9.132 8 16 40 100 k8sマスター
ksp-マスター-3 192.168.9.133 8 16 40 100 k8sマスター
合計 3 24 48 120 300

実際の戦闘環境にはソフトウェアのバージョン情報が関係します

  • オペレーティング システム: openEuler 22.03 LTS SP3 x64

  • K8s: v1.28.8

  • コンテナ:1.7.13

  • KubeKey: v3.1.1

1. OSの基本構成

特に指定がない限り、次の操作はすべてのサーバーで実行する必要があることに注意してください。この記事では、デモンストレーション用に Master-1 ノードのみを選択し、他のサーバーも同じ方法で構成およびセットアップされていることを前提としています。

1.1 ホスト名の設定

hostnamectl hostname ksp-master-1

1.2 DNS の構成

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

1.3 サーバーのタイムゾーンを構成する

  • サーバーのタイムゾーンをAsia/Shanghaiに設定します。
timedatectl set-timezone Asia/Shanghai

1.4 時刻同期の構成

  • 時刻同期ソフトウェアとしてchronyをインストールする
yum install chrony 
  • 構成ファイルを編集し/etc/chrony.conf、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
  • chrony サービスを再起動し、起動時に自動的に開始するように設定します。
systemctl enable chronyd --now
  • 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 システムのファイアウォールをオフにする

systemctl stop firewalld && systemctl disable firewalld

1.6 SELinux を無効にする

openEuler 22.03 SP3 の最小限にインストールされたシステムでは、トラブルを軽減するために、SELinux がデフォルトで有効になっています。

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

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

1.7 システムの依存関係をインストールする

すべてのノードで次のコマンドを実行して、Kubernetes の基本的なシステム依存関係パッケージをインストールします。

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

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

2. オペレーティング システムのディスク構成

サーバーは、ContainerdおよびK8s Podの永続ストレージ用に新しいデータ ディスク/dev/sdbを追加します。

一部のユーザーの要望に応えるため、稼働後にディスク容量が不足した場合に動的拡張を実現できます。この記事では、LVM を使用してディスクを構成します (実際、私が保守している運用環境では LVM をほとんど使用しません)。

特に指定がない限り、次の操作はクラスター内のすべてのノードで実行する必要があることに注意してください。この記事では、デモンストレーション用にMaster-1ノードのみを選択し、他のサーバーも同じ方法で構成およびセットアップされていることを前提としています。

2.1 LVM を使用してディスクを構成する

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

2.2 ディスクのフォーマット

mkfs.xfs /dev/mapper/data-lvdata

2.3 ディスクのマウント

  • 手動取り付け
mkdir /data
mount /dev/mapper/data-lvdata /data/
  • ブート時に自動的にマウントする
tail -1 /etc/mtab >> /etc/fstab

2.4 データディレクトリの作成

  • OpenEBSローカル データ ルート ディレクトリを作成する
mkdir -p /data/openebs/local
  • Containerdデータディレクトリを作成する
mkdir -p /data/containerd
  • Containerd データ ディレクトリへのソフト接続を作成する
ln -s /data/containerd /var/lib/containerd

注:バージョン v3.1.1 まで、KubeKey はデプロイメント中の Containerd のデータ ディレクトリの変更をサポートしていませんでした。このディレクトリ ソフト リンクは、ストレージ領域を増やすための回避策としてのみ使用できます ( Containerd は事前に手動でインストールすることもできます)。

3. K8 のインストールと展開

3.1 KubeKey をダウンロードする

この記事では、master-1ノードをデプロイメント ノードとして使用し、最新バージョンの KubeKey ( v3.1.1 ) バイナリ ファイルをサーバーにダウンロードします。特定の KubeKey バージョン番号は、KubeKey リリース ページで確認できます。

  • KubeKey の最新バージョンをダウンロードする
mkdir ~/kubekey
cd ~/kubekey/

# 选择中文区下载(访问 GitHub 受限时使用)
export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | sh -
  • 正しい実行結果は以下の通りです
[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
  • KubeKey でサポートされている Kubernetes バージョンのリストを表示する./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

注:出力結果は KubeKey でサポートされている結果ですが、KubeSphere や他の K8 も完全にサポートできることを意味するものではありません。この記事では、K8 のデプロイに KubeKey のみを使用するため、バージョンの互換性を考慮する必要はありません。

KubeKey でサポートされる K8s バージョンはまだ比較的新しいです。この記事ではv1.28.8を選択しますが、運用環境の場合は、v1.26.15または偶数のマイナーバージョンと5 つを超えるパッチ バージョンを持つ他のバージョンを選択できます。 v1.30 がリリースされているため、あまり古いバージョンを選択することはお勧めできません。

3.2 K8s クラスター展開構成ファイルの作成

  1. クラスタ構成ファイルの作成

この記事では K8s v1.28.8を選択しました。したがって、指定された構成ファイル名はk8s-v1288.yamlです。指定しない場合、デフォルトのファイル名はconfig-sample.yamlです。

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

注:生成されたデフォルト設定ファイルには多くの内容が含まれているため、ここでは詳しく説明しません。詳細な設定パラメータについては、公式の設定例を参照してください。

  1. 設定ファイルを変更する

この記事の例では、3 つのノードをコントロール プレーン、etcd、ワーカー ノードとして同時に使用します。

構成ファイルを編集しk8s-v1288.yaml、主に次のような関連構成を変更します: クラスターセクション

kind:Clusterセクションの hosts および roleGroups 情報を変更します。変更手順は次のとおりです。

  • hosts: ノードのIP、sshユーザー、sshパスワード、sshポートを指定します。
  • roleGroups: 3 つの etcd ノードとコントロール プレーン ノードを指定し、同じマシンを 3 つのワーカー ノードとして再利用します。
  • InternalLoadbalancer: 組み込みの HAProxy ロード バランサーを有効にします。
  • ドメイン: カスタム ドメイン名lb.opsxlab.cn。特別な要件がない場合は、デフォルト値lb.kubesphere.local を使用できます。
  • [clusterName]: opsxlab.cnをカスタマイズします。特別な要件がない場合は、デフォルト値の[cluster.local] を使用できます。
  • autoRenewCerts: このパラメータは証明書の有効期限の自動更新を実現できます。デフォルトはtrueです。
  • コンテナマネージャー: containerdの使用

完全に変更された例は次のとおりです。

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 K8 の導入

次に、次のコマンドを実行して、上記で生成された構成ファイルを使用して K8 をデプロイします。

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

上記のコマンドが実行されると、KubeKey はまず、K8 をデプロイするための依存関係とその他の詳細な要件をチェックします。チェックに合格すると、インストールの確認を求めるメッセージが表示されます。「yes」と入力してEnter キーを押し、展開を続行します。

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

知らせ:

  • ストレージ関連の 3 つのクライアント (nfs クライアント、ceph クライアント、および glusterfs クライアント) はインストールされません。これらは、後でドッキング ストレージを実際に実装するときに個別にインストールします。
  • docker とcontainerdは、構成ファイルで選択されたcontainerManagerタイプに従って自動的にインストールされます。

展開が完了するまでに約 10 ~ 20 分かかります。ネットワーク速度とマシンの構成によって異なります。

デプロイが完了すると、ターミナルに次のような出力が表示されるはずです。

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. K8s クラスターの検証

4.1 クラスターのステータスを確認するための kubectl コマンドライン

このセクションでは基本的なステータスについて簡単に説明するだけであり、詳細は自分で体験して調べることができます。

  • クラスターノード情報の表示

master-1 ノードで kubectl コマンドを実行して、K8s クラスターで使用可能なノードのリストを取得します。

kubectl get nodes -o wide

出力からわかるように、現在の K8s クラスターには 3 つの利用可能なノード、ノードの内部 IP、ノードの役割、ノードの K8s バージョン番号、コンテナーのランタイムとバージョン番号、オペレーティング システムの種類、カーネル バージョン、およびその他の情報があります。

[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
  • ポッドリストの表示

次のコマンドを入力して、K8s クラスターで実行されているポッドのリストを取得します。

kubectl get pods -o wide -A

出力からわかるように、すべてのポッドが実行されています。

[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
  • 画像一覧を見る

次のコマンドを入力して、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

これまでのところ、3 つのマスター ノードとワーカー ノードが再利用された最小限の K8s クラスターの展開が完了しました。

次に、K8s クラスターに単純な Nginx Web サーバーをデプロイして、K8s クラスターが正常かどうかをテストして確認します。

5. テストリソースのデプロイ

この例では、コマンド ライン ツールを使用して、K8s クラスターに Nginx Web サーバーをデプロイします。

5.1 Nginx デプロイメントの作成

次のコマンドを実行して、Nginx Web サーバーをデプロイするデプロイメントを作成します。この例では、nginx:alpine イメージに基づいて 2 つのレプリカを持つポッドを作成します。

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

5.2 Nginxサービスの作成

サービス名 nginx、サービス タイプ Nodeport、外部サービス ポート 80 を使用して、新しい K8s サービスを作成します。

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

5.3 Nginx デプロイメントとポッドの検証

  • 次のコマンドを実行して、作成されたデプロイメントおよびポッドのリソースを表示します。
kubectl get deployment -o wide
kubectl get pods -o wide
  • 結果は次のように表示されます。
[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 Nginx サービスの検証

次のコマンドを実行して、利用可能なサービスのリストを表示します。リストでは、nginx サービス タイプが Nodeport であり、ポート30619が Kubernetes ホストで開かれていることがわかります。

kubectl get svc -o wide

結果は次のように表示されます。

[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 検証サービス

次のコマンドを実行して、デプロイされた Nginx サービスにアクセスし、サービスが正常にデプロイされたかどうかを確認します。

  • ポッドへの直接アクセスを確認する
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>
  • サービスへのアクセスを確認する
curl 10.233.14.48

# 访问结果同上,略
  • ノードポートへのアクセスを確認する
curl 192.168.9.131:30619

# 访问结果同上,略

6. 自動化されたシェルスクリプト

この記事のすべての手順は自動スクリプトにコンパイルされていますが、スペースの制限によりこのドキュメントには示されていません。

7. まとめ

この記事では、KubeSphere によって開発されたツールであるKubeKeyを使用して、openEuler 22.03 LTS SP3 オペレーティング システム上にK8s v1.28.8クラスターをデプロイするための詳細なプロセスと注意事項を共有します。

主な内容をまとめると以下のようになります。

  • openEuler 22.03 LTS SP3 オペレーティング システムの基本構成
  • openEuler 22.03 LTS SP3 オペレーティング システムでの LVM ディスク作成構成
  • KubeKey を使用して K8s 高可用性クラスターを展開する
  • K8sクラスタ導入完了後の検証テスト

免責事項:

  • 著者のレベルには限界があり、多くの検証とチェックを行い、内容の正確性を確保するために最善を尽くしていますが、それでも漏れがある可能性があります。業界の専門家からのアドバイスをぜひお聞かせください。
  • この記事で説明されている内容は、実際の戦闘環境でのみ検証およびテストされており、読者はそこから学ぶことができますが、運用環境で直接使用することは固く禁じられていますこれによって生じたいかなる問題についても作者は責任を負いません

この記事は、複数の記事を公開するブログであるOpenWriteによって公開されています。

RustDesk、不正行為横行のため国内サービスを停止 Apple、M4チップを発売 タオバオ(taobao.com)、Webバージョンの最適化作業を再開 高校生が成人への贈り物として独自のオープンソースプログラミング言語を作成 - ネチズンの批判的なコメント:防衛 Yunfeng 氏は Alibaba を退職し、将来的には Windows プラットフォーム上で 独立したゲーム プログラマー向けの。 Visual Studio Code 1.89 は Java 17 をリリースします。これは、最も一般的に使用されている Java LTS バージョンです。Windows 10 の市場シェアは 70 です。 %、Windows 11 は減少し続ける。Google はオープンソースの Rabbit R1 を支持する。Haier Electric はオープン プラットフォームを閉鎖する。
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4197945/blog/11105906