コンテンツにスキップ

Kubernetes クイックデプロイガイド

0. 概要

本ドキュメントに従ってKubernetesを正常にデプロイすると、以下の作業がデフォルトで完了します

機能コンポーネントの対象範囲
  • kubernetes 1.24.2 高可用性デプロイ

  • coredns コンポーネントのインストール

  • node-local-dns コンポーネントのインストール

  • ingress-nginx コンポーネントのインストール

  • metrics-server コンポーネントのインストール

  • openebs-provisioner コンポーネントドライバーのインストール

リソース一覧

1. 「最低構成」はPOCシナリオでのデプロイに適しており、機能検証のみを目的としています。本番環境としては使用しないでください。
2. 本番デプロイの場合は、実際に取り込むデータ量に基づいて評価してください。取り込むデータ量が多くなるほど、TDengine、OpenSearchのストレージとスペック構成もそれに応じて高くする必要があります。
用途 リソースタイプ 最低スペック 推奨スペック 数量 備考
Kubernetes Master 物理サーバー|仮想マシン 4C8GB 100GB 8C16GB 100GB 3 バージョン: 1.24.2 注:仮想マシンの場合はリソーススペックを適宜引き上げ、1台のmasterノードをデプロイノードとして兼用してください
Kubernetes workerload 物理サーバー|仮想マシン 4C8GB 100GB 8C16GB 100GB 4 k8sクラスターのworkerノード。Guanceアプリケーション、k8sコンポーネント、基本コンポーネントサービス(Mysql 5.7.18、Redis 6.0.6)をホストします
Guanceプロキシサービス 物理サーバー|仮想マシン 2C4GB 100GB 4C8GB 200GB 1 nginxリバースプロキシサーバーのデプロイに使用。ingressエッジノードへのプロキシを行います。注:セキュリティ上の理由から、クラスターのエッジノードを直接公開しないでください
Guanceネットワークファイルシステムサービス 物理サーバー|仮想マシン 2C4GB 200G 4C8GB 1TB 高性能ディスク 1 ネットワークファイルシステム、ネットワークストレージサービスのデプロイ。デフォルトはNFS(既存のNFSサービスがある場合はこのマシンは不要)
DataWay 物理サーバー|仮想マシン 2C4GB 100GB 4C8GB 100GB 1 DataWay のデプロイ用
OpenSearch 物理サーバー|仮想マシン 4C8GB 1TB 8C16G 1TB 3 OpenSearch バージョン:2.2.1 注:パスワード認証を有効にし、対応バージョンの分詞プラグイン analysis-ik をインストールする必要があります
TDengine 物理サーバー|仮想マシン 4C8GB 500GB 8C16G 1TB 3 TDengine バージョン:2.6.0.18
その他 メールサーバー/SMS - - 1 SMSゲートウェイ、メールサーバー、アラートチャネル
登録済み正規ワイルドカードドメイン - - 1 メインドメインはICP登録が必要
SSL/TLS証明書 ワイルドカードドメイン証明書 ワイルドカードドメイン証明書 1 サイトの安全性を確保

1. 前提条件

重要
  • 基本環境のオフラインリソースパッケージを全てのクラスターノードにアップロードし、サーバーの/etcディレクトリに解凍してください
  • デプロイノードとクラスターの他のノード間でSSHパスワードなしログインが設定されていること(デプロイノード自身も含む)
  • Guanceプラットフォームのオフラインリソースパッケージを全てのクラスターノードにアップロードし、コンテナランタイム環境(containerd)にインポートしてください
# ダウンロードしたGuanceイメージパッケージを解凍し、containerdにインポート

gunzip xxx.tar.gz
ctr -n k8s.io images import xxx.tar

1.1 パスワードなしログイン設定の参考

