(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【IBM Cloud Kubernetes Service】無料クラスターを利用するまでの流れ

スポンサーリンク

はじめに

IKSでは、フリー・クラスターと呼ばれる一定期間で廃棄されるも無料で利用できるクラスターを作成することができます。
制約としてNodeは1つですが、端末の都合でDockerDesktopをローカルで動かせない場合には検証環境として利用できます。本記事ではkubectlをクラスターに打つまでの流れを解説します。

環境情報
$ ibmcloud --version
...version 1.3.0:...
$ bash --version
GNU bash, バージョン 4.4.12(3)-release (x86_64-unknown-cygwin)

クラスターの作成

IBMIDでログイン後にIBMCloudのダッシュボードを開き、Kubernetesカテゴリーを選択すると「クラスターの作成」ボタンを押下します。
そうするとPricing planが選定できるので標準ではなく無料を選択します。

あとは任意のクラスター名(ex myiks-free)を入力すればWorkerNode情報や料金が表示されるので

無料 - 2 vCPU 4GB RAM

無料となっていることを確認して作成ボタンを押下します。

すると画面が遷移し、有効期限の表示と共に環境の作成中フェーズに移ります。

マスター、ワーカーの準備中...
XX/X/XX XX:XX に有効期限切れ

その画面にて初期インストールの手順(ibmcloud,kubectlのインストール)が促されるのでそれに沿ってインストールします。

クラスターへの接続

ログイン処理後にクラスター情報を確認すると以下のように「deploying」という状態のクラスターが確認できます。

$  ibmcloud ks clusters
OK
名前         ID                     状態        作成            ワーカー   ロケーション   バージョン     リソース・グループ名   プロバイダー
myiks-free   xx   deploying   6 minutes ago   1          Dallas         1.18.13_1535   -                      classic

試しにこの状態で接続情報をインストールしようとすると準備中のためエラーとなりました。

$ ibmcloud ks cluster config --cluster xx
FAILED
The cluster is not fully deployed yet. Wait a few minutes, then try again. (E0030)

この状態が「normal」になれば準備完了ですが「deploying」の次のフェーズである「pending」になるとWeb画面上は「ワーカーのファイナライズ中...」となっていますがconfigのインストールができました。

$ ibmcloud ks cluster config --cluster xx
OK
xx の構成は正常にダウンロードされました。

コンテキストが設定されている状態になり

$ kubectl config get-contexts
CURRENT   NAME                                CLUSTER                             AUTHINFO                 NAMESPACE
*         myiks-free/xx    myiks-free/xx     xxx/iam.cloud.ibm.com-identity   default

WorkerNodeも確認できます。

$ kubectl get node
NAME             STATUS   ROLES    AGE    VERSION
10.X.X.X  Ready    <none>   xx   v1.18.13+IKS

ちなみにibmcloudコマンドを利用するとWokerNodeのパブリックIPも見えます。この値はPodをつつきにいく際に利用します。

$ ibmcloud cs workers --cluster xx
OK
ID                                                     パブリック IP   プライベート IP   フレーバー   状態     状況    ゾーン   バージョン
kube-xx-myiksfree-default-xx   169.x.x.x  10.X.X.X    free         normal   Ready   mex01    1.18.13_1536

コマンドの試し打ち

デフォルトで以下の名前空間ができています。

$ kubectl get ns
NAME              STATUS   AGE
default           Active   18m
ibm-cert-store    Active   5m53s
ibm-operators     Active   14m
ibm-system        Active   16m
kube-node-lease   Active   18m
kube-public       Active   18m
kube-system       Active   18m

試しにPodを動かしてWorkerNodeの情報を取りにいくと同NodeがUbuntuで動作していることが分かります。

$ kubectl run busybox --image=busybox --rm -it --restart=Never -- uname -a
Linux busybox 4.4.0-197-generic #229-Ubuntu SMP xx x86_64 GNU/Linux
pod "busybox" deleted

サービスを公開

nginxをデプロイメントで作成し、NodePortとして公開します。

# kubectl create deployment nginxdep --image=nginx
deployment.apps/nginxdep created
# kubectl expose deployment nginxdep --port=8080 --target-port=80 --name=nginx-nodep --type=NodePort
service/nginx-nodep exposed

WorkerNodeにポートが割り当てられているので

# kubectl get service
NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes    ClusterIP   172.21.0.1      <none>        443/TCP          24h
nginx-nodep   NodePort    172.21.56.102   <none>        8080:30405/TCP   11s

WorkerNodeのパブリックIPと同ポートに対してcurlコマンドを打てば正常に疎通できます。

# curl 169.XX.XX.XX:30405
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...

終わりに

無料で利用できるのでKubernetesの学習のお供にいいですね。
有効期限を過ぎると、課金しない限り使えなくなる点はご注意ください。

以上、ご参考になれば幸いです。