K8s ダッシュボードをすばやく展開して管理を簡単にします。

https://kubernetes.io/zh-cn/docs/tasks/access-application-cluster/web-ui-dashboard/

ダッシュボードは、Web ベースの Kubernetes ユーザー インターフェイスです。ダッシュボードを使用して、コンテナー アプリケーションを Kubernetes クラスターにデプロイし、コンテナー アプリケーションのトラブルシューティングを行い、クラスター リソースを管理できます。ダッシュボードを使用すると、クラスター内で実行されているアプリケーションの概要を取得できます。また、Kubernetes リソース (デプロイメント、ジョブ、DaemonSet など) を作成または変更することもできます。たとえば、デプロイメントの自動スケール、ローリング アップグレードの開始、ポッドの再起動、ウィザードを使用した新しいアプリケーションの作成などを行うことができます。

ダッシュボードには、Kubernetes クラスター内のリソースのステータス情報とすべてのエラー メッセージも表示されます。

Kubernetes ダッシュボード UI

1 ダッシュボード UI のデプロイ

ダッシュボードはデフォルトでは展開されません。

1.1 yamlのダウンロード

まだ変更する必要があるため、最初にこの yaml をダウンロードします。

[root@icv-k8s-node-1 home]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
--2023-06-30 15:51:42--  https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.110.133, 185.199.111.133, 185.199.108.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7621 (7.4K) [text/plain]
Saving to: ‘recommended.yaml’

100%[=========================================================>] 7,621       --.-K/s   in 0.002s  

2023-06-30 15:51:43 (3.88 MB/s) - ‘recommended.yaml’ saved [7621/7621]

[root@icv-k8s-node-1 home]# 

クエリ 443、デフォルトの内容:

このように、外部ブラウザから直接アクセスすることはできません。次のように変更します。

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
  type: NodePort
  selector:
    k8s-app: kubernetes-dashboard

1.2 導入

[root@icv-k8s-node-1 home]# kubectl apply -f recommended.yaml
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
[root@icv-k8s-node-1 home]# 

ポッドを表示します。

kubectl get pod -A は、どの名前空間に属しているかに関係なく、クラスター内で実行中のすべての Pod をリストする Kubernetes コマンドです。

  • kubectl: Kubernetes クラスターと対話するためのコマンドライン ツール
  • get: リソースに関する情報を取得することを指定します
  • ポッド: 情報を取得したいリソースのタイプ
  • -A または --all-namespaces: コマンドが現在の名前空間だけでなくすべての名前空間で実行されることを指定します。
[root@icv-k8s-node-1 home]# kubectl get pod -A

[root@icv-k8s-node-1 home]# kubectl get svc -A
NAMESPACE              NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
default                edge-nginx                  ClusterIP   10.106.187.202   <none>        88/TCP                   101m
default                javaedge-nginx              NodePort    10.109.194.31    <none>        90:31104/TCP             108m
default                kubernetes                  ClusterIP   10.96.0.1        <none>        443/TCP                  23h
default                nginx-deployment            NodePort    10.110.49.229    <none>        89:32158/TCP             41m
kube-system            kube-dns                    ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP,9153/TCP   23h
kubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   10.106.145.20    <none>        8000/TCP                 5m3s
kubernetes-dashboard   kubernetes-dashboard        NodePort    10.99.210.194    <none>        443:31902/TCP            5m4s
[root@icv-k8s-node-1 home]# 

2 ダッシュボードのユーザーインターフェイスにアクセスします

前のセクションでは、ダッシュボード ポッドがポート 31902 にマッピングされていることを確認したため、それを介してアクセスする必要があります。HTTPS である必要があることに注意してください。

HTTP を使用する場合は、大きな黒い枠線のみが表示されます。

クラスター データを保護するために、ダッシュボードはデフォルトで最小限の RBAC 構成でデプロイされます。ダッシュボードは、Bearer トークンを使用したログインのみをサポートします。

トークンを作成する

# 创建 dashboard-admin ⽤户
[root@icv-k8s-node-1 home]# kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard

