kubernetes
container
ibmcloudprivate

無償版 Kubernetes インストール手順 (ICP CE V3.1.0)


はじめに

2018年9月にV3.1.0がリリースされたので,無償版(Community Edition)をシングル構成でインストールしてみます。

本記事は2018年10月17日執筆時点のものです。公式マニュアルは以下を参照ください。


参考: Installing IBM® Cloud Private-CE

参考: ICP CloudNative Edition(有償ライセンス版) システム要件


ICPの概要について興味のある方は,以下も合わせて参照ください。


2017年12月投稿記事: IBM Cloud Private: Kubernetesをオンプレミス(IaaS)に導入してみる



事前に準備するもの


  • Kubernetesクラスターを構成するインスタンス (VM1つ) を用意


    • OS: Ubuntu Server 16.04 LTS

    • vCPU: 16core

    • Memory: 32GB

    • Disk: 100GB HDD



※今回は開発用途無償版を使用します


いまからやること

ざっくりやることを列挙すると以下です。


  • 1) 必要となるコンポーネントを取得・インストール


    • Docker CE

    • Python

    • socat

    • ICP CE (インストール用のDockerイメージ)



  • 2) 環境セットアップ


    • ssh用key-pair

    • $ICP_HOME/cluster/hosts

    • $ICP_HOME/cluster/config.yaml

    • /etc/hosts



  • 3) ICP Kubernetes クラスターを構築


    • docker run xxx




[本編]ICP CE インストール手順


1) 必要となるコンポーネントを取得・インストール


Docker CE (V 18.03.1)

# apt-get update

# apt-get install apt-transport-https ca-certificates curl software-properties-common
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu (lsb_release -cs) stable"
# apt-get update
# apt-cache madison docker-ce
# apt-get install docker-ce=18.03.1~ce-0~ubuntu
# docker version

参考: Supported Docker versions


Python (V 2.7.12)

# apt install python-minimal

# python --version


socat (V 1.7.3.1)

# apt install socat


ICP インストールイメージを取得 (V 3.1.0)

ICP(K8s)を構築するためのインストールイメージ(約800MB)をDockerHubから取得します。

# docker pull ibmcom/icp-inception:3.1.0

# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ibmcom/icp-inception 3.1.0 cb1028c2975c 5 days ago 746MB


2) 環境のセットアップ


ICP用の構成ファイルを抽出

以下3つの手順を実行します。


  • ICPクラスターを構成・管理するための任意ディレクトリを作成

  • ICPクラスター作成用の構成ファイル群を抽出

  • 構成ファイル群を確認

ICPクラスターを構成・管理するための任意ディレクトリを作成

# mkdir /opt/icp310ce
# cd /opt/icp310ce

ICPクラスター作成用の構成ファイル群を抽出
# docker run -e LICENSE=accept -v "$(pwd)":/data ibmcom/icp-inception:3.1.0 cp -r cluster /data

構成ファイル群を確認
# cd /opt/icp310ce/cluster
# ls
config.yaml hosts misc ssh_key


Ansibleのssh用にkey-pairを作成,配備

ICPを自動構築するためのAnsible用のPlaybookがあります。今回はAnsible用にkey-pairを用意しますが,key-pairの代わりにパスワードを使用させることも可能です。

# ssh-keygen -b 4096 -f ~/.ssh/id_rsa -N ""

# cat ~/.ssh/id_rsa.pub | tee -a ~/.ssh/authorized_keys
# cp ~/.ssh/id_rsa /opt/icp310ce/cluster/ssh_key

参考: Sharing SSH keys among cluster nodes


ICPを構成するNode(Private IPアドレス)を指定

ICP Kubernetesクラスターを構成するNode群で疎通できる Private IP (今回は 10.132.75.86)を指定します。

シングル構成なので,master/worker/proxyの役割を1VMで担う構成をとります。

# vi /opt/icp310ce/cluster/hosts


