涅槃を目指す in はてな

人生に迷う様を書きます

Kubernetes The Hard Way On VirtualBox 1日目

どうした

前からうすうす感じてたんですけど、私はkubernetesを雰囲気で使ってます。

どっかから落としたyamlをイジってはdeploy、既存のyamlをイジってはdeploy

「壊れたら再作成すればいいっしょw」

。。。

なんすかこれ?

なんなんすかこれ?

経典として買ったkubernetes完全ガイドが泣いてました

というわけで再入門。なんとなくスルーしてきた『Kubernetes The Hard Way』をやります!

しかもVirtualBoxでも出来るように神が作ってくれた『Kubernetes The Hard Way On VirtualBox』だッ!

Kubernetes The Hard Way On VirtualBox

本来はGCP上に作成したVMkubernetesを作成するんですが、これは手元のVirtualBoxで作成したVMkubernetesを作成します。

github.com

結構長いので、地道にやっていこうと思ってます。

今回は1日目。環境構築。

Prerequisites

VM Hardware Requirements

HW要件としては

8 GB of RAM (Preferably 16 GB) 50 GB Disk space

とされてます

私のうちのPCを確認

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev             32G     0   32G   0% /dev
tmpfs           6.3G  2.5M  6.3G   1% /run
/dev/nvme0n1p2  457G  180G  254G  42% /
tmpfs            32G  235M   32G   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
$ free -h 
              total        used        free      shared  buff/cache   available
Mem:           62Gi       9.2Gi        29Gi       449Mi        23Gi        52Gi
Swap:         2.0Gi          0B       2.0Gi

余裕っすねうんうん。

Virtual Box

OSのバージョン確認

$ cat /etc/issue
Ubuntu 20.04.3 LTS

Virtual Boxのバージョン確認

$ VBoxManage -v
6.1.26r145957

Vagrant

Vagrantのバージョン確認

$ vagrant version
Installed Version: 2.2.6

Vagrant was unable to check for the latest version of Vagrant.
Please check manually at https://www.vagrantup.com

Provisioning Compute Resources

リポジトリをローカルにcloneします

$ git clone https://github.com/mmumshad/kubernetes-the-hard-way.git

vagrantファイルがあるディレクトリに移動

$ cd kubernetes-the-hard-way\vagrant

ここにあるVagrantfileを実行すると、以下のような5つのVMが作成されます。

VM VM Name Purpose IP Forwarded Port
master-1 kubernetes-ha-master-1 Master 192.168.5.11 2711
master-2 kubernetes-ha-master-2 Master 192.168.5.12 2712
worker-1 kubernetes-ha-worker-1 Worker 192.168.5.21 2721
worker-2 kubernetes-ha-worker-2 Worker 192.168.5.22 2722
loadbalancer kubernetes-ha-lb LoadBalancer 192.168.5.30 2730
$ vagrant up

しばらく待ちましょう。

プロンプトが戻ってきたらVMを確認

$ vagrant status
Current machine states:

master-1                  running (virtualbox)
master-2                  running (virtualbox)
loadbalancer              running (virtualbox)
worker-1                  running (virtualbox)
worker-2                  running (virtualbox)

This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run `vagrant status NAME`.

確認のため、各VMSSH接続してみましょう

$ vagrant ssh master-1
$ vagrant ssh master-2
$ vagrant ssh loadbalancer 
$ vagrant ssh worker-1
$ vagrant ssh worker-2  

workerでは、dokerのバージョン確認も確認しておきましょう

$ sudo docker version
Client: Docker Engine - Community
 Version:           20.10.8
 API version:       1.41
 Go version:        go1.16.6
 Git commit:        3967b7d
 Built:             Fri Jul 30 19:54:08 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.8
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.6
  Git commit:       75249d8
  Built:            Fri Jul 30 19:52:16 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.9
  GitCommit:        e25210fe30a0a703442421b0f60afac609f950a3
 runc:
  Version:          1.0.1
  GitCommit:        v1.0.1-0-g4144b63
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Installing the Client Tools

管理タスク実行のための公開鍵設定と、kubectlといったクライアントツールを入れます。

master-1に入れる手順が公開されているが私のPCはUbuntuなので、ローカルで公開鍵を発行して書くServerに接続できるようにする

ローカルで鍵発行

$ ssh-keygen

基本的に全てデフォルトでおk

作成した鍵の中身をどこかにコピー

$ cat .ssh/id_rsa.pub

先程作成した全てのVMに鍵をコピー

cat >> ~/.ssh/authorized_keys <<EOF
ssh-rsa AAAAB3NzaC1yc2EAAAADA..........E= kbys@pc
EOF

Install kubectl

私のPCのはすでに入ってるので、ここら辺を参考にしてください

kubernetes.io

バージョン確認

$ kubectl version --client
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.2", GitCommit:"f5743093fd1c663cb0cbc89748f730662345d44d", GitTreeState:"clean", BuildDate:"2020-09-16T13:41:02Z", GoVersion:"go1.15", Compiler:"gc", Platform:"linux/amd64"}

今日はここまで!

お読みいただきありがとうございました!