著者: Lao Z 氏、China Telecom Digital Intelligence Technology Co., Ltd. 山東支社の運用および保守アーキテクト。クラウド ネイティブの愛好家であり、現在はクラウド ネイティブの運用と保守、およびクラウド ネイティブ分野のテクノロジ スタックに注力しているKubernetes、KubeSphere、DevOps、OpenStack、Ansible などが含まれます。
序文
地図
知識ポイント
- 評価:エントリーレベル
- 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
導入の検証
- KubeSphere管理コンソールを確認する
ブラウザを開いてマスター 0 ノードの IP アドレスとポート30880にアクセスすると、KubeSphere 管理コンソールのログイン ページが表示されます。
デフォルトのユーザーadminとデフォルトのパスワードP@88w0rdを入力し、「ログイン」をクリックします。
ログイン後、KubeSphere のデフォルト ユーザー管理者のデフォルトのパスワードを変更するように求められ、新しいパスワードを入力して [送信] をクリックします。
送信が完了すると、システムは KubeSphere 管理者ユーザー ワークベンチ ページにジャンプします。このページには、現在の KubeSphere バージョンが v3.3.2 であり、使用可能な Kubernetes クラスターの数が 1 であることが表示されます。
次に、左上隅の「プラットフォーム管理」メニューをクリックし、「クラスター管理」を選択します。
クラスター管理インターフェイスに入ります。このページでは、クラスターのリソース使用状況、Kubernetes ステータス、ノード リソース使用率トップ、システム コンポーネント、ツールボックスなどを含むクラスターの基本情報を表示できます。
左側の「ノード」メニューをクリックし、「クラスターノード」をクリックして、Kubernetes クラスター内で使用可能なノードの詳細を表示します。
左側の「システム コンポーネント」メニューをクリックすると、インストールされているコンポーネントに関する詳細情報が表示されます。クラスターで使用される現在の最小インストールには、KubeSphere、Kubernetes、モニタリングの 3 つのカテゴリのコンポーネントのみが含まれています。
- コマンドラインからクラスター情報を確認する
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 デプロイ ワークロードのみが表示されます。
- デプロイメントリストで nginx をクリックすると、詳細情報が表示され、nginx デプロイメント (デプロイメント) を管理できます。
- 「プラットフォーム管理」-「クラスター管理」ページに戻り、クラスター管理ページの左側にある「アプリケーションロード」をクリックし、「サービス」をクリックします。デフォルトでは、サービスタイプのすべてのワークロードが表示されます。
管理者アカウントを使用しているため、すべてのワークロードを表示でき、検索ボックスに nginx と入力すると、nginx サービス ワークロードのみが表示されます。
- サービス リストで nginx をクリックすると、詳細情報が表示され、nginx サービス (サービス) を管理できます。
これまでのところ、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によって公開されています。