7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IBM Cloud Private k8sクラスターをCLIで操作してみる

Posted at

前の投稿 IBM Cloud Private: Kubernetesをオンプレミス(IaaS)に導入してみる では,Kubernetes環境を構築した後,コンソール画面から少し操作をして終了としました。

今回はCLIを使ったクラスターへのアクセスについて書いてみたいと思います。

※既にIBM Cloud Private環境を構成済という前提で進めます。

コマンドラインからKubernetesクラスターを操作する

手元のPCから,IBM Cloud Private (Kubernetesクラスター)に接続し,操作・制御してみます。
そのために 2つのCLIと,1つのプラグインを導入します。

    1. kubectlコマンド: Kubernetes CLI [CLI]
    1. bxコマンド: IBM Cloud CLI [CLI]
    1. bx prプラグイン: IBM Cloud Private プラグイン [Plugin]

1) kubectlコマンド

1-1) kubectl: インストール

バイナリ取得,実行権限付与,OSのbinに移動。やることはそれだけです。

$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.7.3/bin/darwin/amd64/kubectl
$ chmod +x ./kubectl
$ sudo mv ./kubectl /usr/local/bin/kubectl

参考: Install and Set Up kubectl

この他にも,IBM Cloud Privateのインストールイメージ内にあるkubectlコマンドをインストールすることもできます。
オフライン環境であったり,誰がやっても製品に対応したバージョンを導入できるという意味では便利かもしれません。
参考: Accessing your IBM Cloud Private cluster by using the kubectl CLI

1-2) IBM Cloud Privateへの接続,コマンド実行

  • IBM Cloud Privateコンソールにログイン
  • https://10.132.75.83:8443/console
  • [右上のユーザーアイコン]>[Configure client]のように辿ります (下図参照)
  • image.png
  • ポップアップ内の "kubectl config〜〜〜" 数行をコピーします (下図参照)
  • image.png
  • お手元のPCのターミナルにペーストして実行します
$ kubectl config set-cluster mycluster.icp --server=https://10.132.75.83:8001 --insecure-skip-tls-verify=true
Cluster "mycluster.icp" set.

$ kubectl config set-context mycluster.icp-context --cluster=mycluster.icp
Context "mycluster.icp-context" modified.

$ kubectl config set-credentials mycluster.icp-user --token=eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImF0X2hhc2giOiJSZDJWSDh5Mjl3alBLNVJydjEtZjVRIiwiaXNzIjoiaHR0cHM6Ly9teWNsdXN0ZXIuaWNwOjk0NDMvb2lkYy9lbmRwb2ludC9PUCIsImF1ZCI6ImNiNmI2ZDg4YTA2MjIyYTRkZTQ0MjhmMWFmMmZlMmQyIiwiZXhwIjoxNTEyOTUxOTM4LCJpYXQiOjE1MTI5MDg3Mzh9.BYhO4iURwi0dhEqPn1DdWzNNzQZRb7-tnCXXKzdbyDOK_ChFxCC-3JdxE01JWNM3Xaku0Ji-SoII9UCbeQx_SCGabRHcvUJF2RAEbWAehykXFyB9SpyBA_W9CPUxr_s8NY3XlDD75-3EMXxad73FsgP64IgSMZD72Vm1jeS4UOge4oMkOIaAvjqud-kOYrKXib8J8oCEtI7yBNOLf8dA_puoYhl2HGD9BBrpFEpCsCkZj0m8WFeg0LAD-Km7uhI6pjsNLiWpOD4E2re82D7y7ZqGZAcGSNWh2WA07lJLlYLSbOOpwF38Z-CVCjbdqAr_Lsu0izfWYsbDPI_83W5lGA
User "mycluster.icp-user" set.

$ kubectl config set-context mycluster.icp-context --user=mycluster.icp-user --namespace=default
Context "mycluster.icp-context" modified.

$ kubectl config use-context mycluster.icp-context
Switched to context "mycluster.icp-context".

