2020/11/30
今回できたこと
Jetson Nano関連:
K3s環境を削除し、K8s環境を構築した。
デフォルトランタイムをnvidiaに変更する。
Docker on FreeBSDについて、提供された情報をまとめた。
今後の作業
K8s aarch64クラスタを実現する。
とりあえず、よくある例題をする。
現実的な構成をどうするのか?
お約束
この文章は、日本仮想化技術株式会社の社会人インターシップ制度を利用して作業した結果をまとめたものです。
文章化作業
作業報告関連
トップのページで、全てのページのサムネイルが「この文章は、日本仮想化技術株式会社の社会人インターシップ制度を利用して作業した結果をまとめたものです。」となってしまうので、内容の順番を「今回できたこと」などの後に「お約束」として、この言葉を入れるように順番変更した。
古い作業報告で、「今回できたこと」などの項目がなかったため、これを追加する。
定例作業
2020/11/30作業日報作成。
参考文献
改訂新版Jenkins実践入門: Jenkinsというキーワードを聞いた気がするので、購入する。
k3sを知る、動かす、感じる: K3sの解説から、実習まで。
ClusterHATを使って世界最小Kubernetesクラスタを構築する - サーバー構築編: Raspberry Pi Zeroで4台までのクラスタが作れるClusterHATを用いて、K8sクラスタを構築している。武藤手持ちがあるので、余裕ができたら試してみたい。
Jetson NanoにK8s環境を構築する
以前(2020/11/06)、Jetson NanoにK3s環境を構築したが、aarch64クラスタはK8s環境で構築する方針としたため、K3s環境を削除し、K8s環境に変更する。
はじめに、Uninstalling K3sに従って、K3s環境を削除する。
削除作業の詳細は、2020/11/30詳細参照。
code:shell
$ /usr/local/bin/k3s-uninstall.sh
(snip)
次に、K8s環境をJetson Nanoに構築する。
実際の作業は、2020/11/27の通り。
apt-get installの詳細は、2020/11/30詳細を参照。
code:shell
$ curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg|sudo apt-key add -
OK
$ echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kube.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
$ sudo apt-get update
(snip)
$ sudo apt-get install kubelet kubeadm kubectl
(snip)
K3sでテストで動いていた環境が残っていたため、以下のようにK8sをリセットする。
code:shell
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
26b2f9d1ff2c 9be4f056f04b "entry" 27 minutes ago Up 27 minutes k8s_lb-port-443_svclb-traefik-cvm2z_kube-system_f6d0170a-5a5d-42bc-be9f-ba94f714e86a_18
2d48add1cef4 9be4f056f04b "entry" 27 minutes ago Up 27 minutes k8s_lb-port-80_svclb-traefik-cvm2z_kube-system_f6d0170a-5a5d-42bc-be9f-ba94f714e86a_18
(snip)
$ sudo kubeadm reset
reset WARNING: Changes made to this host by 'kubeadm init' or 'kubeadm join' will be reverted.
reset Are you sure you want to proceed? y/N: y
preflight Running pre-flight checks
W1130 09:59:30.583921 22701 removeetcdmember.go:79] reset No kubeadm config, using etcd pod spec to get data directory
reset No etcd config found. Assuming external etcd
reset Please, manually reset etcd to prevent further issues
reset Stopping the kubelet service
reset Unmounting mounted directories in "/var/lib/kubelet"
W1130 09:59:30.597355 22701 cleanupnode.go:99] reset Failed to evaluate the "/var/lib/kubelet" directory. Skipping its unmount and cleanup: lstat /var/lib/kubelet: no such file or directory
reset Deleting contents of config directories: /etc/kubernetes/manifests /etc/kubernetes/pki
reset Deleting files: /etc/kubernetes/admin.conf /etc/kubernetes/kubelet.conf /etc/kubernetes/bootstrap-kubelet.conf /etc/kubernetes/controller-manager.conf /etc/kubernetes/scheduler.conf
reset Deleting contents of stateful directories: /var/lib/dockershim /var/run/kubernetes /var/lib/cni
The reset process does not clean CNI configuration. To do so, you must remove /etc/cni/net.d
The reset process does not reset or clean up iptables rules or IPVS tables.
If you wish to reset iptables, you must do so manually by using the "iptables" command.
If your cluster was setup to utilize IPVS, run ipvsadm --clear (or similar)
to reset your system's IPVS tables.
The reset process does not clean your kubeconfig files and you must remove them manually.
Please, check the contents of the $HOME/.kube/config file.
以下のように、不要なDockerプロセスは削除された。
code:shell
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Jetson Nanoでデフォルトランタイムとしてnvidiaを使う
2020/11/06で、Jetson Nanoのデフォルトランタイムをnvidiaにする作業で、設定を変更後にDockerが動かなかった件に関して、Tutorial: Deploying TensorFlow Models at the Edge with NVIDIA Jetson Nano and K3sを参照し、設定変更を行う。
以下の設定で、Dockerのデフォルトランタイムをnvidiaに変更することができた。
以前の設定で間違っていたのは、"default-runtime": "nvidia"の記述位置が"runtimes":の中になっていたことである。
code:/etc/docker/daemon.json
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
以下のように再起動し、デフォルトランタイムがnvidiaに変わったことを確認した。
code:shell
$ sudo systemctl restart docker
$ docker info |grep Runtime
Runtimes: nvidia runc
Default Runtime: nvidia
Docker on FreeBSDの情報収集
第69回FreeBSDワークショップ(オンライン)において、現在まとめている/BSD/Docker on FreeBSDに関して話題提供し、参加者から有用な情報を得た。
参加者二人から、には、DockerをFreeBSDで動かすための具体的な情報があり、この手順でDockerが動くはずということであった。
手元で試したところ、Goのバイナリを作成するところで、バイナリが生成されなかった。
code:shell
$ ./hack/make.sh binary
これに対して、以下のファイルの修正でビルドができると連絡があり、パッチの提供を受けた。
docker/VERSION
docker/system/mknod.go
doker/archive/archive.go
しかし、動作状況は以下のようである。
docker vesionは正しい表示をしているようだ。
code:shell
% ./bundles/latest/binary/docker version
Client version: 19.03.13
Client API version: 1.19
Go version (client): go1.15.5
Git commit (client): b1c37d233-dirty
OS/Arch (client): freebsd/amd64
Server version: 19.03.13
Server API version: 1.19
Go version (server): go1.15.5
Git commit (server): b1c37d233-dirty
OS/Arch (server): freebsd/amd64
dockerデーモンが動いていないように見える?
一度、手元でもビルドしてみて、動作を確認してみる予定である。
#diary
#Keyword
#Docker #Kubernetes
#minikube #DockerDesktop
#macOS #Linux #Windows #FreeBSD #KataKoda
#JetsonNano #RaspberryPi