AMC は、Distributed Cloud Container Platform for Kubernetes (ACK One) 向けの kubectl プラグインです。Fleet インスタンスによって管理されている複数のクラスターにまたがって kubectl を拡張し、kubeconfig ファイルを切り替えることなく、任意の管理対象クラスター内のリソースをクエリおよび検査できます。
AMC を使用すると、以下の操作が可能です。
-
kubectl を使用するのと同じように AMC を使用する
-
Fleet インスタンスに接続し、そのインスタンスが管理する任意のクラスター内の Deployment、Service、Ingress を管理する
-
特定の管理対象クラスターまたはすべての管理対象クラスターで同時に、Kubernetes リソース(Pod、Service)のステータスをクエリする
-
管理対象クラスターにスケジュールされたワークロードのタスクログを表示する
-
管理対象クラスター全体にわたるアプリケーションと関連リソースの完全なトポロジーおよびステータスを検査する
前提条件
作業を開始する前に、以下の要件を満たしていることを確認してください。
-
少なくとも 1 つの関連クラスターを持つ ACK One Fleet インスタンス
-
Fleet インスタンスの kubeconfig ファイル
-
wget(Linux)またはcurl(macOS)がインストールされていること
AMC のインストール
ご利用のプラットフォームおよびアーキテクチャ向けの AMC バイナリをダウンロードし、実行可能にしてから /usr/local/bin に移動します。
Linux
| アーキテクチャ | コマンド |
|---|---|
| amd64 | wget http://ack-one.oss-cn-hangzhou.aliyuncs.com/kubectl-amc-linux-amd64 && chmod +x kubectl-amc-linux-amd64 && mv kubectl-amc-linux-amd64 /usr/local/bin/kubectl-amc |
| arm64 | wget http://ack-one.oss-cn-hangzhou.aliyuncs.com/kubectl-amc-linux-arm64 && chmod +x kubectl-amc-linux-arm64 && mv kubectl-amc-linux-arm64 /usr/local/bin/kubectl-amc |
macOS
| アーキテクチャ | コマンド |
|---|---|
| amd64 | curl -LO http://ack-one.oss-cn-hangzhou.aliyuncs.com/kubectl-amc-mac-amd64 && chmod +x kubectl-amc-mac-amd64 && mv kubectl-amc-mac-amd64 /usr/local/bin/kubectl-amc |
| arm64 | curl -LO http://ack-one.oss-cn-hangzhou.aliyuncs.com/kubectl-amc-mac-arm64 && chmod +x kubectl-amc-mac-arm64 && mv kubectl-amc-mac-arm64 /usr/local/bin/kubectl-amc |
インストールの確認
kubectl amc -h を実行して、AMC が正しくインストールされていることを確認し、ヘルプ出力を表示します。
kubectl amc -h
管理対象クラスターおよびエイリアスの一覧表示
kubectl amc get managedcluster を実行して、Fleet インスタンスに関連付けられたすべてのクラスターとそのエイリアスを一覧表示します。
kubectl amc get managedcluster
期待される出力:
Name Alias HubAccepted
managedcluster-c**** cluster1 true
managedcluster-c**** cluster2 true
managedcluster-c**** cluster3 true
以前に ACK One に関連付けられていたクラスターは、Alias 列に none が表示されます。
クラスターエイリアスの設定
関連付けられたクラスターのエイリアスを設定するには、次のコマンドを実行します。
kubectl annotate managedcluster <managedcluster name> ackone.aliyun.com/cluster-alias=<cluster-alias>
既存のエイリアスを更新する場合は、--overwrite を追加します。
kubectl annotate managedcluster <managedcluster name> ackone.aliyun.com/cluster-alias=<cluster-alias> --overwrite
管理対象クラスター内のリソースのクエリ
-m フラグを使用して、名前で特定の管理対象クラスターを対象にするか、-m all を指定して、関連付けられたすべてのクラスターを一度にクエリします。
| フラグ | 説明 |
|---|---|
-n <namespace> |
クエリ対象の名前空間 |
-m <cluster-name> |
対象とする管理対象クラスターの名前。all を指定すると、すべてのクラスターを対象にします |
特定のクラスターのクエリ
kubectl amc get deployment -n demo -m managedcluster-c****
managedcluster-c**** は、検査したいクラスターの名前に置き換えてください。
期待される出力:
Run on ManagedCluster managedcluster-c**** (cluster-alias-****)
NAME READY UP-TO-DATE AVAILABLE AGE
web-demo 1/1 1 1 42h
関連付けられたすべてのクラスターのクエリ
kubectl amc get deployment -n demo -m all
期待される出力:
Run on ManagedCluster managedcluster-c**** (cluster1)
NAME READY UP-TO-DATE AVAILABLE AGE
web-demo 1/1 1 1 42h
Run on ManagedCluster managedcluster-c**** (cluster2)
NAME READY UP-TO-DATE AVAILABLE AGE
web-demo 3/3 3 3 42h
Run on ManagedCluster managedcluster-c**** (cluster3)
NAME READY UP-TO-DATE AVAILABLE AGE
web-demo 5/5 5 5 42h
アプリケーショントポロジーの検査
appstatus に --tree および --detail を組み合わせて使用することで、管理対象クラスター全体にわたるアプリケーションの完全なトポロジーと、関連するすべてのリソースのステータスを表示できます。
| フラグ | 説明 |
|---|---|
--tree |
親子関係を示すツリー構造でリソースを表示します |
--detail |
各リソースの詳細なステータス情報を含めます |
kubectl amc appstatus demo -n demo --tree --detail
期待される出力:
CLUSTER NAMESPACE RESOURCE STATUS APPLY_TIME DETAIL
managedcluster-c****─── demo ─┬─ Deployment/demo updated 2022-05-27 06:48:13 Ready: 4/4 Up-to-date: 4 Available: 4 Age: 8m2s
├─ Ingress/demo updated 2022-05-27 06:48:13 Class: <none> Hosts: app.demo.example.com Address:
│ Ports: 80 Age: 8m2s
├─ ConfigMap/demo updated 2022-05-27 14:48:13 Data: 4 Age: 8m2s
└─ Service/demo updated 2022-05-27 06:48:13 Type: ClusterIP Cluster-IP: 192.168.9.178
External-IP: <none> Port(s): 82/TCP Age: 8m2s
managedcluster-c****─── demo ─┬─ Deployment/demo updated 2022-05-27 06:48:16 Ready: 2/2 Up-to-date: 2 Available: 2 Age: 7m59s
├─ Ingress/demo updated 2022-05-27 06:48:15 Class: <none> Hosts: app.demo.example.com Address:
│ Ports: 80 Age: 7m59s
├─ ConfigMap/demo updated 2022-05-27 14:48:17 Data: 4 Age: 7m58s
└─ Service/demo updated 2022-05-27 06:48:15 Type: ClusterIP Cluster-IP: 192.168.199.111
External-IP: <none> Port(s): 82/TCP Age: 7m59s