黒縁眼鏡は海を飛ぶ

IT中心にそこはかとなく

k8sに入門するためにk3sから攻めてみようとしてk3os使ってみることにした記録

タイトルが長い。k3osインストールしてみたのでその記録。

この記事ではk3os v0.8.0を使用しています。

ISOダウンロードしてOSインストール

ISOはここからダウンロードできるので環境にあったものを選んで落とす。
ISOマウントして起動させる。

LiveCDになっているので普通にOSが起動してくるので、rancherユーザでログイン。パスワードはいらない。

そのままローカルディスクにインストールしたいので、

$ sudo k3os install

対話インストーラなので色々聞いてくるけど好みで。cloud initとやらに対応しているらしいけど、レガシーエンジニアの僕には関係なかった。
cluster組むならTokenを設定すること。

基本設定

インストールが終わったら、基本設定していく。
デフォルトだとDHCPでIP取ってくるようになってるから、まずはstaticに。
k3osはconnmanでネットワーク設定を行う。connmanって初めて聞いた。時代についていけてない。

$ sudo -i
$ cd /var/lib/connman        # ここに設定ファイルが入ってる
$ ls                         # ディレクトリとファイルが1つずつ。ディレクトリ名をコマンドで使うのでここにcdしたほうが作業しやすい
ethernet_hogehoge_cable settings
$ sudo connman services      # こいつがどうやらインターフェースのようだ
*A0 Wired              ethernet_hogehoge_cable
$ sudo connman services ethernet_hogehoge_cable          # 詳細設定が表示される
$ sudo connman config ethernet_hogehoge_cable --ipv4 manual <ipv4 address> <subnet mask> <default gateway> --nameservers <nameserver address> # staticにipv4を設定
$ sudo connman config ethernet_hogehoge_cable --ipv6 off # ipv6は無効化にもできる
$ sudo service connman restart                           # サービス再起動して設定を反映

ひとつに統一してほしい。

続いてホスト名も変えておこう。

$ sudo vi /var/lib/rancher/k3os/hostname # 中身を書き換えればOK
$ sudo reboot

worker nodeデプロイ

せっかくだからcluster組みたいのでworker nodeもデプロイする。

masterとほぼ同じだけど、sudo k3os install時にagentを選択して、URL of server:って聞かれたらhttps://<master ip>:6443を指定すること。

あと、Tokenも揃えること。

インストールが完了したらmaster nodeで確認してみよう。

$ kubectl get no
NAME         STATUS     ROLES    AGE     VERSION
k3os-14965   NotReady   master   55m     v1.16.3-k3s.2
k3os-18290   NotReady   <none>   12m     v1.16.3-k3s.2
k3os02       Ready      <none>   9m16s   v1.16.3-k3s.2
k3os01       Ready      master   46m     v1.16.3-k3s.2

ホスト名変えたからかNotReadyのエントリがある。。どうすればいいかは別途調査しよう。

Pod作ってみる

ここまで来たらあとはPod作ってみよう!

$ kubectl create -f nginx.yaml
replicationcontroller/nginx created
service/nginx-nodeport created
$ kubectl get pods
NAME          READY   STATUS    RESTARTS   AGE
nginx-jcxj8   1/1     Running   0          2m48s
$ kubectl get -f nginx.yaml
NAME                          DESIRED   CURRENT   READY   AGE
replicationcontroller/nginx   1         1         1       2m52s

NAME                     TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/nginx-nodeport   NodePort   10.43.212.175   <none>        80:30154/TCP   2m52s

ブラウザからhttp://<master/worker ip>:30154/にアクセスするとnginxのwelcome pageが。

manifestファイルとかresourceとかわからんので勉強します。

参考にさせていただいたサイト

k3OSを使ってみた -仮想化通信-
Kubernetes流YAML職人になるために -Qiita-