ではお待ちかねのTKG導入編です!さっそくTKGをやってみましょう!
#踏み台サーバのデプロイ
Day 12でも少し触れましたが、最初に親ガメ(Bootstrapマシン)が必要です。この環境は、Windows/Mac/Linuxと幅広いOSに対応していて、更にいうとノートPCとかでも全然問題ないのですが、せっかくvSphereを建てたので、踏み台サーバを使って綺麗な状態からインストールを行いたいと思います。
踏み台サーバは、物理NUC側に入れたいと思います。オススメVMはUbuntuです。公式サイトからOVAが配布されてるので、手軽です。「OVFテンプレートのデプロイ」を選んでみます。
1では、20.04 LTS 最新のOVAイメージのパス を指定します。
2では、「bastion01」というサーバ名にして、3では、「192.168.5.13」のリソースを指定しました。
5では、では、リソース節約のため「シンプロビジョニング」にすることを忘れないで下さい。
7では、hostnameをVM名に合わせ、ssh public keyは「~/.ssh/id_rsa.pub」に持っているものを流し込みます。また、Default User's passwordも指定します。
はい、しばらく待つと出来上がり。続いて、HW設定を行います。
CPU:1、「CPUホットアドの有効化」にチェック、「ハードウェアアシストによる〜」にチェック、「メモリホットプラグ」にチェック、ハードディスク30GB、と、変更していきました。
おぉ、めちゃサクッと起動しました!細かいインストールプロセスもありません。
初回は、「ubuntu」ユーザと先ほどのステップで指定したパスワードを指定します。続いて、パスワードの変更を求められます。
パスワード変更後は、先ほど設定したssh keyによってローカルPCのターミナルからログイン可能となります。ついでに、IPも固定アドレスにしちゃいましょう。
$ ip a
# 編集対象のインターフェイス名を確認。私の場合は「ens192」だった。
$ sudo vi /etc/netplan/99_config.yaml
# 編集開始。ご自身の環境に合わせて書き換えて下さい
network:
version: 2
renderer: networkd
ethernets:
ens192:
dhcp4: false
dhcp6: false
addresses: [192.168.5.41/24]
gateway4: 192.168.5.1
nameservers:
addresses: [192.168.5.1, 8.8.8.8, 8.8.4.4]
# 編集ここまで
$ sudo netplan apply
# 設定が反映されると、今までのIPアドレスでは通信できなくなるので、端末が固まる
再び端末を立ち上げて、新しいアドレスに接続してみる
% ssh ubuntu@192.168.5.41
# ログイン成功! ここから踏み台
$ ip a
# 念のため、意図通りの設定になったか確認
#必要コンポーネントのインストール
まずはMy VMwareに行き、以下の2つをダウンロードします。
- VMware Tanzu Kubernetes Grid CLI for Linux
- kubectl cluster cli v1.19.3 for Linux (←バージョンはその時による)
落としたものを、踏み台に上げておきましょう。
$ cd ~/Downloads/
# 自分の環境に合わせてダウンロード先に移動
$ scp kubectl-linux-v1.19.3-vmware.1.gz tkg-linux-amd64-v1.2.1-vmware.1.tar.gz ubuntu@192.168.5.41:~
# 上記のコピー元やコピー先は一例です
###TKG CLIのインストール
なお、ここで出てくる「tkg」コマンドは、Cluster APIが持つ「clusterctl」コマンドの拡張です。なので、基本的な使い方やオプションなどは一緒です。また、マニュアルではファイル名を変えて、/usr/local/bin に mv しているが、元のファイル名の情報を残したかったので、ln -s を用いてみました。
$ tar zxvf tkg-linux-amd64-v1.2.1-vmware.1.tar.gz
$ ls tkg
# 出力例。tkg以外にも、Carvel Toolsが同梱されていた。
imgpkg-linux-amd64-v0.2.0+vmware.1 kbld-linux-amd64-v0.24.0+vmware.1 ytt-linux-amd64-v0.30.0+vmware.1
kapp-linux-amd64-v0.33.0+vmware.1 tkg-linux-amd64-v1.2.1+vmware.1
# これら、最初のハイフン前までの名前に変更して、/usr/local/binに設置したいので、ワンライナーで書いてみる
$ for I in `ls -1 tkg`; do NAME=`echo $I | awk -F"-" '{print $1}'`; sudo ln -s ~/tkg/$I /usr/local/bin/$NAME; done
$ ls -l /usr/local/bin/
# 出力例
lrwxrwxrwx 1 root root 51 Dec 13 05:25 imgpkg -> /home/ubuntu/tkg/imgpkg-linux-amd64-v0.2.0+vmware.1
lrwxrwxrwx 1 root root 50 Dec 13 05:25 kapp -> /home/ubuntu/tkg/kapp-linux-amd64-v0.33.0+vmware.1
lrwxrwxrwx 1 root root 50 Dec 13 05:25 kbld -> /home/ubuntu/tkg/kbld-linux-amd64-v0.24.0+vmware.1
lrwxrwxrwx 1 root root 48 Dec 13 05:25 tkg -> /home/ubuntu/tkg/tkg-linux-amd64-v1.2.1+vmware.1
lrwxrwxrwx 1 root root 49 Dec 13 05:25 ytt -> /home/ubuntu/tkg/ytt-linux-amd64-v0.30.0+vmware.1
# 動作確認
$ tkg version
Client:
Version: v1.2.1
Git commit: 9d15a485f2ccc462622f8df6a81e5fa831c51895
kubectlのインストール
$ gunzip kubectl-linux-v1.19.3-vmware.1.gz
$ chmod +x kubectl-linux-v1.19.3-vmware.1
# tkgディレクトリに一緒に入れて置いてみる。
$ mv kubectl-linux-v1.19.3-vmware.1 tkg/
$ sudo ln -s ~/tkg/kubectl-linux-v1.19.3-vmware.1 /usr/local/bin/kubectl
$ ls -l /usr/local/bin/kubectl
# 出力例
lrwxrwxrwx 1 root root 47 Dec 13 05:42 /usr/local/bin/kubectl -> /home/ubuntu/tkg/kubectl-linux-v1.19.3-vmware.1
# 動作確認
$ kubectl version --short
Client Version: v1.19.3+vmware.1
The connection to the server localhost:8080 was refused - did you specify the right host or port?
kubernetesに接続できないエラーが出ているけど、現時点では何も入ってないので、気にしなくて大丈夫。
dockerのインストール
Prerequisitesに書いてある通り、Dockerも必要です。Docker公式通りにやってみます。
$ sudo apt-get update
# Reading package lists... Done を確認
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
# 途中、続けていいか聞かれるので、「Y」キーを押す。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# OK を確認
$ sudo apt-key fingerprint 0EBFCD88
# 一つ前で追加したGPG公開鍵が確認できることを確認。以下、出力例
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
# Reading package lists... Done を確認
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
# 途中、続けていいか聞かれるので、「Y」キーを押す。
# 動作確認
$ docker -v
Docker version 20.10.0, build 7287ab3
(2020/12/13追記)
dockerの権限が足りなかったので、以下を実行してあげる
$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json: dial unix /var/run/docker.sock: connect: permission denied
# こんな感じのエラーが出ていたので、dockerグループにubuntuユーザを追加してあげる
$ sudo gpasswd -a $(whoami) docker
Adding user ubuntu to group docker
# docker.sockをdockerグループにする
$ sudo chgrp docker /var/run/docker.sock
# この後ログインし直したら正常に実行できた
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
###TKG CLIの初期化
$ tkg get mc
MANAGEMENT-CLUSTER-NAME CONTEXT-NAME STATUS
なお、ここで指定している「mc」とは、「management-cluster」のショートハンドです。毎回フルネームで打つと大変なので、覚えておくと良いでしょう。
ここで、初めてtkgコマンドを打ったことが重要で、初回の動作時に、~/.tkg フォルダが生成され、TKGの設定ファイルが格納されます。これらのファイルを編集することで、特定のTKGやkubernetesバージョンのみを利用することが可能となります。
- ~/.tkg/config.yaml:クラスタ設定ファイル
- ~/.tkg/bom/bom-*.yaml:TKCが必要とするパッケージ情報が格納される。
長くなってきたので、本日はここで終わります。お疲れさまでした!