IBM Cloud コンテナ・クラスタサービスの bx cs コマンド チートシート


良く利用する `bx cs` コマンドのチートシートです。 全部を網羅するのは無理なので、私が普段から良く利用するものです。


## k8sが利用できるリージョンの表示

~~~
$ bx cs regions
Region Name   Region Alias   
ap-north      jp-tok   
ap-south      au-syd   
eu-central    eu-de   
uk-south      eu-gb   
us-east       us-east   
us-south      us-south   
~~~



## リージョン選択とDCロケーション（米国南部）

~~~
$ bx cs region-set us-south
OK

$ bx cs locations
OK
Location   
dal10   
dal12   
dal13  
~~~


## リージョン選択とDCロケーション（アジア・パシフィック）

~~~
$ bx cs region-set ap-north
OK

$ bx cs locations
OK
Location   
hkg02   
sng01   
tok02  
~~~


## マシンタイプ
統一アーキテクチャですが、在庫の関係でDCロケーションで選択できるモデルに差が出る事もあるから注意

~~~
$ bx cs machine-types tok02
OK
Name         Cores   Memory   Network Speed   OS             Server Type   Storage   Secondary Storage   
u2c.2x4      2       4GB      1000Mbps        UBUNTU_16_64   virtual       25GB      100GB   
b2c.4x16     4       16GB     1000Mbps        UBUNTU_16_64   virtual       25GB      100GB   
b2c.16x64    16      64GB     1000Mbps        UBUNTU_16_64   virtual       25GB      100GB   
b2c.32x128   32      128GB    1000Mbps        UBUNTU_16_64   virtual       25GB      100GB   
b2c.56x242   56      242GB    1000Mbps        UBUNTU_16_64   virtual       25GB      100GB   
~~~


## VLANのリスト 
DCロケーションを指定して、自己のユーザーIDのVLAN番号と管理IDが表示される。

~~~
$ bx cs vlans tok02
OK
ID       Name   Number   Type      Router   
978115          1707     private   bcr01a.tok02   
978113          1649     public    fcr01a.tok02   
~~~


## 利用できるKubenetesのバージョンのリスト

~~~
$ bx cs kube-versions
OK
Version   
1.5.6   
1.7.4   
1.8.6 (default)   
1.9.2   
~~~


## クラスタの作成実行

注意点としては、vlanは IDの方をセットする事、それから、--hardware は shared と dedicated が選択できるが、ノードの仮想サーバーをホストしている物理サーバーが、共有型か専用型かの事で、仮想サーバーのノードとして分離されているので、他のユーザーのファイルが見える事はない。

~~~
$ bx cs cluster-create ¥
--name mycluster5 ¥
--kube-version 1.9.2 ¥
--location tok02 
--public-vlan 978113 ¥
--private-vlan 978115 ¥
--workers 3 
--machine-type u2c.2x4 ¥
--hardware shared 
Creating cluster...
OK
~~~


## クラスタのリスト表示


~~~
$ bx cs clusters
OK
Name         ID                                 State       Created          Workers   Location   Version   
mycluster5   18e851dced6240f5bdf76f8f34bb60a0   deploying   50 seconds ago   3         tok02      1.9.2_1501   
~~~


参考までに、クラスタの構成が完了するまでの時間を計ってみたところ、約20分だった。 最初の頃からすると、相当改良された感がある。

~~~
$ while true; do bx cs clusters; sleep 60; done
OK
Name         ID                                 State     Created          Workers   Location   Version   
mycluster5   18e851dced6240f5bdf76f8f34bb60a0   pending   17 minutes ago   3         tok02      1.9.2_1501   
OK
Name         ID                                 State    Created          Workers   Location   Version   
mycluster5   18e851dced6240f5bdf76f8f34bb60a0   normal   19 minutes ago   3         tok02      1.9.2_1501   
~~~




## 環境設定

kubectlを利用するための認証情報のダウンロードと格納先環境変数表示のコマンドです。 環境変数は、.bash_profileとかに仕込んで置くと便利かも。　管理対象のk8sクラスタが複数の時は使えないが…

