はじめに
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の学習のお供にいいですね。
有効期限を過ぎると、課金しない限り使えなくなる点はご注意ください。
以上、ご参考になれば幸いです。