これで手元のPC上のkubectlコマンドで,IBM Cloud Private上のkube-api-serverに対するAPI操作ができるようになりました。

いくつか実行してみましょう。

  • ノード情報を取得
$ kubectl get nodes

NAME           STATUS    AGE       VERSION
10.132.75.83   Ready     1d        v1.7.3-7+154699da4767fd
  • pod一覧を取得
  • カタログからnodejsを選択してデプロイしていたので,1つ表示されています
$ kubectl get pods

NAME                                        READY     STATUS    RESTARTS   AGE
appnodejs-ibm-nodejs-sam-2158423597-m9gmk   1/1       Running   0          1d
  • namespaceがkube-systemとして設定されているpodの一覧を取得
  • ざっくり言うとIBM Cloud Privateの管理機能のプロセス
  • クラスターコンポーネント,ネットワークや認証,コンテナの利用量計測,モニタリングなど
$ kubectl get pods -n kube-system

NAME                                                      READY     STATUS    RESTARTS   AGE
auth-apikeys-vdlfx                                        1/1       Running   0          1d
auth-idp-m2tf3                                            3/3       Running   1          1d
auth-pap-p1qj7                                            1/1       Running   0          1d
auth-pdp-5tsm1                                            1/1       Running   0          1d
calico-node-amd64-5lzc2                                   2/2       Running   0          1d
calico-policy-controller-1048521425-s07tl                 1/1       Running   0          1d
catalog-catalog-apiserver-18wtr                           1/1       Running   0          1d
catalog-catalog-controller-manager-3100032879-56t5f       1/1       Running   0          1d
catalog-ui-rzn8b                                          1/1       Running   0          1d
default-http-backend-198681862-t48zl                      1/1       Running   0          1d
elasticsearch-client-3479638665-n8pfj                     2/2       Running   0          1d
elasticsearch-data-0                                      1/1       Running   0          1d
elasticsearch-master-1570256108-g7b31                     1/1       Running   0          1d
filebeat-ds-amd64-4tnlw                                   1/1       Running   0          1d
heapster-1250025240-h1x2h                                 2/2       Running   6          1d
helm-api-2886503079-7g3wf                                 1/1       Running   0          1d
helmrepo-577444838-xk6mm                                  1/1       Running   0          1d
icp-ds-0                                                  1/1       Running   0          1d
icp-router-0lbfp                                          1/1       Running   0          1d
image-manager-0                                           2/2       Running   0          1d
k8s-etcd-10.132.75.83                                     1/1       Running   0          1d
k8s-mariadb-10.132.75.83                                  1/1       Running   0          1d
k8s-master-10.132.75.83                                   3/3       Running   0          1d
k8s-proxy-10.132.75.83                                    1/1       Running   0          1d
kube-dns-1038623989-jsrs6                                 3/3       Running   0          1d
logstash-4245234969-q4l16                                 1/1       Running   0          1d
metering-dm-653503904-b1hw0                               1/1       Running   0          1d
metering-reader-amd64-4tvx6                               1/1       Running   0          1d
metering-server-1157299371-zr5n1                          1/1       Running   0          1d
metering-ui-3198198023-pkb81                              1/1       Running   0          1d
monitoring-exporter-3293343457-q5t8v                      1/1       Running   0          1d
monitoring-grafana-2476181526-kz8v7                       2/2       Running   0          1d
monitoring-prometheus-2422752664-fcx6t                    2/2       Running   0          1d
monitoring-prometheus-alertmanager-3766402458-ts6ws       2/2       Running   0          1d
monitoring-prometheus-kubestatemetrics-3025976457-kwff6   1/1       Running   0          1d
monitoring-prometheus-nodeexporter-amd64-dg9rq            1/1       Running   0          1d
nginx-ingress-lb-amd64-zhrv0                              1/1       Running   0          1d
platform-api-14t17                                        1/1       Running   0          1d
platform-ui-3mbrx                                         1/1       Running   0          1d
rescheduler-9flqh                                         1/1       Running   0          1d
tiller-deploy-2307655136-zjv3n                            1/1       Running   0          1d
unified-router-lkgjr                                      1/1       Running   0          1d

