2017.04.20 に Rancher OSのアーカイブ提供を開始いたしました | さくらのクラウドニュース というニュースが出ていました。
Kubernetes を気軽に立てたり捨てたりする環境として Rancher は便利そうなので気になっていました。どの OS 使うべきか悩みますしね (Dockerの本番運用 | インフラ・ミドルウェア | POSTD)。RancherOS は Rancher 用に最小のパッケージングで提供される OS です。そして全てを docker で実行します。ntpd も syslog も docker コンテナで稼働してます。udev や acpid なんてのもいます。
A simplified Linux distribution built from containers, for containers RancherOS は 4/12 に GA が出たばかりです [Press Release] RancherOS Hits General Availability Dockerコンテナに特化した「RancherOS」正式版リリース。Linuxカーネル上でDockerを実行、システムもユーザーもすべてをコンテナ空間に - Publickey ログインして sudo system-docker ps
を実行すると OS の必要機能として起動している docker コンテナが確認できます。
$ sudo system-docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b67a69f4b088 rancher/os-docker:17.03.1 "ros user-docker" 13 minutes ago Up 13 minutes docker
79a01794e57b rancher/os-console:v1.0.0 "/usr/bin/ros entrypo" 13 minutes ago Up 13 minutes console
df1815599bbf rancher/os-base:v1.0.0 "/usr/bin/ros entrypo" 13 minutes ago Up 13 minutes ntp
30b6333158ca rancher/os-base:v1.0.0 "/usr/bin/ros entrypo" 13 minutes ago Up 13 minutes network
ab5b3abf4e74 rancher/os-base:v1.0.0 "/usr/bin/ros entrypo" 13 minutes ago Up 13 minutes udev
517a848c2a36 rancher/os-acpid:v1.0.0 "/usr/bin/ros entrypo" 13 minutes ago Up 13 minutes acpid
79d1abc559d2 rancher/os-base:v1.0.0 "/usr/bin/ros entrypo" 13 minutes ago Up 13 minutes syslog
system-docker
は /usr/bin/ros
への symbolic link で通常の docker コマンド (/usr/bin/docker
は /var/lib/rancher/engine/docker
への symbolic link) とは別物になっています。
さくらのクラウドで RancherOS を起動してみる
https://secure.sakura.ad.jp/cloud/ からログインします。 サーバーの「追加」で「2. ディスク」の「アーカイブ選択」で「[20GB] RancherOS v1.0.0 LTS #112900470901
」を選択します。 すると次のような表示が出ます。
管理ユーザ名は「rancher」です。 サーバ作成後、rancherユーザでログインしてください。 [注意事項] サーバへの接続の際には公開鍵の登録が必須となります。 リモートコンソールからのログインは出来ません。 こちらは20GB固定サイズのアーカイブです。 20GBより大きいディスクを作成する場合、 パーティションをリサイズする cloud-config をご利用ください。 https://docs.rancher.com/os/configuration/resizing-device-partition/
これに従って「4. ディスクの修正」では「公開鍵」で「入力」か「選択」で公開鍵をセットします。 「配置する スタートアップスクリプト」は yaml_cloud_config しか使えません。 プリセットの「[public] Switching Consoles for RancherOS #112900473840
」が選択できますが必要であれば自作できます。 https://docs.rancher.com/os/configuration/ SSH の公開鍵登録登録の例 (SSH Keys)
#cloud-config
ssh_authorized_keys:
- ssh-rsa AAA...ZZZ example1@rancher
- ssh-rsa BBB...ZZZ example2@rancher
ファイルを作成する例 (Writing Files)
#cloud-config
write_files:
- path: /etc/rc.local
permissions: "0755"
owner: root
content: |
#!/bin/bash
echo "I'm doing things on start"
コマンド実行の例 (Running Commands)
#cloud-config
runcmd:
- [ touch, /home/rancher/test1 ]
- echo "test" > /home/rancher/test2
その他 IP アドレスやらいろいろ設定できます
ros コマンド
設定変更や OS の upgrade / downgrade ができるようです
$ sudo ros -v
ros version v1.0.0
$ sudo ros help
NAME:
ros - Control and configure RancherOS
USAGE:
ros [global options] command [command options] [arguments...]
VERSION:
v1.0.0
AUTHOR(S):
Rancher Labs, Inc.
COMMANDS:
config, c configure settings
console manage which console container is used
engine manage which Docker engine is used
service, s Command line interface for services and compose.
os operating system upgrade/downgrade
tls setup tls configuration
install install RancherOS to disk
selinux Launch SELinux tools container.
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--help, -h show help
--version, -v print the version
docker コマンドを実行してみる
$ docker run -p 80:80 -d nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
36a46ebd5019: Pull complete
57168433389f: Pull complete
332ec8285c50: Pull complete
Digest: sha256:c15f1fb8fd55c60c72f940a76da76a5fccce2fefa0dd9b17967b9e40b0355316
Status: Downloaded newer image for nginx:latest
ce6cec3a61a7a74c071fab1a11db0f291845cb58863d1e44f3194c50c8526924
これで普通に port 80 で nginx にアクセスできます
docker version
$ docker version
Client:
Version: 17.03.1-ce
API version: 1.27
Go version: go1.7.5
Git commit: c6d412e
Built: Tue Mar 28 00:40:02 2017
OS/Arch: linux/amd64
Server:
Version: 17.03.1-ce
API version: 1.27 (minimum version 1.12)
Go version: go1.7.5
Git commit: c6d412e
Built: Tue Mar 28 00:40:02 2017
OS/Arch: linux/amd64
Experimental: false
Rancher Server を起動してみる
とりあえずお試しなのでこれで LAUNCHING RANCHER SERVER - SINGLE CONTAINER (NON-HA)
$ docker run -d --restart=unless-stopped -p 8080:8080 rancher/server
Unable to find image 'rancher/server:latest' locally
latest: Pulling from rancher/server
6599cadaf950: Pull complete
23eda618d451: Pull complete
(snip)
58bafb65736d: Pull complete
232b8325e66b: Pull complete
Digest: sha256:eeeab5bd80f707e2523c11c7fa437315d56fe97113eed7ad2dc058aa26555db0
Status: Downloaded newer image for rancher/server:latest
1c45fd639bba2d07180786dd6ed95e3e6afb01d84637bf6d3c75db312301d672
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1c45fd639bba rancher/server "/usr/bin/entry /u..." 47 seconds ago Up 46 seconds 3306/tcp, 0.0.0.0:8080->8080/tcp upbeat_elion
起動しました。port 8080 でアクセスできました。 起動してしまえば後は過去記事と同じ
クーポン
インフラ技術を極めろ!クラウドマスター認定試験|teratail(テラテイル) でいただいた 20,000円分のクーポン を使わせていただいております。ありがとうございます。 ちなみにこのブログでも頻繁に登場する DigitalOcean については http://docs.rancher.com/os/running-rancheros/cloud/do/ に「Running RancherOS on DigitalOcean is not yet supported.」と書いてありました。
次回
次回は RancherOS で Kubernetes Environment を作ってみます。