らくがきちょう

なんとなく

RancherOS で Kubernetes 環境を構築する際の cloud-init

RancherOS 上で Kubernetes (以下、k8s) を試す際、Docker Engine のバージョンを予め k8s 互換バージョンに指定しておくと便利です。 その場合、cloud-init の定義例は以下のようになります。 尚、k8s と Docker Engine の互換性については Getting Started with Hosts の SUPPORTED DOCKER VERSIONS に記載されています。

検証環境

検証環境は vSphere 6.0 上で構築しています。 RancherOS は以下の構成で 3 台、構築しました。 rancher/server は rancher-1 でだけ、起動します。

Hostname rancher/server rancher/agent Address
rancher-1 10.0.0.1/24
rancher-2   10.0.0.2/24
rancher-3   10.0.0.3/24

cloud-init

各ホスト用の cloud-init は以下の通りです。

rancher-1

#cloud-config
hostname: rancher-1
ssh_authorized_keys:
  - ssh-rsa PUBLIC-KEY
rancher:
  docker:
    engine: docker-1.12.6
  network:
    dns:
      nameservers:
        - 8.8.8.8
        - 8.8.4.4
    interfaces:
      eth0:
        address: 10.0.0.1/24
        gateway: 10.0.0.254
        mtu: 1500
        dhcp: false
  services:
    server:
      image: rancher/server
      restart: always
      ports:
       - 8080:8080

rancher-2

#cloud-config
hostname: rancher-2
ssh_authorized_keys:
  - ssh-rsa PUBLIC-LEY
rancher:
  docker:
    engine: docker-1.12.6
  network:
    dns:
      nameservers:
        - 8.8.8.8
        - 8.8.4.4
    interfaces:
      eth0:
        address: 10.0.0.2/24
        gateway: 10.0.0.254
        mtu: 1500
        dhcp: false

rancher-3

#cloud-config
hostname: rancher-3
ssh_authorized_keys:
  - ssh-rsa PUBLIC-LEY
rancher:
  docker:
    engine: docker-1.12.6
  network:
    dns:
      nameservers:
        - 8.8.8.8
        - 8.8.4.4
    interfaces:
      eth0:
        address: 10.0.0.3/24
        gateway: 10.0.0.254
        mtu: 1500
        dhcp: false

インストール

cloud-init 用の .yaml を作成する際、手打ちでは厳しいので SSH アクセス出来るように rancher ユーザへパスワードを設定します。

sudo passwd rancher

cloud-init 用のファイルを作成します。 ファイルの内容は前述の通りです。

vim cloud-config.yml

RancherOS をローカルディスクにインストールします。

yes | sudo ros install -c cloud-config.yml -d /dev/sda

k8s を有効化する

rancher-1 で起動する rancher/server が起動完了したら WebUI から k8s を有効化します。 これで作業は完了です。