2) bxコマンド (IBM Cloud CLI)

2-1) IBM Cloud CLI のインストール

IBM Cloud CLI Installer のページから,お使いのOSにあったものを選択しダウンロードします。(下図参照)
image.png
macOSの場合だと,"Bluemix_CLI_0.6.2.pkg" のようなファイルがダウンロードできますので,オープンしてウィザードに従ってインストールしましょう。

$ bx --help  // ヘルプで使いかたも確認しておきましょう

bxコマンドは,IBM Cloud (旧Bluemix)を操作できます。
IBM Cloud Privateでは,次のステップで導入するプラグインを追加して使用します。

3) bx prプラグイン (IBM Cloud Privateプラグイン)

3-1) IBM Cloud Private プラグインのインストール

IBM Cloud PrivateのKubernetesクラスターのノード操作や,helm charをロードする際などに使用します。
詳細は以下のCLIリファレンスを参照ください。
参考: IBM Cloud Private CLI command reference

以下の手順で,prプラグインをコンソール画面から取得し,お使いのPCに導入します。

  • IBM Cloud Privateコンソールにログイン
  • https://10.132.75.83:8443/console
  • [メニュー]>[Tools]>[Command line]を選択
  • image.png
  • お使いのOSにあったものをクリックしてダウンロード
  • image.png
  • bxコマンドで,上記でダウンロードしたファイル(icp-darwin-amd64)を指定してインストール
  • $ bx plugin install icp-darwin-amd64
  • 参考: $ bx pr --help で使いかたを確認できます

3-2) bx prプラグインでクラスターを操作してみる

せっかくなので,いくつかコマンドを叩いてみましょう。

クラスターにログインします。
今回はシングルノードなので,masterノードのIPは 10.132.75.83 ですので以下のように指定します。

$ bx pr login -a https://10.132.75.83:8443 --skip-ssl-validation

 Login method invokedAPI endpoint: https://10.132.75.83:8443

Username> admin

Password>
Authenticating...
OK

Select an account:
1. ICP Account (8733008909db59ca880939cfa1a17509)
Enter a number> 1
Targeted account: ICP Account (8733008909db59ca880939cfa1a17509)

APIエンドポイントや,APIバージョンを確認してみます。

$ bx pr api

API Endpoint:          https://10.132.75.83:8443/api
API Version:           v1
Skip SSL Validation:   true

masterの一覧を出力してみましょう。

$ bx pr masters mycluster

OK
ID                      Public IP      Private IP     State
mycluster-00000000-m1   10.132.75.83   10.132.75.83   deployed

まとめ

(...というか余談がほとんど)

今回はCLIでのクラスターアクセスについて記述しました。
といっても高度なことは何もしていなくて,kubectlとIBM Cloud PrivateのCLIを導入,少し試しただけです。

CLIの使い分けという意味では,
アプリ(Pod/Deployment/Service)を直接デプロイしたい時は,きっとkubectlコマンドを使いますよね。

パッケージとしてhelm chartをロードする時や,IBM Cloud Privateそのもののクラスター操作については,bx prコマンド(プラグイン)を使用する方向性かと思われます。今は正直言ってかなり非力なCLIですが,kubeadmでやれることや,もっと便利に使えるように拡張されることを期待します。

ちなみにbxコマンドというのがそもそもIBM Cloud(旧Bluemix)を操作するコマンドだったりします、
つまり,bxコマンドでパブリッククラウド(IBM Cloud Container Service)と,プライベートクラウド(IBM Cloud Private)両方を制御できちゃう,そんな方向性でしょうか。
(BOSHでCloud Foundry Application RuntimeもCloud Foundry Container Runtimeも両方制御するよーというのと同じイメージですかね。)

ほぼコマンドインストール編のような感じでしたが,今回はこの辺りで。

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?