/opt/icp310ce/cluster/hosts

[master]

10.132.75.86

[worker]
10.132.75.86

[proxy]
10.132.75.86

#[management]
#4.4.4.4

#[va]
#5.5.5.5


※management/vaノードは使用しないのでコメントアウトのまま


ICPのAdmin Console (ダッシュボード) 用の Public IP を指定

Admin Consoleに外部からアクセスするための Public IP (今回は 169.56.42.72) を指定します。

# vi /opt/icp310ce/cluster/config.yaml


/opt/icp310ce/cluster/config.yaml

以下の2つの項目を見つけて,コメントアウトを外して,IPアドレスを指定する

before:

# cluster_lb_address: none
# proxy_lb_address: none

after:

cluster_lb_address: 169.56.42.72
proxy_lb_address: 169.56.42.72



/etc/hostsの編集

# vi /etc/hosts


  • ループバックアドレスをコメントアウト

  • IPアドレス,ホスト名を1行追加


/etc/hosts

127.0.0.1       localhost

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
# 127.0.1.1 k8s-icp-ce310.capsmalt.com k8s-icp-ce310
10.132.75.86 k8s-icp-ce310



3) ICP Kubernetesクラスターを構築

最後に docker run でICP Kubernetesクラスターを構築します。

クラスター完成には15〜30分ほど要します。

# cd /opt/icp310ce/cluster

# docker run --net=host -t -e LICENSE=accept -v "$(pwd)":/installer/cluster ibmcom/icp-inception:3.1.0 install -vvv | tee install.log

以下のような出力が確認できればOKです。

..

PLAY RECAP *********************************************************************
10.132.75.86 : ok=174 changed=97 unreachable=0 failed=0
localhost : ok=265 changed=161 unreachable=0 failed=0

POST DEPLOY MESSAGE ************************************************************

The Dashboard URL: https://169.56.42.72:8443, default username/password is admin/admin

Playbook run took 0 days, 0 hours, 31 minutes, 46 seconds

問題があった場合は, 以下を確認ください

- /opt/icp310ce/cluster/install.log

- 既知の問題と対策はこちら ==> Troubleshooting and support


ICP Admin Console (GUI) へのアクセス

ブラウザで, https://xxx.xxx.xxx.xxx:8443 にアクセスしてください。

ログインユーザー名/パスワードは,admin/adminです。

xxx部は,Admin Console (ダッシュボード) 用に指定した Public IPです。

これらの設定箇所は,/opt/icp310ce/cluster/config.yamlにあります。


/opt/icp310ce/cluster/config.yaml

・・

default_admin_user: admin # <== ログインユーザー名
default_admin_password: admin # <== ログインパスワード
・・
cluster_lb_address: 169.56.42.72 # <== Admin Console の IPアドレス
・・

アクセス例:

https://169.56.42.72:8443

image.png

※例外追加を必要とする旨の画面が出たら,下図のように「エラー内容 > 例外を追加... > セキュリティ例外を承認」 のように進めてください。

image.png

image.png


まとめ

今回は2018年9月にリリースされた ICP V3.1.0の無償版(Community Edition, CE)をシングル構成でインストールしてみました。

一部は無償版(CE)では試すことができませんが,Kubernetesを利用する上で必要になる機能群がビルトインされていたり,HelmChartで容易に導入できるようになっています。

ぜひ試してみてください。


  • すぐに利用できる機能一覧(一部抜粋)


    • モニタリング機能 (Prometheus,Grafana,AlertManager)

    • ロギング機能 (Elastic Stack)

    • CI/CD機能 (JenkinsベースのCI/CDおよび開発ツール)

    • HelmChart カタログ機能

    • 脆弱性スキャン機能 ※CEでは使用不可

    • K8sクラスターの自動構築,拡張機能

    • (New) 複数K8sクラスター管理機能 ※CEでは使用不可

    • (New) Istio V1.0 組込み ※Tech Preview