serviceaccount/dashboard-admin created
# 绑定 clusterrolebinding 授权
[root@icv-k8s-node-1 home]# kubectl create clusterrolebinding dashboard-admin-rb --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin

clusterrolebinding.rbac.authorization.k8s.io/dashboard-admin-rb created
# 创建token文件
[root@icv-k8s-node-1 home]# 

yaml に対応:

apiVersion: v1
kind: Secret
metadata:
  name: dashboard-admin-secret
  namespace: kubernetes-dashboard
  annotations:
    kubernetes.io/service-account.name: dashboard-admin
type: kubernetes.io/service-account-token
# 运行并获得token
[root@icv-k8s-node-1 home]# kubectl apply -f admin-token.yaml
secret/dashboard-admin-secret created
[root@icv-k8s-node-1 home]# kubectl describe secret dashboard-admin-secret -n kubernetes-dashboard
Name:         dashboard-admin-secret
Namespace:    kubernetes-dashboard
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-admin
              kubernetes.io/service-account.uid: 4260320b-200b-4189-97ce-c30ac6a3445f

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1099 bytes
namespace:  20 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6Ind4ZzJfQkVWaFdfWUtqSWo5VlRYQVViblBnZkwybXpMVlZqT1M3OGhvd3cifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tc2VjcmV0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRhc2hib2FyZC1hZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjQyNjAzMjBiLTIwMGItNDE4OS05N2NlLWMzMGFjNmEzNDQ1ZiIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDpkYXNoYm9hcmQtYWRtaW4ifQ.vw9oyPTb_646Dfs-6wR9_3o0rMQEmUZ0Ytx3rOJCMuCscN2Mm2fTHmWyvVo9_mDRqNhspBTj_noONoWcNId8Uj0GmVLpqwHNeKpINFI9UH39LlLV1y4QVaZ7O0i8jDVAC7msfozKA9F0TcQev5oK0MkDmbGC5JqTvDlgXCvbJotbBXfjZesGGwUS8O-RMvkFSf_ZIjjhMkYT3IuU8H9VinRAUH7GMefvNPq_zzPL6AsMIMosO4rrwsTm6OSJaKYsAdatusik8Fv-yFYI5CyEwnFGdiQIyXcSlK6wimqv1U142_nyNg9y_jv4lk02de9FBiQtWmuYg80dqw42lG38sA
[root@icv-k8s-node-1 home]# 

ここでトークンを入力すると、正常にログインできます。

コマンドラインエージェント

kubectlコマンド ライン ツールを使用してダッシュボード アクセスを有効にできます。コマンドは次のとおりです。

kubectl proxy

kubectl により、http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ 経由でダッシュボードにアクセスできるようになります。

UI には、このコマンドを実行するマシンからのみアクセスできます。その他のオプションについては、「 」を参照してくださいkubectl proxy --help

例証します:

Kubeconfig 認証方法は、外部 ID プロバイダーまたは x509 証明書ベースの認証をサポートしません。

3 ようこそ画面

空のクラスターのダッシュボードにアクセスすると、ようこそ画面が表示されます。このページには、このドキュメントへのリンクと、最初のアプリケーションをデプロイするためのボタンが含まれています。さらに、ダッシュボード自体など、デフォルトでkube-system 名前空間で実行されるデフォルトのシステム アプリを確認できます。

Kubernetes ダッシュボードのウェルカム ページ

4 コンテナ化されたアプリケーションのデプロイ

シンプルなデプロイメント ウィザードを通じて、ダッシュボードを使用して、コンテナ化されたアプリケーションをデプロイメントとして、またオプションでサービスとして作成およびデプロイできます。アプリケーションの詳細な構成を手動で指定することも、アプリケーション構成を含む YAML または JSON_MANIFEST_file をアップロードすることもできます。

開始するには、任意のページの右上隅にある[作成]ボタンをクリックします。

アプリケーションの詳細な設定を指定する

