1
2

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 3 years have passed since last update.

[検証] Kubernetesを一緒に始めましょう [minikubeとチュートリアルを活用]

Posted at

■ はじめに

多くの企業が採用を始めており、トレンドになっているという
Kubernetes を一緒に学んでいきましょう。

上記が本稿の主旨となります。

といっても公式Documentや他技術blogなどで、Kubernetesとはどういったものかという情報自体は溢れているかと思います。
そこでコチラでは未経験者や初級エンジニアさんを対象に、そして私自身のために、こんな風に学習をススメてみましたを共有出来たらと思います。

// 活発な議論がなされているという参考記事
専門家が論ずるKubernetesのトップトレンドと運用上の問題

kubernetes logo

■ 対象読者

  • Kubernetes未経験者
  • 初級エンジニア
  • 私自身 (Input/Outputしながら進めることで学習効率を上げたい)

■ Documents

下記情報を基に、読んでは試してみるというカタチで進めてみようと思います。

公式Document
https://kubernetes.io/docs/home/
※日本語版もしっかり整理されています

GitHub上のリポジトリ
https://github.com/kubernetes/kubernetes
※ヒントとなりそうな情報がちらほら。構成図なども公開されています。

■ 学習方法

 ざっとDocumentに目を通してみると、多くのクラウドサービスやOSSが提供している機能を包括している印象を受けました。しかしながら、情報量が多すぎてイメージが付きづらいため、実際にさわりながら学習を進めたいと思います。
幸いなことに検証ツールを公式が用意して下さっています。それが下記のminikubeです。

minikube

  • ローカル環境でKubernetesを簡単に実行するためのツール
  • PC上のVM内でシングルノードのKubernetesクラスタを実行することができる
minikube logo **公式Document** https://minikube.sigs.k8s.io/docs/ https://github.com/kubernetes/minikube https://kubernetes.io/docs/tutorials/hello-minikube/

■ 始める前に

まず一番最初に引っ掛かるのが Kubernetes の 読み方、発音だと思います。
下記記事を引用しますと、開発メンバーが何と呼んでいるかのツイート と 実際発音している動画を取り上げており、私はそれにならうことにしました(聞こえたとおりに)

引用: シラベタ - 「Kubernetes」の正しい読み方(発音)

■ 検証開始

■ 01. 検証環境の準備

では早速、minikube公式のDocumentに沿って進めてみます。
チュートリアル形式で記載されており、取っ掛かり易い感じです。
https://minikube.sigs.k8s.io/docs/start/

環境

Host OS Windows 10(64bit)
VM VirtualBox(6.1.22)

多くの方がおうちの環境で用意し易いだろう、コチラでやってみました。
※VirtualBoxは適宜導入してみてください。

■ 02. minikube for Windows インストール

3通りの方法が提示されていましたが、そのうちの2つであるパッケージマネージャを導入していなかったため、
**「minikube-installer.exe」**からインストールしました。下記はインストール後の確認になります。

Poweshell
PS C:\Users\Mitzi> minikube version
minikube version: v1.20.0
commit: c61663e942ec43b20e8e70839dcca52e44cd85ae

■ 03. Kubernetesクラスタ起動

Poweshell
PS C:\Users\Mitzi> minikube start
* Microsoft Windows 10 Home 10.0.18363 Build 18363 上の minikube v1.20.0
* virtualboxドライバーが自動的に選択されました
* VM ブートイメージをダウンロードしています...
    > minikube-v1.20.0.iso.sha256: 65 B / 65 B [-------------] 100.00% ? p/s 0s
    > minikube-v1.20.0.iso: 245.40 MiB / 245.40 MiB [] 100.00% 9.77 MiB p/s 25s
* コントロールプレーンのノード minikube を minikube 上で起動しています
* Kubernetes v1.20.2 のダウンロードの準備をしています
    > preloaded-images-k8s-v10-v1...: 491.71 MiB / 491.71 MiB  100.00% 8.78 MiB
* virtualbox VM (CPUs=2, Memory=2200MB, Disk=20000MB) を作成しています...\            # このタイミングでVirtualBox Interfaceへの変更許可を求められる(2回)
* Docker 20.10.6 で Kubernetes v1.20.2 を準備しています...
  - Generating certificates and keys ...
  - Booting up control plane ...
  - Configuring RBAC rules ...
* Kubernetes コンポーネントを検証しています...
  - Using image gcr.io/k8s-minikube/storage-provisioner:v5
* 有効なアドオン: default-storageclass, storage-provisioner
* kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

Headless Frontendで起動されたVirtualBoxを確認してみると、minikubeというゲストOSが追加されていました。
minikube on VirtualBox

■ 04. shinyなクラスタにさわってみる

// 公式の文言より:

If you already have kubectl installed, you can now use it to access your shiny new cluster

04-1. minikube.exe経由で、 VM上のpodの状態を確認

Poweshell
PS C:\Users\Mitzi> minikube kubectl -- get po -A
    > kubectl.exe.sha256: 64 B / 64 B [----------------------] 100.00% ? p/s 0s
    > kubectl.exe: 39.52 MiB / 39.52 MiB [---------] 100.00% 11.69 MiB p/s 3.6s