~~~
$ bx cs cluster-config mycluster5
OK
mycluster5 の構成は正常にダウンロードされました。 環境変数をエクスポートして Kubernetes の使用を開始してください。

export KUBECONFIG=/Users/maho/.bluemix/plugins/container-service/clusters/mycluster5/kube-config-tok02-mycluster5.yml
~~~


## bx コマンドと kubectlコマンドでの node表示

ポッドが動作するサーバーを Google や Kuberntestプロジェクトの言い方だとノード、IBM流の言い方はワーカー、なんでかね・・・ ノードといっても、何指しているか判らんと言うのはあるが、言い方変えてもね、まったく面倒だね。

Bluemixコマンドでノードを表示したケース

~~~
$ bx cs workers mycluster5
OK
ID                                                 Public IP         Private IP      Machine Type        State    Status   Zone    Version   
kube-tok02-cr18e851dced6240f5bdf76f8f34bb60a0-w1   161.***.***.***   10.132.253.38   u2c.2x4.encrypted   normal   Ready    tok02   1.9.2_1501   
kube-tok02-cr18e851dced6240f5bdf76f8f34bb60a0-w2   161.***.***.***   10.132.253.30   u2c.2x4.encrypted   normal   Ready    tok02   1.9.2_1501   
kube-tok02-cr18e851dced6240f5bdf76f8f34bb60a0-w3   161.***.***.***   10.132.253.17   u2c.2x4.encrypted   normal   Ready    tok02   1.9.2_1501   
~~~

kubecltでノードを表示したケース

~~~
$ kubectl get node
NAME            STATUS    AGE       VERSION
10.132.253.17   Ready     10m       v1.9.2-4+819981a2462d38
10.132.253.30   Ready     10m       v1.9.2-4+819981a2462d38
10.132.253.38   Ready     10m       v1.9.2-4+819981a2462d38
~~~



## k8sクラスタに関連するサブネットをリスト

~~~
$ bx cs subnets
OK
ID        Network                                      Gateway                                   VLAN ID   Type      Bound Cluster   
1571901   10.93.66.128/26                              10.93.66.129                              2151537   private      
1321303   10.171.107.192/26                            10.171.107.193                            2246737   private      
1568799   169.**.**.***/28                             169.**.**.***                             2246735   public       
1511861   169.**.***.***/28                            169.**.***.***                            2151535   public       
999167    161.***.***.**/28                            161.***.***.**                            978113    public       
1038815   161.***.***.***/28                           161.***.***.***                           978113    public       
1038857   10.132.253.0/26                              10.132.253.1                              978115    private      
1038909   161.***.***.***/28                           161.***.***.***                           978113    public       
1072373   2401:c900:1001:0150:0000:0000:0000:0000/64   2401:c900:1001:0150:0000:0000:0000:0001   978113    public   
~~~


## k8sのロードバランサーに指定できるパブリックのIPアドレスのリスト

~~~
$ bx sl subnet list -d tok02  --network-space PUBLIC --subnet-type  SECONDARY_ON_VLAN 
ID        identifier        タイプ              network_space   datacenter   vlan_id   IP   hardware   virtual_servers   
999167    161.***.***.**    SECONDARY_ON_VLAN   PUBLIC          tok02        978113    16   0          0   
1038815   161.***.***.***   SECONDARY_ON_VLAN   PUBLIC          tok02        978113    16   0          0   
~~~

VLANのID番号で抜き出す方法

~~~
$ bx cs subnets |grep -e 999167 -e 1038815
999167    161.***.***.**/28                            ***.***.***.**                            978113    public       
1038815   161.***.***.***/28                           ***.***.***.***                           978113    public   
~~~

k8sの管理対象のサブネットに指定する。 これにより、YAMLファイルでIPアドレスを指定できる様になる。

~~~
$ bx cs cluster-subnet-add mycluster5 999167
OK
$ bx cs cluster-subnet-add mycluster5 1038815
OK
~~~