OpenEuler 22.03 に KubeSphere をインストールする実践チュートリアル

著者: Lao Z 氏、China Telecom Digital Intelligence Technology Co., Ltd. 山東支社の運用および保守アーキテクト。クラウド ネイティブの愛好家であり、現在はクラウド ネイティブの運用と保守、およびクラウド ネイティブ分野のテクノロジ スタックに注力しているKubernetes、KubeSphere、DevOps、OpenStack、Ansible などが含まれます。

序文

地図

KubeSphere-openEuler-mind

知識ポイント

  • 評価:エントリーレベル
  • KubeKey のインストールと KubeSphere および Kubernetes のデプロイメント
  • openEuler オペレーティング システムの基本構成
  • 共通の Kubernetes ワークロードの作成

デモサーバーの構成

CPU名 IP CPU メモリー システムディスク データディスク 使用
ks-マスター-0 192.168.9.91 4 16 40 200 KubeSphere/k8s-master/k8s-worker
ks-マスター-1 192.168.9.92 4 16 40 200 KubeSphere/k8s-master/k8s-worker
ks-マスター-2 192.168.9.93 4 16 40 200 KubeSphere/k8s-master/k8s-worker
合計 3 12 48 120 600

デモ環境にはソフトウェアのバージョン情報が含まれます

  • OS:openEuler 22.03 LTS SP1 x86_64
  • キューブスフィア: 3.3.2
  • Kubernetes:v1.25.5
  • KubeKey: v3.0.7

序章

この記事では、 kubeSphere および Kubernetes クラスターをopenEuler 22.03 LTS SP1 X86 アーキテクチャ サーバーにデプロイする方法について説明します。KubeSphere によって開発された KubeKey ツールを使用して自動デプロイメントを実装し、3 台​​のサーバーに高可用性モードを実装して、Kubernetes クラスターと KubeSphere のデプロイメントを最小限に抑えます。読者が展開プロセスを簡単に実行できるように、詳細な展開手順を提供します。

オペレーティングシステムの基本構成

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

ホスト名を構成する

hostnamectl hostname ks-master-0

ホストファイルを設定する

/etc/hosts ファイルを編集し、計画したサーバー IP とホスト名をファイルに追加します。

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

SSH キーベースの認証を構成する

KubeKey は、KubeSphere および Kubernetes サービスを自動的にデプロイするときに、リモート サーバーの接続認証方法としてパスワードとキーの使用をサポートします。この記事では、パスワードとキーを同時に構成する方法を説明するため、デプロイメント ユーザーrootに対してパスワードなしの SSH 認証を構成する必要があります。

このセクションはオプションの構成項目です。サーバーのリモート接続の認証方法として純粋なパスワードを使用する場合は、このセクションを無視できます。

この記事では、マスター 0 ノードをデプロイメント ノードとして使用しており、次の操作はマスター 0ノードでのみ実行する必要があります。

root ユーザーとしてシステムにログインし、ssh-keygenコマンドを使用して新しい SSH キー ペアを生成します。コマンドが完了すると、SSH 公開キーと秘密キーが/root/.sshディレクトリに保存されます。

ssh-keygen -t ed25519

コマンド実行による効果は以下のとおりです。

[root@ks-master-0 ~]# ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/id_ed25519):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_ed25519
Your public key has been saved in /root/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:2OWDf+17N2d10UwoEtpg06Swd9l40NNUNOcZgSLpWME root@ks-master-0
The key's randomart image is:
+--[ED25519 256]--+
|      . =+*o ooB=|
|       + Eo*+.o.*|
|      . B B.+o +o|
|       = * .   .o|
|      . S o     .|
|         . . .  o|
|          . . . o|
|           . . .=|
|              o++|
+----[SHA256]-----+

次に、次のコマンドを入力して、マスター 0ノードから他のノードに SSH 公開キーを送信します。コマンドの実行時に「yes」と入力してサーバーの SSH フィンガープリントを受け入れ、プロンプトが表示されたらrootユーザーのパスワードを入力します。

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

以下は、キーがコピーされたときの正しい出力です。

[root@ks-master-0 ~]# ssh-copy-id root@ks-master-0
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_ed25519.pub"
/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

Authorized users only. All activities may be monitored and reported.
root@ks-master-0's password:

Number of key(s) added: 1

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