展開ウィザードでは、次の情報を入力する必要があります。

  • アプリケーション名(必須): アプリケーションの名前。コンテンツ应用名称を含むタグは、デプロイされるすべてのデプロイメントおよびサービスに追加されます。

    アプリケーション名は、選択した Kubernetes名前空間内で一意である必要があります。小文字で始まり、数字または小文字で終わる必要があり、小文字、数字、ダッシュ (-) のみを含める必要があります。24 文字以下。先頭と末尾のスペースは無視されます。

  • コンテナ イメージ(必須):パブリック レジストリまたはプライベート レジストリ (通常は Google Container Registry または Docker Hub)上の Dockerコンテナイメージの URL。コンテナイメージパラメータの説明はコロンで終わる必要があります。

  • ポッドの数(必須): アプリケーションをデプロイするポッドの数。値は正の整数である必要があります。

    システムはデプロイメントを作成して、クラスター内で予想される数のポッドを確実に実行します。

  • サービス(オプション): 一部のアプリケーション (フロントエンドなど) では、サービスを外部に公開することができます。このサービスは、クラスターの外部のパブリック IP アドレスを使用する場合があります (外部サービス)。

    例証します:

    外部サービスの場合は、1 つ以上のポートを開く必要がある場合があります。

    クラスター内でのみ表示できるその他のサービスは、内部サービスと呼ばれます。

    サービスのタイプに関係なく、サービスの作成を選択し、コンテナーがポートでリッスン (受信) する場合は、2 つのポートを定義する必要があります。作成されたサービスは、(受信) ポートをコンテナに表示されるターゲット ポートにマップします。Service は、デプロイされた Pod にトラフィックをルーティングします。TCP プロトコルと UDP プロトコルをサポートします。このサービスの内部 DNS 解決名は、前に定義したアプリケーション名の値です。

必要に応じて、 「詳細オプション」セクションを開き、ここでさらに設定を定義できます。

  • 説明: ここに入力したテキストは、デプロイメントにコメントとして追加され、アプリケーションの詳細に表示されます。

  • ラベル:アプリケーションで使用されるデフォルトのラベルは、アプリケーションの名前とバージョンです。デプロイメント、サービス (存在する場合) に対して、リリース (バージョン)、環境 (環境)、層 (レベル)、パーティション (パーティション)、リリース トラック (バージョン追跡) などの追加のラベルを定義できます。

    例:

    release=1.0
    tier=frontend
    environment=pod
    track=stable
    
  • 名前空間: Kubernetes は、同じ物理クラスターに接続された複数の仮想クラスターをサポートします。これらの仮想クラスターはネームスペースと呼ばれ、リソースを論理的に名前が付けられたグループに分割することができます。

    ダッシュボードには、使用可能なすべてのネームスペースのドロップダウン メニューがあり、新しいネームスペースを作成できます。ネームスペース名には、最大 63 文字の文字または数字とダッシュ (-) を含めることができますが、大文字を含めることはできません。

    ネームスペース名には数字のみを含めることはできません。名前が 10 などの数値に設定されている場合、ポッドは

    ネームスペースが正常に作成されると、新しく作成されたネームスペースがデフォルトで使用されます。作成に失敗した場合は、最初の名前空間が選択されます。

  • シークレットをプルするイメージ: プライベート Docker コンテナー イメージを使用する場合は、シークレット証明書をプルする必要があります。

    ダッシュボードには、利用可能なすべてのシークレットのドロップダウン メニューが表示され、新しいシークレットを作成できます。シークレット名は、DNS ドメイン名の構文に従う必要がありますnew.image-pull.secretSecret のコンテンツは、base64 でエンコードされ、.dockercfgファイル内で宣言されている必要があります。シークレット名には最大 253 文字を含めることができます。

    イメージ プル シークレットが正常に作成されると、新しく作成されたシークレットがデフォルトで使用されます。作成に失敗した場合、Secret は使用されません。

  • CPU 要件 (コア数)メモリ要件 (MiB) : コンテナーの最小リソース制限を定義できますデフォルトでは、Pod には CPU とメモリの制限はありません。

  • 実行コマンド実行コマンド引数: デフォルトでは、コンテナーは Docker イメージのデフォルトのエントリ コマンドを実行します。コマンド オプションを使用してデフォルトをオーバーライドできます。

  • 特権モードで実行: この設定は、特権コンテナーで実行されているプロセスが、ホスト上で root として実行されているプロセスと同様に動作するかどうかを決定します。特権コンテナは、ネットワーク スタックの操作やデバイスへのアクセスなどの機能を使用できます。

  • 環境変数: Kubernetes は環境変数を通じてサービスを公開します。環境変数を構築したり、環境変数の値を引数としてコマンドに渡すことができます。これらは、アプリケーションがサービスを見つけるために使用できます。値は$(VAR_NAME)構文を介して他の変数に関連付けることができます。