# デプロイマシンにログインしてコマンドを実行
# 公開鍵ペアを生成
[root@k8s-node01 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:vruHbsWUUL5M9k0dg15zhIX5Y9MZVJ+enf0JhzF5lP0 root@k8s-node02
The key's randomart image is:
+---[RSA 2048]----+
|         ..   o@B|
|        ..   .**B|
|         .+..+o+X|
|         +oo +*=E|
|        Soo .oo==|
|       .  o   o o|
|        .o     ..|
|        o..      |
|       o=+       |
+----[SHA256]-----+

# $IP は自身を含む全てのノードのアドレスに置き換え、プロンプトに従いyesとrootパスワードを入力
ssh-copy-id $IP 

# 各ノードにpythonのシンボリックリンクを設定(デフォルトでは不要)。【python3を使用する特定のバージョンで必要】
# ssh $IP ln -s /usr/bin/python3 /usr/bin/python

2. デプロイ準備

2.1 リソースパッケージのダウンロード

基本環境のオフラインリソースパッケージのダウンロード先 Download

2.2 オフラインリソースパッケージの構造説明

オフラインパッケージの内容に関する簡単な説明

  • /etc/kubeasz はkubeaszのメインディレクトリ
  • /etc/kubeasz/example はサンプル設定ファイルを含む
  • /etc/kubeasz/clustersは作成したクラスターの関連設定ファイルを含む
  • /etc/kubeasz/guance はGuance関連のcharts、yaml 情報を含む
  • /etc/kubeasz/bin はk8s/etcd/docker/cni 等のバイナリファイルを含む
  • /etc/kubeasz/down はクラスターインストール時に必要なオフラインコンテナイメージパッケージ等を含む
  • /etc/kubeasz/down/packages はクラスターインストール時に必要なシステム基本ソフトウェアを含む

3. クラスターのインストール

3.1 注意事項

重要
  • 各ノードのタイムゾーン設定と時刻が同期していることを確認

  • ドキュメント内のコマンドは、デフォルトでroot権限での実行が必要

  • クリーンなシステムでインストールを開始してください。kubeadmや他のk8sディストリビューションを以前にインストールしたシステムでは使用しないでください

  • ワンクリックインストールを実行する前に、カスタムクラスターで生成された設定ファイル(主に/etc/kubease/clusters/xxx/hostsと/etc/kubeasz/clusters/config.yaml)を必ず設定し、確認してください

  • 識別しやすいホスト名に変更する【オプション】

# xxx は設定するホスト名
hostnamectl set-hostname xxx

3.2 クラスターのロール計画

高可用性クラスターに必要なノード構成は以下の通りです

ロール 数量 説明
deploy(デプロイ)ノード 1 ansible/ezctlコマンドを実行。通常は最初のmasterノードを兼用
etcdノード 3 etcdクラスターは1,3,5,...の奇数個のノードが必要。通常はmasterノードを兼用
masterノード 3 高可用性クラスターには少なくとも2つのmasterノードが必要
nodeノード N アプリケーションのワークロードを実行するノード。必要に応じてマシン構成の引き上げやノード数の追加が可能
説明

デフォルト設定では、コンテナランタイムとkubeletは/varのディスク容量を消費します。ディスクのパーティション構成が特殊な場合は、クラスター設定を作成する前に、example/config.ymlでコンテナランタイムとkubeletのデータディレクトリを設定してください:CONTAINERD_STORAGE_DIR DOCKER_STORAGE_DIR KUBELET_ROOT_DIR

3.3 デプロイ手順

3.3.1 デプロイノードでk8sインストールを準備

デプロイノードサーバーにログイン /etc/kueaszディレクトリに移動し、以下のコマンドを実行

# デプロイマシンにdockerサービスをインストール
# registryローカルリポジトリを起動
# オフライン環境に必要なイメージパッケージをロードし、registryリポジトリにプッシュ

./ezdown -D    
./ezdown -X 

ezdownのその他のパラメータについては、ezdownを実行して確認してください。

ヒント

実行できない場合は、/etc/kubeaszディレクトリに移動して ./ezdown -h を実行して確認してください

3.3.2 クラスター設定インスタンスの作成

# kubeasz コンテナを実行
./ezdown -S

# 新しいクラスター guancecloud を作成
# クラスター名は必要に応じてカスタマイズ可能で、クラスター名に対応するディレクトリが生成されます
docker exec -it kubeasz ezctl new guancecloud
# 結果表示例
2022-10-19 10:48:23 DEBUG generate custom cluster files in /etc/kubeasz/clusters/guancecloud
2022-10-19 10:48:23 DEBUG set version of common plugins
2022-10-19 10:48:23 DEBUG cluster k8s-01: files successfully created.
2022-10-19 10:48:23 INFO next steps 1: to config '/etc/kubeasz/clusters/guancecloud/hosts'
2022-10-19 10:48:23 INFO next steps 2: to config '/etc/kubeasz/clusters/guancecloud/config.yml'

次に、プロンプトに従ってクラスター設定ファイルを変更します

# 前述のクラスターロール計画に基づいてhostsファイルを変更
'/etc/kubeasz/clusters/xxx/hosts'  

# その他のクラスターレベルの主要設定オプションはconfig.ymlファイルで変更可能です【デフォルトを推奨。変更するパラメータを十分に理解している場合のみ変更してください】
'/etc/kubeasz/clusters/xxx/config.yml'

設定ファイルのサンプル内容は以下の通りです

説明

カスタム設定が必要な項目は、サンプル設定ファイルを参照してください

サンプル設定ファイル
# config.yaml

############################
# prepare
############################
# オフラインインストールのシステムソフトウェアパッケージを選択 (offline|online)
# オフライン環境のデフォルトは "offline"
INSTALL_SOURCE: "offline"

# システムセキュリティ強化を選択 github.com/dev-sec/ansible-collection-hardening
OS_HARDEN: false


############################
# role:deploy
############################
# default: ca will expire in 100 years
# default: certs issued by the ca will expire in 50 years
CA_EXPIRY: "876000h"
CERT_EXPIRY: "438000h"

# kubeconfig 設定パラメータ
CLUSTER_NAME: "cluster1"
CONTEXT_NAME: "context-{{ CLUSTER_NAME }}"

# k8s version
K8S_VER: "__k8s_ver__"

############################
# role:etcd
############################
# 異なるwalディレクトリを設定することで、ディスクIOの競合を回避し、パフォーマンスを向上できます

# ディスク容量が大きいディレクトリに変更することを推奨。実際の状況に応じて設定
ETCD_DATA_DIR: "/var/lib/etcd"
ETCD_WAL_DIR: ""


############################
# role:runtime [containerd,docker]
############################
# ------------------------------------------- containerd
# [.]コンテナリポジトリミラーを有効化
ENABLE_MIRROR_REGISTRY: true

# [containerd]基本コンテナイメージ
SANDBOX_IMAGE: "easzlab.io.local:5000/easzlab/pause:__pause__"

# [containerd]コンテナ永続化ストレージディレクトリ

# ディスク容量が大きいディレクトリに変更することを推奨。実際の状況に応じて設定
CONTAINERD_STORAGE_DIR: "/var/lib/containerd" 

# ------------------------------------------- docker
# [docker]コンテナストレージディレクトリ
# ディスク容量が大きいディレクトリに変更することを推奨。実際の状況に応じて設定
# デプロイマシンのみにdockerサービスが存在します
DOCKER_STORAGE_DIR: "/var/lib/docker"

# [docker]Restful APIを有効化
ENABLE_REMOTE_API: false

# [docker]信頼するHTTPリポジトリ
INSECURE_REG: '["http://easzlab.io.local:5000"]'


############################
# role:kube-master
############################
# k8s クラスター master ノードの証明書設定。複数のIPとドメインを追加可能(例:パブリックIPとドメイン)
MASTER_CERT_HOSTS:
  - "10.1.1.1"
  - "k8s.easzlab.io"
  #- "www.test.com"

# node ノード上の pod ネットワークセグメントのマスク長(各ノードが割り当て可能な最大pod IPアドレス数を決定)
# flannel が --kube-subnet-mgr パラメータを使用する場合、この設定を読み取り各ノードにpodネットワークセグメントを割り当てます
# https://github.com/coreos/flannel/issues/847
NODE_CIDR_LEN: 24


############################
# role:kube-node
############################
# Kubelet ルートディレクトリ
# ディスク容量が大きいディレクトリに変更することを推奨。実際の状況に応じて設定
KUBELET_ROOT_DIR: "/var/lib/kubelet"

# nodeノードの最大pod数
MAX_PODS: 110

# kubeコンポーネント(kubelet,kube-proxy,dockerd等)用に予約するリソース量を設定
# 数値の設定は templates/kubelet-config.yaml.j2 を参照
KUBE_RESERVED_ENABLED: "no"

# k8s は system-reserved の軽率な有効化を推奨しません。長期的な監視に基づきシステムのリソース使用状況を把握している場合のみ有効にしてください
# システムの稼働時間に応じて、リソース予約を適宜増やす必要があります。数値の設定は templates/kubelet-config.yaml.j2 を参照
# システム予約設定は 4c/8g 仮想マシン、最小限のシステムサービスインストールに基づきます。高性能物理マシンを使用する場合は予約を適宜増やすことができます
# また、クラスターインストール時はapiserver等のリソース消費が短時間で大きくなるため、少なくとも1gのメモリ予約を推奨
SYS_RESERVED_ENABLED: "no"


############################
# role:network [flannel,calico,cilium,kube-ovn,kube-router]
############################
# ------------------------------------------- flannel
# [flannel]flannel バックエンド "host-gw","vxlan" 等を設定
FLANNEL_BACKEND: "vxlan"
DIRECT_ROUTING: false

# [flannel] flanneld_image: "quay.io/coreos/flannel:v0.10.0-amd64"
flannelVer: "__flannel__"
flanneld_image: "easzlab.io.local:5000/easzlab/flannel:{{ flannelVer }}"

# ------------------------------------------- calico
# [calico]CALICO_IPV4POOL_IPIP=“off” を設定すると、ネットワークパフォーマンスを向上できます。制限事項は docs/setup/calico.md を参照
CALICO_IPV4POOL_IPIP: "Always"

# [calico]calico-nodeが使用するホストIPを設定。bgpネイバーはこのアドレスを介して確立されます。手動指定または自動検出が可能
IP_AUTODETECTION_METHOD: "can-reach={{ groups['kube_master'][0] }}"

# [calico]calico ネットワーク backend を設定: brid, vxlan, none
CALICO_NETWORKING_BACKEND: "brid"

# [calico]calico が route reflectors を使用するかどうかを設定
# クラスター規模が50ノードを超える場合は、この機能の有効化を推奨
CALICO_RR_ENABLED: false

# CALICO_RR_NODES はroute reflectorsを構成するノードを設定。未設定の場合はデフォルトでクラスターのmasterノードを使用
# CALICO_RR_NODES: ["192.168.1.1", "192.168.1.2"]
CALICO_RR_NODES: []

# [calico]calico バージョンの更新をサポート: [v3.3.x] [v3.4.x] [v3.8.x] [v3.15.x]
calico_ver: "__calico__"

# [calico]calico メジャーバージョン
calico_ver_main: "{{ calico_ver.split('.')[0] }}.{{ calico_ver.split('.')[1] }}"

# ------------------------------------------- cilium
# [cilium]イメージバージョン
cilium_ver: "__cilium__"
cilium_connectivity_check: true
cilium_hubble_enabled: false
cilium_hubble_ui_enabled: false

# ------------------------------------------- kube-ovn
# [kube-ovn] OVN DB and OVN Control Plane ノードを選択。デフォルトは最初のmasterノード
OVN_DB_NODE: "{{ groups['kube_master'][0] }}"

# [kube-ovn]オフラインイメージtarパッケージ
kube_ovn_ver: "__kube_ovn__"

# ------------------------------------------- kube-router
# [kube-router]パブリッククラウドでは制限があるため、通常は常にipinipを有効にする必要があります。自社環境では "subnet" に設定可能
OVERLAY_TYPE: "full"

# [kube-router]NetworkPolicy サポートのオン/オフ
FIREWALL_ENABLE: true

# [kube-router]kube-router イメージバージョン
kube_router_ver: "__kube_router__"
busybox_ver: "1.28.4"


############################
# role:cluster-addon
############################
# coredns 自動インストール
dns_install: "yes"
corednsVer: "__coredns__"
ENABLE_LOCAL_DNS_CACHE: true
dnsNodeCacheVer: "__dns_node_cache__"
# local dns cache アドレスを設定
LOCAL_DNS_CACHE: "169.254.20.10"

# metric server 自動インストール
metricsserver_install: "yes"
metricsVer: "__metrics__"

# dashboard 自動インストール
dashboard_install: "no"
dashboardVer: "__dashboard__"
dashboardMetricsScraperVer: "__dash_metrics__"

# prometheus 自動インストール
prom_install: "no"
prom_namespace: "monitor"
prom_chart_ver: "__prom_chart__"

# nfs-provisioner 自動インストール
# 既存の nfs がある場合は "yes" に設定し、正しい server 情報を設定する必要があります
nfs_provisioner_install: "no"
nfs_provisioner_namespace: "kube-system"
nfs_provisioner_ver: "__nfs_provisioner__"
nfs_storage_class: "managed-nfs-storage"
nfs_server: "192.168.1.10"
nfs_path: "/data/nfs"

# network-check 自動インストール
network_check_enabled: false
network_check_schedule: "*/5 * * * *"

############################
# role:harbor
############################
# harbor version,完全なバージョン番号
HARBOR_VER: "__harbor__"
HARBOR_DOMAIN: "harbor.easzlab.io.local"
HARBOR_TLS_PORT: 8443

# if set 'false', you need to put certs named harbor.pem and harbor-key.pem in directory 'down'
HARBOR_SELF_SIGNED_CERT: true

# install extra component
HARBOR_WITH_NOTARY: false
HARBOR_WITH_TRIVY: false
HARBOR_WITH_CLAIR: false
HARBOR_WITH_CHARTMUSEUM: true

# ingress-nginx 関連設定
ingress_nginx_install: "yes"
ingressnginxVer: v1.4.0
certgenVer: v20220916-gd32f8c343

ホストの設定

ホスト設定例
# 'etcd' cluster should have odd member(s) (1,3,5,...)
# 実際の計画に基づいてIPを必ず置き換えてください
[etcd]
192.168.1.1
192.168.1.2
192.168.1.3

# master node(s)
# 実際の計画に基づいてIPを必ず置き換えてください
[kube_master]
192.168.1.1
192.168.1.2

# work node(s)
# 実際の計画に基づいてIPを必ず置き換えてください
[kube_node]
192.168.1.3
192.168.1.4

# [optional] harbor server, a private docker registry
# 'NEW_INSTALL': 'true' to install a harbor server; 'false' to integrate with existed one
[harbor]
#192.168.1.8 NEW_INSTALL=false

# [optional] loadbalance for accessing k8s from outside
[ex_lb]
#192.168.1.6 LB_ROLE=backup EX_APISERVER_VIP=192.168.1.250 EX_APISERVER_PORT=8443
#192.168.1.7 LB_ROLE=master EX_APISERVER_VIP=192.168.1.250 EX_APISERVER_PORT=8443

# [optional] ntp server for the cluster
[chrony]
#192.168.1.1

[all:vars]
# --------- Main Variables ---------------
# Secure port for apiservers
SECURE_PORT="6443"

# Cluster container-runtime supported: docker, containerd
# if k8s version >= 1.24, docker is not supported
CONTAINER_RUNTIME="containerd"

# Network plugins supported: calico, flannel, kube-router, cilium, kube-ovn
# デフォルト値の使用を推奨、または "flannel" に変更
CLUSTER_NETWORK="calico"

# Service proxy mode of kube-proxy: 'iptables' or 'ipvs'
PROXY_MODE="ipvs"

# K8S Service CIDR, not overlap with node(host) networking
# ホストIPセグメントと重複しないこと
SERVICE_CIDR="10.68.0.0/16"

# Cluster CIDR (Pod CIDR), not overlap with node(host) networking
# ホストIPセグメントと重複しないこと
CLUSTER_CIDR="172.20.0.0/16"

# NodePort Range
NODE_PORT_RANGE="30000-32767"

# Cluster DNS Domain
CLUSTER_DNS_DOMAIN="cluster.local"

# -------- Additional Variables (don't change the default value right now) ---
# Binaries Directory
bin_dir="/opt/kube/bin"

# Deploy Directory (kubeasz workspace)
base_dir="/etc/kubeasz"

# Directory for a specific cluster
cluster_dir="{{ base_dir }}/clusters/_cluster_name_"

# CA and other components cert/key Directory
ca_dir="/etc/kubernetes/ssl"

3.3.3 ワンクリックデプロイ

上記の操作が問題なく実行されたことを確認した後、以下のコマンドを実行して迅速にデプロイします

ヒント

# コマンドエイリアスを設定すると便利です

echo "alias dk='docker exec -it kubeasz'" >> /root/.bashrc

source /root/.bashrc
# コマンド補完を設定することを推奨。helmコマンドが見つからないエラーが出る場合は、一度ログアウトしてから再度SSHでサーバーにログインし、環境変数を確認し、helmコマンドを実行して実行可能か確認してください

echo "source <(/etc/kubeasz/bin/helm completion bash)"  >> /root/.bashrc

source /root/.bashrc

# ワンクリックインストールコマンド。docker exec -it kubeasz ezctl setup xxx all と同等
# xxx は作成したクラスター名
dk ezctl setup guancecloud all

# または段階的にインストール。具体的な使用方法は dk ezctl help setup で段階的インストールのヘルプ情報を確認
# dk ezctl setup guancecloud 01
# dk ezctl setup guancecloud 02
# dk ezctl setup guancecloud 03
# dk ezctl setup guancecloud 04
# コマンド実行後、task にエラーがないこと
TASK [cluster-addon : 準備 DNSのデプロイファイル] *********************************************
changed: [10.200.14.144]

TASK [cluster-addon : 作成corednsデプロイ] *********************************************
changed: [10.200.14.144]

TASK [cluster-addon : 準備dnscacheのデプロイファイル] *****************************************
changed: [10.200.14.144]

TASK [cluster-addon : 作成dnscacheデプロイ] ********************************************
changed: [10.200.14.144]

TASK [cluster-addon : 準備 metrics-serverのデプロイファイル] **********************************
changed: [10.200.14.144]

TASK [cluster-addon : 作成 metrics-serverデプロイ] *************************************
changed: [10.200.14.144]

TASK [cluster-addon : 準備 nfs-provisioner 設定ディレクトリ] *********************************
changed: [10.200.14.144]

TASK [cluster-addon : 準備 nfs-provisionerデプロイファイル] **********************************
changed: [10.200.14.144] => (item=nfs-provisioner.yaml)
changed: [10.200.14.144] => (item=test-pod.yaml)

TASK [cluster-addon : 作成 nfs-provisionerデプロイ] ************************************
changed: [10.200.14.144]

TASK [cluster-addon : 準備 openebs-provisioner 設定ディレクトリ] *****************************
changed: [10.200.14.144]

TASK [cluster-addon : 準備 openebs-provisioner デプロイファイル] *****************************
changed: [10.200.14.144] => (item=openebs-provisioner.yaml)

TASK [cluster-addon : 作成 openebs-provisioner デプロイ] *******************************
changed: [10.200.14.144]

TASK [cluster-addon : 準備 ingress-nginx 設定ディレクトリ] ***********************************
changed: [10.200.14.144]

TASK [cluster-addon : 準備 ingress-nginx デプロイファイル] ***********************************
changed: [10.200.14.144] => (item=ingress-nginx.yaml)

TASK [cluster-addon : 作成 ingress-nginx デプロイ] *************************************
changed: [10.200.14.144]

PLAY RECAP *********************************************************************
10.200.14.144              : ok=110  changed=99   unreachable=0    failed=0    skipped=172  rescued=0    ignored=0
10.200.14.145              : ok=117  changed=106  unreachable=0    failed=0    skipped=199  rescued=0    ignored=0
10.200.14.146              : ok=93   changed=83   unreachable=0    failed=0    skipped=148  rescued=0    ignored=0
localhost                  : ok=33   changed=30   unreachable=0    failed=0    skipped=11   rescued=0    ignored=0

重要
  • 全ての戻り情報が成功している必要があります。そうでない場合はシステムをリセットし、インストールを再実行してください

  • クラスターのクリーンアップ: docker exec -it kubeasz ezctl destroy xxx (xxxはクラスター名)

  • ノードを再起動し、残存する仮想NICやルーティング情報などをクリーンアップします

成功戻り例
PLAY RECAP *********************************************************************
10.200.14.144              : ok=110  changed=99   unreachable=0    failed=0    skipped=172  rescued=0    ignored=0
10.200.14.145              : ok=117  changed=106  unreachable=0    failed=0    skipped=199  rescued=0    ignored=0
10.200.14.146              : ok=93   changed=83   unreachable=0    failed=0    skipped=148  rescued=0    ignored=0
localhost                  : ok=33   changed=30   unreachable=0    failed=0    skipped=11   rescued=0    ignored=0

ezctlのその他のパラメータについては、ezctlを実行して確認してください。実行できない場合は、/etc/kubeaszディレクトリに移動して ./ezctl を実行して確認してください

4. インストールの確認

4.1 クラスターコンポーネントの状態

クラスターコンポーネント
[root@k8s-node01 ~]# kubectl  get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE                         ERROR
controller-manager   Healthy   ok
scheduler            Healthy   ok
etcd-0               Healthy   {"health":"true","reason":""}
etcd-2               Healthy   {"health":"true","reason":""}
etcd-1               Healthy   {"health":"true","reason":""}

全ての戻り結果に ERROR がないことを確認

4.2 クラスターノードの状態

クラスターノード
[root@k8s-node01 ~]# kubectl  get nodes
NAME            STATUS   ROLES    AGE   VERSION
10.200.14.111   Ready    master   22h   v1.24.2
10.200.14.112   Ready    master   22h   v1.24.2
10.200.14.113   Ready    master   22h   v1.24.2
10.200.14.114   Ready    node     22h   v1.24.2

全ての戻り結果のノード状態が Ready であることを確認

4.3 クラスターのデフォルトpod 状態

クラスター初期pod
[root@k8s-node01 ~]# kubectl  get pods -A
NAMESPACE       NAME                                           READY   STATUS      RESTARTS   AGE
ingress-nginx   ingress-nginx-admission-create-sh5gb           0/1     Completed   0          22h
ingress-nginx   ingress-nginx-admission-patch-dhsvl            0/1     Completed   0          22h
ingress-nginx   ingress-nginx-controller-6d799ccc9c-rhgx5      1/1     Running     0          22h
kube-system     calico-kube-controllers-5c8bb696bb-srlmd       1/1     Running     0          22h
kube-system     calico-node-4rwfj                              1/1     Running     0          22h
kube-system     calico-node-lcm44                              1/1     Running     0          22h
kube-system     calico-node-nbc5w                              1/1     Running     0          22h
kube-system     calico-node-qfnw2                              1/1     Running     0          22h
kube-system     coredns-84b58f6b4-zgkvb                        1/1     Running     0          22h
kube-system     kubernetes-dashboard-5fc74cf5c6-kcpc7          1/1     Running     0          22h
kube-system     metrics-server-69797698d4-nqfqf                1/1     Running     0          22h
kube-system     node-local-dns-7w2kt                           1/1     Running     0          22h
kube-system     node-local-dns-gb4zp                           1/1     Running     0          22h
kube-system     node-local-dns-mw9pt                           1/1     Running     0          22h
kube-system     node-local-dns-zr5d9                           1/1     Running     0          22h

全てのpodの状態が Running であり、Ready であることを確認

4.4 クラスター情報の確認

クラスター情報
[root@k8s-node01 ~]# kubectl  cluster-info
Kubernetes control plane is running at https://127.0.0.1:6443
CoreDNS is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
KubeDNSUpstream is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/kube-dns-upstream:dns/proxy
kubernetes-dashboard is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

4.5 クラスターリソース使用状況の確認

クラスターリソース使用状況
[root@k8s-node01 /etc/kubeasz/roles]# kubectl  top nodes
NAME            CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
10.200.14.111   191m         9%     1215Mi          33%
10.200.14.112   278m         6%     5692Mi          36%
10.200.14.113   276m         6%     5684Mi          36%
10.200.14.114   115m         2%     4444Mi          28%

クラスターリソース使用状況が正常に戻ってくることを確認

5. よくある質問

ヒント

インストール確認段階で kubectl: command not found と表示された場合は、一度ログアウトしてから再度SSHでログインし、環境変数を有効にしてください

helmコマンドが見つからないエラーが出る場合は、一度ログアウトしてから再度SSHでサーバーにログインし、環境変数を確認し、helmコマンドを実行して実行可能か確認してください

[root@k8s-node01 ~]# echo PATH=$PATH
PATH=/etc/kubeasz/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

フィードバック

このページは役に立ちましたか?