SSH 公開キーを追加してアップロードした後、次のコマンドを実行して、パスワード認証なしで root ユーザーを介してすべてのサーバーに接続できることを確認できます。

[root@ks-master-0 ~]# ssh root@ks-master-0
# 登陆输出结果 略

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

サーバーのタイムゾーンをAsia/Shanghaiとして構成します。

timedatectl set-timezone Asia/Shanghai

サーバーのタイムゾーンを確認します。正しい構成は次のとおりです。

[root@ks-master-0 ~]# timedatectl
               Local time: 一 2023-05-22 10:11:52 CST
           Universal time: 一 2023-05-22 02:11:52 UTC
                 RTC time: 一 2023-05-22 02:11:52
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

chronyをインストールして時刻同期を設定する

時刻同期ソフトウェアとして chrony をインストールします。

yum install chrony

設定ファイル /etc/chrony.conf を変更し、NTP サーバーの設定を変更します。

vi /etc/chrony.conf

# 删除所有的 pool 配置
pool pool.ntp.org iburst

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

chronyサービスを再起動します

systemctl restart chronyd

chrony 同期ステータスを確認します。

# 执行查看命令
chronyc sourcestats -v

# 正常的输出结果如下
[root@ks-master-0 ~]# 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

システムのファイアウォールをオフにする

systemctl stop firewalld && systemctl disable firewalld

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

すべてのノードで、 rootユーザーとしてシステムにログインし、次のコマンドを実行して、Kubernetes の基本的なシステム依存関係をインストールします。

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

# 安装其他必备包
yum install tar

KubeSphere と Kubernetes のインストールとデプロイ

KubeKey をダウンロード

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

  • KubeKey の最新バージョンをダウンロードする
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 -

