RancherOS による Kubernetes クラスタの構築
[最終更新] (2019/06/03 00:27:25)
最近の投稿
注目の記事

概要

こちらのページに記載した Kubernetes クラスタを RancherOS で構築する場合の設定例を記載します。

インストール

ISO ファイルをダウンロードして起動すると ros コマンドが利用できるコンソールに入ります。インストール可能なバージョン一覧はコンソール上で以下のコマンドによって確認できます。

sudo ros os list

cloud-config.yml を用意します。

hostname: myrancher

以下のようなコマンドでパスワードおよびディスク等を指定してインストールします。バージョンを指定 -i しない場合はダウンロードした ISO と同じバージョンがインストールされます。

sudo ros install -i rancher/os:v1.4.2 -c cloud-config.yml -d /dev/sda --append 'rancher.password=mypass123'

ディスクからブートすると rancher ユーザと指定したパスワードでログインできます。SSH も可能です。

ssh rancher@192.168.56.13

cloud-config.yml で設定した内容は以下の場所に保存されています。

[rancher@myrancher ~]$ sudo ls /var/lib/rancher/conf/
cloud-config.d    cloud-config.yml

これをコマンドで更新する場合は以下のようにできます。再起動すると反映されます。

sudo ros config set rancher.network.interfaces.eth1.address 192.168.56.13/24
sudo ros config set rancher.network.interfaces.eth1.dhcp false

RancherOS ではシステム用とユーザ用で docker が分かれており、それぞれ以下のコマンドで確認できます。

sudo system-docker ps
docker ps

RancherOS インストール後の設定変更

現在の設定を YAML 形式で確認

sudo ros config export

個別に変更する場合 (再起動すると反映されます)

sudo ros config set rancher.network.dns.nameservers "['8.8.8.8','8.8.4.4']"
sudo ros config get rancher.network.dns.nameservers

cloud-config.yml で変更する場合 (再起動すると反映されます)

rancher:
  network:
    dns:
      nameservers:
      - 8.8.8.8
      - 8.8.4.4

sudo ros config validate -i cloud-config.yml
sudo ros config merge -i cloud-config.yml

RancherOS 起動時に実行したいコマンドの設定

/opt/rancher/bin/start.sh または /etc/rc.local にコマンドを記載しておくことで、RancherOS 起動時に実行できます。

Runs /opt/rancher/bin/start.sh if it exists and is executable. Any errors are ignored.
Runs /etc/rc.local if it exists and is executable. Any errors are ignored.
https://rancher.com/docs/os/v1.x/en/installation/boot-process/built-in-system-services/#console

sudo mkdir -p /opt/rancher/bin
echo 'echo hello > /tmp/hello.txt' | sudo tee -a /opt/rancher/bin/start.sh
sudo chmod 755 /opt/rancher/bin/start.sh

cloud-config.yml で以下のように設定することもできます。

write_files:
- path: /etc/rc.local
  permissions: "0755"
  owner: root
  content: |
    #!/bin/bash
    echo hello > /tmp/hello.txt

ファイルを作成せずに直接 YAML でコマンドを設定することもできます。ただし runcmd 内で docker コマンドは利用できません/etc/rc.local 内で wait-for-docker を利用するか、あるいは rancher.services に設定を追加する必要があります。

runcmd:
- [ touch, /tmp/test1 ]
- echo 'test' > /tmp/test2

例えば /etc/hosts を編集したい場合は以下のようにできます。

runcmd:
- if ! grep xxx.example.com /etc/hosts; then echo '127.0.0.1 xxx.example.com' >> /etc/hosts; fi
- if ! grep yyy.example.com /etc/hosts; then echo '127.0.0.1 yyy.example.com' >> /etc/hosts; fi

cloud-config.yml 設定

ネットワーク関連

固定 IP

sudo ros config set rancher.network.interfaces.eth1.address 192.168.56.13/24
#sudo ros config set rancher.network.interfaces.eth1.gateway 192.168.56.1
sudo ros config set rancher.network.interfaces.eth1.dhcp false

DNS

sudo ros config set rancher.network.dns.search "['mydomain.com']"
sudo ros config set rancher.network.dns.nameservers "['8.8.8.8','8.8.4.4']"

環境変数

rancher.services で管理される docker コンテナを起動する際の環境変数は cloud-config.yml で設定できます。RancherOS ではコンソールもコンテナであるため、以下のようにタイムゾーンを UTC から JST に変更できます。

sudo ros config set rancher.services.console.environment.TZ 'JST-9'

コンソールからコンテナを起動する際は別途 TZ を指定する必要があります。

docker run -it --rm -e 'TZ=JST-9' nginx /bin/bash

Rancher サービス

この続きが気になる方は

RancherOS による Kubernetes クラスタの構築

残り文字数は全体の約 24 %
tybot
100 円
関連ページ
    概要 こちらのページで設定した k8s クラスタの各 Node マシンに GlusterFS サーバのコンテナを一つだけ起動して、簡単な分散ファイルシステムを構築します。各 Node へのコンテナ設置のためには DaemonSet が利用できそうですが、ここでは RancherOS の rancher.services
    概要 GitLab CI/CD について使い方を把握してみます。 検証用 GitLab の準備 簡単のため docker イメージを利用します。マウントしたディレクトリは、Docker エントリーポイントから実行される Chef によってプロビジョニングされます。 docker run \ --hostname localhost \ --publish 10443:443 --publis
    概要 RancherOS 等、docker が使える何らかの OS で Rancher によって構築した kubernetes クラスタのアップグレードを行うためには、以下のようにします。 v2.1.5 の Rancher で構築した k8s クラスタに存在する脆弱性 CVE-2019-11253 への対応がなされた