モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

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

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2018/12/22
最終更新最終更新
2021/09/07
記事区分記事区分
一般公開

目次

    仕事では Kubernetesの運用を中心に、GitLabとの連携も担当するインフラエンジニア。

    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 サービス

    Docker Composeフォーマットで、RancherOS 起動時に run するコンテナを指定できます。データを永続化させるためには rancher.services.user-volumes.volumesコンテナで利用するディレクトリを指定する必要があることに注意します。Rancher のサーバ側とそれに接続するエージェントを同じホストで起動する設定は、docker run を YAML に変換して以下のようになります。実際にはクラスタを作成してからでないと token 等が得られないため、二回に分けて ros config merge して適用する必要があります。

    rancher:
      services:
        user-volumes:
          volumes:
          - /home:/home
          - /opt:/opt
          - /var/lib/kubelet:/var/lib/kubelet
          - /host/rancher:/host/rancher
          - /etc/kubernetes:/etc/kubernetes
        rancher-stable:
          image: rancher/rancher:stable
          restart: unless-stopped
          volumes:
          - /host/rancher:/var/lib/rancher
          ports:
          - 8080:80
          - 8443:443
        rancher-agent-v2-1-3:
          image: rancher/rancher-agent:v2.1.3
          restart: unless-stopped
          volumes:
          - /etc/kubernetes:/etc/kubernetes
          - /var/run:/var/run
          privileged: true
          net: host
          command: --server https://192.168.56.13:8443 --token fsfhj6nbn2q9kclz2b74wgjblsh46fsn67f4s4gdbcznk8txtnlfzv --ca-checksum 2729d7f698866e3396f41e0848d45f6ff4705a803d0b9866977270e65b008571 --etcd --controlplane --worker
    

    [rancher@myrancher ~]$ sudo system-docker inspect user-volumes | jq '.[0].HostConfig.Binds'
    [
      "/etc/kubernetes:/etc/kubernetes",
      "/home:/home",
      "/host/rancher:/host/rancher",
      "/opt:/opt",
      "/var/lib/kubelet:/var/lib/kubelet"
    ]
    
    Likeボタン(off)0
    詳細設定を開く/閉じる
    アカウント プロフィール画像

    仕事では Kubernetesの運用を中心に、GitLabとの連携も担当するインフラエンジニア。

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    >>さらに詳しくステッカーを贈る
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      ログインする

      関連記事