# 正确的执行效果如下
[root@ks-master-0 ~]# cd ~
[root@ks-master-0 ~]# mkdir kubekey
[root@ks-master-0 ~]# cd kubekey/
[root@ks-master-0 kubekey]# export KKZONE=cn
[root@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!

[root@ks-master-0 kubekey]# ll
总用量 111988
-rwxr-xr-x 1 root root 78901793  1月 18 09:59 kk
-rw-r--r-- 1 root root 35769576  5月 22 10:24 kubekey-v3.0.7-linux-amd64.tar.gz
  • KubeKey でサポートされている Kubernetes バージョンのリストを表示する
./kk version --show-supported-k8s

# 输出如下
[root@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

Kubernetes および KubeSphere デプロイメント プロファイルを作成する

クラスター構成ファイルを作成します。この例では、KubeSphere v3.3.2 および Kubernetes v1.25.5 を選択します。同時に、構成ファイル名をkubesphere-v3.3.2.yamlとして指定します。指定しない場合、デフォルトのファイル名はconfigです-sample.yaml

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

コマンドが正常に実行されると、kubesphere-v3.3.2.yaml という名前の構成ファイルが現在のディレクトリに生成されます。

[root@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
[root@ks-master-0 kubekey]# ll
总用量 111996
-rwxr-xr-x 1 root root 78901793  1月 18 09:59 kk
-rw-r--r-- 1 root root 35769576  5月 22 10:24 kubekey-v3.0.7-linux-amd64.tar.gz
-rw-r--r-- 1 root root     4680  5月 22 10:25 kubesphere-v3.3.2.yaml

この例では、3 つのノードがコントロール プレーン ノードとして使用され、ワー​​カー ノードとして多重化されています。

設定ファイルkubesphere-v3.3.2.yamlを編集し、hostsやroleGroupsなどの情報を変更します。

  • hosts は、ノードの IP、ssh ユーザー、ssh パスワード、および ssh キーを指定します。この例では、パスワードとキーを同時に使用する構成方法を示しています。
  • roleGroups は、ks-master-0、ks-master-1、および ks-master-2 を etcd、コントロール プレーン、およびワーカー ノードとして指定します。
  • InternalLoadbalancer は、組み込みの HAProxy ロード バランサーを有効にします。

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

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: root, password: "P@88w0rd"}
  - {name: ks-master-1, address: 192.168.9.92, internalAddress: 192.168.9.92, user: root, privateKeyPath: "~/.ssh/id_ed25519"}
  - {name: ks-master-2, address: 192.168.9.93, internalAddress: 192.168.9.93, user: root, 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: []

3.3 KubeSphere と Kubernetes のデプロイ

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

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

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

[root@ks-master-0 kubekey]# ./kk create cluster -f kubesphere-v3.3.2.yaml


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

10:32:17 CST [GreetingsModule] Greetings
10:32:17 CST message: [ks-master-2]
Greetings, KubeKey!
10:32:18 CST message: [ks-master-0]
Greetings, KubeKey!
10:32:18 CST message: [ks-master-1]
Greetings, KubeKey!
10:32:18 CST success: [ks-master-2]
10:32:18 CST success: [ks-master-0]
10:32:18 CST success: [ks-master-1]
10:32:18 CST [NodePreCheckModule] A pre-check on nodes
10:32:22 CST success: [ks-master-0]
10:32:22 CST success: [ks-master-2]
10:32:22 CST success: [ks-master-1]
10:32:22 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      |        |            | y          |             |                  | CST 10:32:22 |
| ks-master-1 | y    | y    | y       | y        | y     | y     | y       | y         | y      |        |            | y          |             |                  | CST 10:32:22 |
| ks-master-2 | y    | y    | y       | y        | y     | y     | y       | y         | y      |        |            | y          |             |                  | CST 10:32:22 |
+-------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+

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

ネットワーク速度とマシン構成に応じて、展開が完了するまでに約 10 ~ 30 分かかります。

デプロイメントが完了すると、ターミナルに次のような出力が表示されるはずです。デプロイメントが完了したことを示すプロンプトが表示される一方で、出力には、ユーザーが KubeSphere にログインするためのデフォルトの管理者ユーザーとパスワードも表示されます。

clusterconfiguration.installer.kubesphere.io/ks-installer created
10:50:36 CST skipped: [ks-master-2]
10:50:36 CST skipped: [ks-master-1]
10:50:36 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-22 11:02:08
#####################################################
11:02:12 CST skipped: [ks-master-2]
11:02:12 CST skipped: [ks-master-1]
11:02:12 CST success: [ks-master-0]
11:02:12 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

導入の検証

  1. KubeSphere管理コンソールを確認する

ブラウザを開いてマスター 0 ノードの IP アドレスとポート30880にアクセスすると、KubeSphere 管理コンソールのログイン ページが表示されます。

デフォルトのユーザーadminとデフォルトのパスワードP@88w0rdを入力し、「ログイン」をクリックします。

KubeSphere-openEuler-0

ログイン後、KubeSphere のデフォルト ユーザー管理者のデフォルトのパスワードを変更するように求められ、新しいパスワードを入力して [送信] をクリックします。

KubeSphere-openEuler-1

送信が完了すると、システムは KubeSphere 管理者ユーザー ワークベンチ ページにジャンプします。このページには、現在の KubeSphere バージョンが v3.3.2 であり、使用可能な Kubernetes クラスターの数が 1 であることが表示されます。

KubeSphere-openEuler-2

次に、左上隅の「プラットフォーム管理」メニューをクリックし、「クラスター管理」を選択します。

KubeSphere-openEuler-3

クラスター管理インターフェイスに入ります。このページでは、クラスターのリソース使用状況、Kubernetes ステータス、ノード リソース使用率トップ、システム コンポーネント、ツールボックスなどを含むクラスターの基本情報を表示できます。

KubeSphere-openEuler-4

左側の「ノード」メニューをクリックし、「クラスターノード」をクリックして、Kubernetes クラスター内で使用可能なノードの詳細を表示します。

KubeSphere-openEuler-5

左側の「システム コンポーネント」メニューをクリックすると、インストールされているコンポーネントに関する詳細情報が表示されます。クラスターで使用される現在の最小インストールには、KubeSphere、Kubernetes、モニタリングの 3 つのカテゴリのコンポーネントのみが含まれています。

KubeSphere-openEuler-6

  1. コマンドラインからクラスター情報を確認する

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

kubectl get nodes -o wide

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

[root@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   25m   v1.25.5   192.168.9.91   <none>        openEuler 22.03 (LTS-SP1)   5.10.0-136.12.0.86.oe2203sp1.x86_64   containerd://1.6.4
ks-master-1   Ready    control-plane,worker   24m   v1.25.5   192.168.9.92   <none>        openEuler 22.03 (LTS-SP1)   5.10.0-136.12.0.86.oe2203sp1.x86_64   containerd://1.6.4
ks-master-2   Ready    control-plane,worker   24m   v1.25.5   192.168.9.93   <none>        openEuler 22.03 (LTS-SP1)   5.10.0-136.12.0.86.oe2203sp1.x86_64   containerd://1.6.4

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

kubectl get pods --all-namespaces

出力に見られるように、Kubernetes クラスター上では複数の名前空間 kube-system、kubesphere-control-system、kubesphere-monitoring-system、および kubesphere-system が使用可能であり、すべてのポッドが実行されています。

[root@ks-master-0 kubekey]# kubectl get pods --all-namespaces
NAMESPACE                      NAME                                           READY   STATUS    RESTARTS   AGE
kube-system                    calico-kube-controllers-75c594996d-p2bzw       1/1     Running   0          24m
kube-system                    calico-node-d8n6f                              1/1     Running   0          24m
kube-system                    calico-node-pfsvg                              1/1     Running   0          24m
kube-system                    calico-node-rlhw2                              1/1     Running   0          24m
kube-system                    coredns-67ddbf998c-glxfn                       1/1     Running   0          25m
kube-system                    coredns-67ddbf998c-ljrxm                       1/1     Running   0          25m
kube-system                    kube-apiserver-ks-master-0                     1/1     Running   0          25m
kube-system                    kube-apiserver-ks-master-1                     1/1     Running   0          24m
kube-system                    kube-apiserver-ks-master-2                     1/1     Running   0          24m
kube-system                    kube-controller-manager-ks-master-0            1/1     Running   0          25m
kube-system                    kube-controller-manager-ks-master-1            1/1     Running   0          24m
kube-system                    kube-controller-manager-ks-master-2            1/1     Running   0          24m
kube-system                    kube-proxy-8fv9q                               1/1     Running   0          24m
kube-system                    kube-proxy-b47p2                               1/1     Running   0          24m
kube-system                    kube-proxy-b9f8l                               1/1     Running   0          24m
kube-system                    kube-scheduler-ks-master-0                     1/1     Running   0          25m
kube-system                    kube-scheduler-ks-master-1                     1/1     Running   0          24m
kube-system                    kube-scheduler-ks-master-2                     1/1     Running   0          24m
kube-system                    nodelocaldns-8bbf2                             1/1     Running   0          24m
kube-system                    nodelocaldns-9kgm2                             1/1     Running   0          25m
kube-system                    nodelocaldns-mrtwr                             1/1     Running   0          24m
kube-system                    openebs-localpv-provisioner-57d95c6875-z9wwq   1/1     Running   0          24m
kube-system                    snapshot-controller-0                          1/1     Running   0          22m
kubesphere-controls-system     default-http-backend-5d5c44d77f-mcngb          1/1     Running   0          19m
kubesphere-controls-system     kubectl-admin-788ff75cd7-k59nr                 1/1     Running   0          13m
kubesphere-monitoring-system   kube-state-metrics-6cc9478499-82hwl            3/3     Running   0          16m
kubesphere-monitoring-system   node-exporter-b22bs                            2/2     Running   0          16m
kubesphere-monitoring-system   node-exporter-qqms9                            2/2     Running   0          16m
kubesphere-monitoring-system   node-exporter-zr9zp                            2/2     Running   0          16m
kubesphere-monitoring-system   prometheus-k8s-0                               2/2     Running   0          16m
kubesphere-monitoring-system   prometheus-k8s-1                               2/2     Running   0          16m
kubesphere-monitoring-system   prometheus-operator-6bd484db88-7qdkk           2/2     Running   0          16m
kubesphere-system              ks-apiserver-6797fc669-tttcb                   1/1     Running   0          19m
kubesphere-system              ks-console-6f9d57b699-ps4l2                    1/1     Running   0          19m
kubesphere-system              ks-controller-manager-6656d4f57d-mfmz7         1/1     Running   0          19m
kubesphere-system              ks-installer-55b8b4c4d9-srgfw                  1/1     Running   0          24m

これまでのところ、3 つの openEuler サーバー ノードを備えた最小限の Kubernetes クラスターと KubeSphere をデプロイしました。また、KubeSphere 管理コンソールとコマンド ライン インターフェイスを通じてクラスターのステータスを確認しました。

次に、単純な Nginx Web サーバーを Kubernetes クラスターにデプロイして、Kubernetes と KubeSphere が正常に使用できることをテストして確認します。

テストリソースをデプロイする

この例では、コマンドライン ツールを使用して Kubernetes クラスターに Nginx Web サーバーをデプロイし、KubeSphere グラフィカル管理コンソールを使用してデプロイされたリソース情報を表示します。

Nginx デプロイメントを作成する

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

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

Nginxサービスの作成

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

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

Nginx のデプロイメントとポッドを検証する

次のコマンドを実行して、作成されたデプロイメントおよびポッドのリソースを表示します。

kubectl get deployment -o wide
kubectl get pods -o wide

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

[root@ks-master-0 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@ks-master-0 kubekey]# kubectl get pods -o wide
NAME                     READY   STATUS    RESTARTS   AGE   IP             NODE          NOMINATED NODE   READINESS GATES
nginx-55f494c486-t44l4   1/1     Running   0          35s   10.233.69.7    ks-master-0   <none>           <none>
nginx-55f494c486-x62zs   1/1     Running   0          35s   10.233.102.5   ks-master-2   <none>           <none>

Nginx サービスの検証

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

kubectl get svc -o wide

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

[root@ks-master-0 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        27m   <none>
nginx        NodePort    10.233.36.81   <none>        80:30563/TCP   37s   app=nginx

Nginxサービスにアクセスする

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

  • ポッドへの直接アクセスの認証
curl 10.233.69.7

# 访问结果如下
[root@ks-master-0 kubekey]# curl 10.233.69.7
<!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.36.81

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

# 访问结果同上,略

管理コンソールで表示する

次に、KubeSphere 管理コンソールに戻り、管理コンソールで作成されたリソースを表示します。

注: KubeSphere の管理コンソールには、さまざまな Kubernetes リソースをわかりやすくグラフィカルに作成する機能がありますが、主な理由はスクリーンショットを撮るのが面倒なので、この記事ではコマンドラインを使用してテスト リソースを簡単に作成します。

KubeSphere 管理コンソールの基本的な機能を表示するだけですが、実際に使用すると、Kubernetes リソースをグラフィカルに作成および管理できます。

  • KubeSphere 管理コンソールにログインし、「プラットフォーム管理」をクリックし、「クラスター管理」を選択します。
  • クラスタ管理ページの左側にある「アプリケーション負荷」をクリックし、「ワークロード」をクリックします。デフォルトでは、展開タイプのすべてのワークロードが表示されます。

管理者アカウントを使用しているため、すべてのワークロードを表示でき、検索ボックスに nginx と入力すると、nginx デプロイ ワークロードのみが表示されます。

KubeSphere-openEuler-7

KubeSphere-openEuler-8

  • デプロイメントリストで nginx をクリックすると、詳細情報が表示され、nginx デプロイメント (デプロイメント) を管理できます。

KubeSphere-openEuler-9

  • 「プラットフォーム管理」-「クラスター管理」ページに戻り、クラスター管理ページの左側にある「アプリケーションロード」をクリックし、「サービス」をクリックします。デフォルトでは、サービスタイプのすべてのワークロードが表示されます。

管理者アカウントを使用しているため、すべてのワークロードを表示でき、検索ボックスに nginx と入力すると、nginx サービス ワークロードのみが表示されます。

KubeSphere-openEuler-10

KubeSphere-openEuler-11

  • サービス リストで nginx をクリックすると、詳細情報が表示され、nginx サービス (サービス) を管理できます。

KubeSphere-openEuler-12

これまでのところ、Nginx Web サーバーの Kubernetes クラスターへのデプロイメントを実装し、KubeSphere 管理コンソールを通じてデプロイメント、ポッド、およびサービスの詳細を表示および検証してきました。

結論

この記事では主に、KubeKey を使用して KubeSphere および Kubernetes の高可用性クラスターを 3 台の openEuler 22.03 LTS SP1 サーバーに自動的にデプロイする詳細なプロセスを紹介します。

デプロイメントが完了した後、KubeSphere 管理コンソールと kubectl コマンド ラインを使用して、KubeSphere および Kubernetes クラスターのステータスを表示および確認します。

最終的に、Kubernetes クラスターに Nginx Web サーバーをデプロイすることで Kubernetes クラスターと KubeSphere の可用性を確認し、KubeSphere 管理コンソールで Nginx Pod の動作とサービスのステータスを確認することで KubeSphere の基本的な使用方法を学びました。

この記事は、ブログ用のマルチポスト プラットフォームであるOpenWriteによって公開されています。

{{名前}}
{{名前}}

おすすめ

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