NAMESPACE     NAME                               READY   STATUS    RESTARTS   AGE
kube-system   coredns-74ff55c5b-xjpmp            1/1     Running   0          28m
kube-system   etcd-minikube                      1/1     Running   0          29m
kube-system   kube-apiserver-minikube            1/1     Running   0          29m
kube-system   kube-controller-manager-minikube   1/1     Running   0          29m
kube-system   kube-proxy-92wbf                   1/1     Running   0          28m
kube-system   kube-scheduler-minikube            1/1     Running   0          29m
kube-system   storage-provisioner                1/1     Running   1          29m

※補足
・kubelctl は下記のようにローカルフォルダ配下に格納されていました。こちらを利用していた様です。
C:\Users\Mitzi\.minikube\cache\windows\v1.20.2\kubectl.exe

04-2. kubectlを導入

・公式の手順に沿って最新版のkubectlを入手し、同様の確認を行いました。
https://kubernetes.io/docs/tasks/tools/

a) 最新版の kubectl.exe を入手

Poweshell
PS C:\Users\Mitzi\Downloads> curl -LO https://dl.k8s.io/release/v1.21.0/bin/windows/amd64/kubectl.exe

 ↓ "-LO" のパラメータは使えないと警告がでる。 実体は下記コマンドになるため下記のように対応

PS C:\Users\Mitzi\Downloads> Invoke-WebRequest -Uri https://dl.k8s.io/release/v1.21.0/bin/windows/amd64/kubectl.exe -OutFile ./kubectl.exe

 
b) チェックサムファイルで正常にDL出来たか確認
・Documentに沿って律儀に対応してみました。勉強。

Poweshell
PS C:\Users\Mitzi\Downloads> curl https://dl.k8s.io/v1.21.0/bin/windows/amd64/kubectl.exe.sha256 -o ./kubectl.exe.sha256

・ハッシュ値を比較

Poweshell
PS C:\Users\Mitzi\Downloads> CertUtil -hashfile kubectl.exe SHA256
SHA256 ハッシュ (対象 kubectl.exe):
9f77c0198c15b3b7f051cd4a58fb40941ade04c7d0b30c889aec64b8f4a57ed1

PS C:\Users\Mitzi\Downloads> type kubectl.exe.sha256
9f77c0198c15b3b7f051cd4a58fb40941ade04c7d0b30c889aec64b8f4a57ed1

OKでした

・ちなみにワンライナーでは下記のようにして確認出来ました

Poweshell
PS C:\Users\Mitzi\Downloads> $($(CertUtil -hashfile .\kubectl.exe SHA256)[1] -replace " ", "") -eq $(type .\kubectl.exe.sha256)
True

 
c) PATH環境変数に登録
・kubectl.exeを気軽に使えるよう手動でPATH環境変数に登録した後、下記のように反映を確認

Poweshell
PS C:\Users\Mitzi> $ENV:path.split(";") | Select-String Kubernetes
-----
C:\Program Files\Kubernetes\Minikube
C:\Program Files\Kubernetes\bin       <- minikubeに合わせて、当該フォルダ配下にkubectl.exeを格納したためコチラを設定

 
d) コマンド実行確認と合わせてバージョン確認

Poweshell
PS C:\Users\Mitzi> kubectl version --client
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.0", GitCommit:"cb303e613a121a29364f75cc67d3d580833a7479", GitTreeState:"clean", BuildDate:"2021-04-08T16:31:21Z", GoVersion:"go1.16.1", Compiler:"gc", Platform:"windows/amd64"}

最新版であることを確認

e) あらためてkubectlコマンドから直接shinyなクラスタにアクセス(pod情報を表示)

Poweshell
PS C:\Users\Mitzi> kubectl get po -A
NAMESPACE              NAME                                        READY   STATUS    RESTARTS   AGE
kube-system            coredns-74ff55c5b-xjpmp                     1/1     Running   0          10h
kube-system            etcd-minikube                               1/1     Running   0          10h
kube-system            kube-apiserver-minikube                     1/1     Running   0          10h
kube-system            kube-controller-manager-minikube            1/1     Running   0          10h
kube-system            kube-proxy-92wbf                            1/1     Running   0          10h
kube-system            kube-scheduler-minikube                     1/1     Running   0          10h
kube-system            storage-provisioner                         1/1     Running   1          10h
kubernetes-dashboard   dashboard-metrics-scraper-f6647bd8c-dmcbn   1/1     Running   0          9h
kubernetes-dashboard   kubernetes-dashboard-968bcb79-68sph         1/1     Running   0          9h

※後述するDashboardの起動をやった後だったため、上記のように表示が増えていました。

04-3. Dashboard起動

Poweshell
PS C:\Users\Mitzi> minikube dashboard
* ダッシュボードを有効化しています...
  - Using image kubernetesui/dashboard:v2.1.0
  - Using image kubernetesui/metrics-scraper:v1.0.4
* ダッシュボードの状態を確認しています...
* プロキシを起動しています...
* プロキシの状態を確認しています...
* Opening http://127.0.0.1:51281/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...

・デフォルトブラウザが自動で起動しDashboardが表示されました (ちなみにポート番号は、起動の度に変わっていました)
Kubernetes Dashboard

公式Documentより
https://minikube.sigs.k8s.io/docs/handbook/dashboard/

GUIからrolling update や podの管理が出来るとのこと

04-4. Dashboard停止

To stop the proxy (leaves the dashboard running), abort the started process (Ctrl+C)

肝心の止め方も記載がありました。割り込んで止めてとのことです。ワイルド

■ ここまでのまとめ

 検証環境を用意し、Kubernetesの機能の一端に触れるところまでになります。
今後も Documentを参照しながら検証するという形式で学習を継続したく思います。

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?