YAML または JSON ファイルをアップロードする

Kubernetes は宣言型構成をサポートしています。すべての設定はマニフェスト ファイル (YAML または JSON 設定ファイル) に保存されます。これらのマニフェストは、 Kubernetes APIによって定義されたリソース スキーマを使用します。

デプロイメント・ウィザードでアプリケーションの詳細を指定する代わりに、1 つ以上のマニフェスト・ファイルでアプリケーションを定義し、ダッシュボードを使用してファイルをアップロードできます。

5 ダッシュボードの使用

Kubernetes ダッシュボード UI ビュー (提供される内容とその使用方法を含む)。

ナビゲーション

Kubernetes オブジェクトがクラスター内で定義されると、ダッシュボードの初期ビューにそれらのオブジェクトが表示されます。デフォルトでは、デフォルトの名前空間内のオブジェクトのみが表示されます。これは、ナビゲーション バー メニューの名前空間フィルタを変更することで変更できます。

ダッシュボードには、ほとんどの Kubernetes オブジェクトが表示され、それらがいくつかのメニュー カテゴリにグループ化されます。

経営概要

クラスターとネームスペース管理のビューであるダッシュボードには、ノード、ネームスペース、永続ボリュームがリストされ、それらの詳細ビューが表示されます。ノード リスト ビューには、すべてのノードから集計された CPU およびメモリ使用量のメトリックが含まれています。詳細ビューには、ノードのメトリック、そのメトリック、ステータス、割り当てられたリソース、イベント、およびこのノードで実行されているポッドが表示されます。

ロード

選択した名前空間で実行中のアプリケーションをすべて表示します。ビューでは、アプリケーションをワークロード タイプ (例: Deployment、ReplicaSet、StatefulSet) ごとにリストし、各ワークロードを個別に表示できます。リストには、ReplicaSet 内の準備が完了したポッドの数やポッドの現在のメモリ使用量など、ワークロードに関する実行可能情報が要約されます。

ワークロードの詳細ビューには、オブジェクトのステータス、詳細、相互関係が表示されます。たとえば、ReplicaSet によって制御される Pod、または Deployment に関連付けられた新しい ReplicaSet および horizo​​ntalPodAutoscaler です。

仕える

外部サービスへの公開とクラスター内での検出を可能にする Kubernetes リソースをデモンストレーションします。したがって、Service ビューと Ingress ビューには、関連付けられた Pod、クラスター接続の内部エンドポイント、および外部ユーザーの外部エンドポイントが表示されます。

保管所

[ストレージ] ビューには、アプリケーションがデータを保存するために使用する Persistent Volume Claim (PVC) リソースが表示されます。

ConfigMap とシークレット

表示されているすべての Kubernetes リソースは、クラスター内で実行されているアプリケーションのライブ構成です。このビューを通じて、構成オブジェクトを編集および管理したり、デフォルトで非表示になっているシークレットを表示したりできます。

ログビューア

ポッドのリストと詳細ページは、ダッシュボードの組み込みログ ビューアにリンクできます。ビューアは、同じポッドに属するさまざまなコンテナのログをドリルダウンできます。

ログの閲覧

おすすめ

転載: blog.csdn.net/qq_33589510/article/details/131479801