はじめに
1台の物理マシンでKubernetesを学習したいと思い、Docker on Ubuntu環境をバージョンアップしてみた。
1台の物理マシンでKubernets環境を構築する場合は、以下2つの方法がメジャーだと思う。
- kind
- minikube
kindは「kubernetes in Docker」の略でkubernetes自体のテストにも使われている。しかも、マルチノードクラスタを構築できる特徴があります。
一方、minikubeはドライバーを選択ができて、Docker、Virtual Boxなど色々な環境でkubernetesの検証ができるのが特徴です。ただシングルノードクラスタになりますが。
今回は、動作検証を目的としているのでminikubeを選択しました。
早速、で構築したDocker on Ubuntuに導入していきます!
構成
項目 | バージョン |
---|---|
OS | Ubuntu 22.04 |
minikube | minikube v1.31.2 |
Driver | Docker 24.0.4 |
クラスタ | Kubernetes v1.27.4 |
導入手順
公式サイトの手順に従って順番にコマンドを叩くだけで簡単に導入できます。
お手軽に導入できるのがいいですよね~!
1.minikubeのバイナリファイルをダウンロード
$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
$ sudo install minikube-linux-amd64 /usr/local/bin/minikube
2.クラスタを起動
初回はダウンロード等があって、ちょっと時間がかかります。
$ minikube start
Dockerがインストール済みなので、デフォルトでドライバーはdockerが選択されました。
Virtual BoxやKVM2でクラスタを構築した等がある場合はdriverオプションを付けることで起動できます。
この場合config設定をした方が便利だと思います。
公式サイトに設定手順等がありますので、ご参照ください。
3.kubectlをインストール
minikubeにもkubectlはインストールされていますが、minikube kubectl
とタイプする必要がありちょっと長い。
別途kubectlをインストールすることにしました。
公式サイトの通りコマンドを叩くだけです!
最新版のkubectlをダウンロード
$ curl -LO "https://dl.k8s.io/release/$(curl -LS https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
実行権限を付加
$ chmod +x ./kubectl
PATHが通っているディレクトリに移動
$ sudo mv ./kubectl /usr/local/bin/kubectl
稼働確認
$ kubectl version --client
$ kubectl cluster-info
4.kubectlのコマンド補完設定を追加 ※補完スクリプトはbash-completionに依存しているため、別途インストール必須
bash-completionがインストール済みで設定も完了しているかの確認
$ type _init_completion
kubectlの自動補完有効化
$ echo 'source <(kubectl completion bash)' >>~/.bashrc
$ kubectl completion bash > kubectl
$ sudo mv ./kubctl /etc/bash_completion.d/kubectl
$ sudo chown root:root /etc/bash_completion.d/kubectl
$ sudo chmod 644 /etc/bash_completion.d/kubectl
以下の設定もついでに追加
$ echo 'alias k=kubectl' >>~/.bashrc
$ echo 'complete -F __start_kubectl k' >>~/.bashrc
バージョンアップの方法
最新版のインストラーをダウンロードして、導入手順の1.と同様にインストールするだけ。
コマンドを再掲
$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
$ sudo install minikube-linux-amd64 /usr/local/bin/minikube
この状態でminikube start
を実行すると、kubernetesのバージョンアップもできると表示されるので以下のコマンドでバージョンアップする。
$ minikube start --kubernetes-version=v1.xx.x
xx.x:kubernetesの最新バージョン
kubernetesをバージョンアップするとkubectl
も最新のkubernetesに対応するバージョンにアップデートする必要がある。
これも導入手順と同様に最新バージョンをダウンロードするだけ。
$ curl -LO "https://dl.k8s.io/release/$(curl -LS https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
$ chmod +x ./kubectl
$ sudo mv ./kubectl /usr/local/bin/kubectl
$ kubectl version --client
kubernetesダッシュボードの全機能を使うために
ダッシュボードの全機能を使用するには、matrics-server
のアドオンを有効にする必要があるよう。
そこで、以下のコマンドで有効化する。
$ minikube addons enable metrics-server
今後の展望
絶対にやるという予定ではないです。記事投稿時の気分を書いてます。
ローカルでのkubernetes環境についてXにてアンケートを取ってみました。
母数が少ないですが、ローカル環境での検証としてminkubeを使用するのはメジャーなようです。ローカルの #kubernetes 環境は?
— LittleBear🐻 (@littlebear_6w6) August 11, 2023
minikubeでローカルでのkubernetes検証を進めて、ゆくゆくはマルチノード構成のkubernetes環境を構築しようかと思います。
具体的には、以下をやってみようかなと思っています。
- Rasberry piでおうちkubernetsの構築
- kindを使用したローカル環境でのマルチノード構成構築
1.については、CyberAgent社さんのインターンシップの記事が参考になりそうです。
おうちkubernets環境だと、@mochizuki875 さんとXとのやり取りでNUCにESXiをインストールしてVMで構築するのも興味深いなと思いました。
NUCにESXiインストールしてその上にVMで!笑
— mochizuki875 (@mochizuki875) August 13, 2023
コントローラーとかの検証であればkind使うこともあります◎
2.については、Cybozu社の記事が参考になりそうです。