4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IBM CloudAdvent Calendar 2018

Day 7

プライベートKubernetesクラスターを構築する (商用版 ICP V3.1.1)

Last updated at Posted at 2018-12-26

はじめに

今回は,ICPのCloud Native Edition(商用版)を使ってPrivate Kubernetesクラスターを構築します。
公式マニュアルは以下を参照ください。
Installing IBM Cloud Private Cloud Native, Enterprise, and Community editions

手順はCommunity Edition(CE版,無償版)とほとんど変わりません。単純です。
過去のバージョンのICP CE導入手順のリンクは以下です。

(ご参考)
V2.1.0: IBM Cloud Private: Kubernetesをオンプレミス(IaaS)に導入してみる
V3.1.0: 無償版 Kubernetes インストール手順 (ICP CE V3.1.0)

事前に準備するもの

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

    • OS: Ubuntu Server 16.04 LTS
    • vCPU: 16core
    • Memory: 32GB
    • Disk: 100GB HDD
  • ICPインストールイメージ(Docker imageを固めたtarball)

    • ファイル名: ibm-cloud-private-x86_64-3.1.1.tar.gz
  • Dockerインストール用のバイナリ(ICPに付属)

    • ファイル名: icp-docker-18.03.1_x86_64.bin

いまからやること

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

    1. 必要となるコンポーネントを取得・インストール
    • Docker CE
    • Python
    • socat
    • ICP インストールイメージをロード (docker load)

※ちなみにICP Communityエディションの場合は,「Docker公式からDocker-ceを取得し」,「ICPインストールイメージはDockerHubからibmcom/icp-inception をpullする」方法になります。
(ご参考: 無償版 Kubernetes インストール手順 (ICP CE V3.1.0))

    1. 環境セットアップ
    • ssh用key-pair
    • $ICP_HOME/cluster/hosts
    • $ICP_HOME/cluster/config.yaml
    • /etc/hosts
    1. ICP Kubernetes クラスターを構築
    • docker run xxx

ICP Cloud NativeエディションでK8sクラスターを構築する

以下の2つのファイルの場所を確認します。

  • /root/xxx
    • ibm-cloud-private-x86_64-3.1.1.tar.gz
    • icp-docker-18.03.1_x86_64.bin

※本手順では以下のように配置しています。

# pwd
/root
# ls
ibm-cloud-private-x86_64-3.1.1.tar.gz  icp-docker-18.03.1_x86_64.bin

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

Docker CE (V 18.03.1)

# cd /root
# icp-docker-18.03.1_x86_64.bin --install
# systemctl start docker
# sed -i.bak s/max-size=50m/max-size=10m/ /lib/systemd/system/docker.service
# systemctl daemon-reload
# systemctl restart docker
# docker version

参考: Supported Docker versions
参考: マニュアル操作でのDockerインストール

Python (V 2.7.12)

# apt update
# apt install -y python-minimal

socat (V 1.7.3.1)

# apt install -y socat

ICP インストールイメージをロード (V 3.1.1)

# cd /root
# tar xf ibm-cloud-private-x86_64-3.1.1.tar.gz -O | docker load
※含まれるDockerイメージが多いので,完了までに10分ほどかかります

ICPのtarballに含まれていたDockerイメージを確認してみます。

# docker images
REPOSITORY                                      TAG                            IMAGE ID            CREATED             SIZE
ibmcom/icp-inception-amd64                      3.1.1-ee                       5f449d4b46ac        6 weeks ago         756MB
ibmcom/metering-ui-amd64                        3.1.1                          c8e57d4adb2a        6 weeks ago         347MB
ibmcom/icp-platform-ui-amd64                    3.1.1                          16510e158d9e        6 weeks ago         208MB
ibmcom/logstash-liveness-probe-amd64            1.0.1                          0d0b8a19d4c6        6 weeks ago         70.8MB
ibmcom/icp-catalog-ui-amd64                     3.1.1                          b6398c11b0df        6 weeks ago         293MB
ibmcom/icp-management-ingress-amd64             2.2.2-fips                     7185dec11e95        6 weeks ago         429MB
ibmcom/icp-management-ingress-amd64             2.2.2                          d57f3f9a4a67        6 weeks ago         80.3MB
ibmcom/icp-image-manager-amd64                  2.2.4                          f393627fa629        7 weeks ago         151MB
ibmcom/process-ma-hf-amd64                      3.1.1                          f3b84ac1ffb1        7 weeks ago         664MB
ibmcom/icp-helm-api-amd64                       3.1.1                          a4651c03eb3b        7 weeks ago         112MB
ibmcom/tiller-amd64                             v2.9.1-icp-3.1.1               eeec193da005        7 weeks ago         60.1MB
ibmcom/icp-web-terminal-amd64                   3.1.1                          2b8e18aaf3d0        7 weeks ago         724MB
ibmcom/registry-amd64                           2.6.2.2                        3e1a48422d6b        7 weeks ago         158MB
ibmcom/kms-api-amd64                            3.1.1                          73a1d3c36f58        7 weeks ago         31.7MB
ibmcom/kms-oss-amd64                            3.1.1                          2d0d0c799b94        7 weeks ago         40.6MB
ibmcom/kms-onboarding-amd64                     3.1.1                          50e9b6d6acf2        7 weeks ago         911MB
ibmcom/kms-lifecycle-amd64                      3.1.1                          2194bd622580        7 weeks ago         33.9MB
ibmcom/kms-softhsm-amd64                        3.1.1                          796e1a1bef26        7 weeks ago         2.26GB
ibmcom/kms-gemaltov6-amd64                      3.1.1                          31e7eb820ecf        7 weeks ago         1.3GB
ibmcom/kms-pep-amd64                            3.1.1                          382f04d66b8a        7 weeks ago         32.3MB
ibmcom/kms-crypto-amd64                         3.1.1                          a222db4b58dd        7 weeks ago         33MB
ibmcom/kms-persistence-amd64                    3.1.1                          b853b45c9faf        7 weeks ago         37.8MB
ibmcom/indices-cleaner-amd64                    1.1.0                          4c95286d5308        7 weeks ago         241MB
ibmcom/icp-platform-api-amd64                   3.1.1                          88ec2522bacc        7 weeks ago         864MB
ibmcom/rootkit-annotator-amd64                  3.1.1                          040a36b9586b        7 weeks ago         496MB
ibmcom/ma-file-annotator-amd64                  3.1.1                          826429327a82        7 weeks ago         647MB
ibmcom/sas-base-amd64                           3.1.1                          f5c5ffc1f3a7        7 weeks ago         647MB
ibmcom/iam-policy-decision-amd64                3.1.1                          5a7e7a8abb4b        7 weeks ago         675MB
ibmcom/icp-identity-manager-amd64               3.1.1                          6758a11d0b96        7 weeks ago         136MB
ibmcom/iam-policy-administration-amd64          3.1.1                          3a0142faf1b3        7 weeks ago         723MB
ibmcom/icp-identity-provider-amd64              3.1.1                          f7e5c8c8edea        7 weeks ago         219MB
ibmcom/icp-helm-repo-amd64                      3.1.1                          e46f3ca15ff3        7 weeks ago         176MB
ibmcom/icp-platform-deploy-amd64                3.1.1                          7dfed19c1495        7 weeks ago         146MB
ibmcom/reg-crawler-amd64                        3.1.1                          7b5ad501e08d        8 weeks ago         994MB
ibmcom/live-crawler-amd64                       3.1.1                          08c65d5be903        8 weeks ago         968MB
ibmcom/kmsplugin-amd64                          3.1.1                          238be23908df        8 weeks ago         26.5MB
ibmcom/icp-helm-rudder-amd64                    3.1.1                          8a609dd5d35e        2 months ago        28.9MB
ibmcom/searchguard-init-amd64                   2.0.1                          1c32181a399c        2 months ago        422MB
ibmcom/icp-platform-auth-amd64                  3.1.1                          493b365fcc13        2 months ago        1.03GB
ibmcom/metering-data-manager-amd64              3.1.1                          f5bfe811231e        2 months ago        119MB
ibmcom/icp-mongodb-install-amd64                3.1.1                          4e80148a4112        2 months ago        19.9MB
ibmcom/secure-config-annotator-amd64            3.1.1                          352a4ebc147e        2 months ago        740MB
ibmcom/password-annotator-amd64                 3.1.1                          80e2883e26a6        2 months ago        613MB
ibmcom/compliance-annotator-amd64               3.1.1                          97c28facacfc        2 months ago        679MB
ibmcom/vulnerability-annotator-amd64            3.1.1                          0ef0105e4076        2 months ago        662MB
ibmcom/config-parser-amd64                      3.1.1                          9d49ce425ae4        2 months ago        644MB
ibmcom/py-generic-indexer-amd64                 3.1.1                          8d56ae0e2c3d        2 months ago        661MB
ibmcom/kiali-amd64                              v0.8                           f5f73c150d96        2 months ago        322MB
ibmcom/istio-grafana-amd64                      1.0.2                          1b7dabcd112b        2 months ago        247MB
ibmcom/usncrawler-amd64                         3.1.1                          c6145b8b5c94        2 months ago        164MB
ibmcom/icp-cert-manager-controller-amd64        0.5.0                          339e4933c811        2 months ago        52.1MB
ibmcom/icp-audit-service-amd64                  3.1.1                          769824455743        2 months ago        217MB
ibmcom/nvidia-device-plugin-amd64               1.1                            8ceb019c50da        2 months ago        174MB
ibmcom/nginx-ingress-controller-amd64           0.19.0-fips                    540eb0d9e538        2 months ago        399MB
ibmcom/iam-token-service-amd64                  3.1.1                          6fe9e498b87f        2 months ago        1.03GB
ibmcom/heapster-amd64                           v1.4.0.2                       1bd02d54f8dc        2 months ago        73.4MB
ibmcom/etcd-amd64                               3.2.24                         33bdcac177c2        2 months ago        220MB
ibmcom/unified-router-amd64                     3.1.1.0                        3b305285d93b        2 months ago        47.7MB
ibmcom/logging-pki-init-amd64                   2.1.0                          53825a8ba455        2 months ago        549MB
ibmcom/icp-mongodb-amd64                        4.0                            052ca8f03af8        2 months ago        381MB
ibmcom/cos-indexer-amd64                        3.1.1                          1b53223776d9        2 months ago        849MB
ibmcom/notification-dispatcher-amd64            3.1.1                          5cef91d55449        2 months ago        613MB
ibmcom/kubectl-amd64                            v1.11.3                        86649dbcf7a6        2 months ago        65.4MB
ibmcom/icp-mariadb-galera-amd64                 10.2.17                        3e6a173a7dfe        3 months ago        366MB
ibmcom/hyperkube-amd64                          v1.11.3-ee                     4c7c25836910        3 months ago        766MB
ibmcom/jaegertracing-all-in-one-amd64           1.7                            7ad5d345bd8a        3 months ago        42.5MB
ibmcom/heketi-amd64                             v8.0.0                         35397c263071        3 months ago        386MB
ibmcom/icp-secret-watcher-amd64                 3.1.1                          614bcbe9af13        3 months ago        34MB
ibmcom/istio-galley-amd64                       1.0.2                          b8cfc0e19a91        3 months ago        65.8MB
ibmcom/istio-citadel-amd64                      1.0.2                          ca4050c9fed3        3 months ago        50.7MB
ibmcom/istio-mixer-amd64                        1.0.2                          d559bdcd7a88        3 months ago        64.5MB
ibmcom/istio-servicegraph-amd64                 1.0.2                          c36167d0817c        3 months ago        11.2MB
ibmcom/istio-sidecar_injector-amd64             1.0.2                          77e6870301bb        3 months ago        45.3MB
ibmcom/istio-proxy_init-amd64                   1.0.2                          4cd353237d97        3 months ago        119MB
ibmcom/istio-proxyv2-amd64                      1.0.2                          50d4ec2a16fd        3 months ago        371MB
ibmcom/istio-pilot-amd64                        1.0.2                          3be7ec27d893        3 months ago        308MB
ibmcom/nginx-ingress-controller-amd64           0.19.0                         22ebbdddfabb        3 months ago        414MB
ibmcom/icp-vip-manager-amd64                    1.1                            a947d99712bc        3 months ago        23.6MB
ibmcom/icp-filebeat-amd64                       5.5.1                          613b89b52d0e        3 months ago        317MB
ibmcom/elasticsearch-plugin-searchguard-amd64   2.0.0                          21d1ecbe3313        3 months ago        268MB
ibmcom/icp-cert-gen-amd64                       1.0.1                          b485ac4fc475        3 months ago        79.4MB
ibmcom/service-catalog-service-catalog-amd64    v0.1.26-icp                    c3491fd85080        4 months ago        42.9MB
ibmcom/fluentd-amd64                            v1.2.2-icp                     028b467966ea        4 months ago        271MB
ibmcom/keepalived-amd64                         1.2.24                         afe8d43fd5cf        4 months ago        4.75MB
ibmcom/ucarp-amd64                              1.5.2                          9e92ac65e1fe        4 months ago        7.84MB
ibmcom/icp-storage-util-amd64                   3.1.0                          daf7a2bf9633        4 months ago        107MB
ibmcom/kafka-amd64                              0.10.0.2                       9a25e74cf765        4 months ago        1.11GB
ibmcom/coredns-amd64                            1.1.3                          217172bd0cc4        4 months ago        57.7MB
ibmcom/statsd-amd64                             0.7.2.1                        63abfe933c79        4 months ago        1.23GB
ibmcom/k8szk-amd64                              v3                             402ce6a27d02        4 months ago        331MB
ibmcom/mariadb-amd64                            10.2.17                        90fb8735aa60        4 months ago        359MB
ibmcom/minio-amd64                              RELEASE.2018-08-21T00-37-20Z   0578ca7aaf7e        4 months ago        35.2MB
ibmcom/icp-logstash-amd64                       5.5.1                          5006d7351c98        4 months ago        765MB
ibmcom/icp-elasticsearch-amd64                  5.5.1                          2aae72cc0e40        4 months ago        520MB
ibmcom/icp-kibana-amd64                         5.5.1                          11b764acab43        4 months ago        640MB
ibmcom/curl-amd64                               4.0.0                          66ad84b60d03        4 months ago        221MB
ibmcom/ibmcloud-image-enforcement-amd64         0.2.0                          ad6aaf52dd24        4 months ago        40MB
ibmcom/minio-mc-amd64                           RELEASE.2018-07-13T00-53-22Z   ee62869f5c8d        5 months ago        14.2MB
ibmcom/icp-helm-repo-init-amd64                 3.1.1                          ca148a52ea10        5 months ago        68.1MB
ibmcom/grafana-amd64                            5.2.0                          f234a1b7db94        6 months ago        245MB
ibmcom/cert-manager-amd64                       v0.3.1                         b8418de4aa2e        6 months ago        51.8MB
ibmcom/alertmanager-amd64                       v0.15.0                        24ad3756845c        6 months ago        36.1MB
ibmcom/prometheus-amd64                         v2.3.1                         b82ef1f3aa07        6 months ago        119MB
ibmcom/gluster-amd64                            v4.0.2                         20f7e4a5b31d        6 months ago        324MB
ibmcom/calico-node-amd64                        v3.1.3                         7eca10056c8e        6 months ago        248MB
ibmcom/calico-kube-controllers-amd64            v3.1.3                         240a82836573        6 months ago        55MB
ibmcom/calico-cni-amd64                         v3.1.3                         9f355e076ea7        6 months ago        68.8MB
ibmcom/node-exporter-amd64                      v0.16.0                        188af75e2de0        7 months ago        22.9MB
ibmcom/k8s-prometheus-adapter-amd64             v0.2.1.1                       4a3ba29699fa        8 months ago        52.1MB
ibmcom/kube-state-metrics-amd64                 v1.3.0                         62a2d8cf4b55        8 months ago        35.6MB
ibmcom/configmap-reload-amd64                   v0.2.2                         7a344aad0fdb        11 months ago       22.4MB
ibmcom/collectd-exporter-amd64                  v0.4.0                         98678887c9cb        11 months ago       13.7MB
ibmcom/prom-statsd-exporter-amd64               v0.6.0                         304735eab4e4        11 months ago       14.1MB
ibmcom/icp-initcontainer-amd64                  1.0.0                          77144d8c6bdc        11 months ago       3.97MB
ibmcom/elasticsearch-exporter-amd64             1.0.2                          d767dc6ccfb2        11 months ago       9.2MB
ibmcom/pause-amd64                              3.1                            da86e6ba6ca1        12 months ago       742kB
ibmcom/metrics-server-amd64                     v0.2.1.1                       9801395070f3        12 months ago       42.5MB
ibmcom/defaultbackend-amd64                     1.4                            846921f0fe0e        14 months ago       4.84MB

2) 環境のセットアップ

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

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

  • ICPクラスターを構成・管理するための任意ディレクトリを作成
  • ICPクラスター作成用の構成ファイル群を抽出
  • ICPインストールイメージを移動
  • 構成ファイル群を確認
ICPクラスターを構成・管理するための任意ディレクトリを作成
# mkdir /opt/icp311cn
# cd /opt/icp311cn

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

ICPインストールイメージを移動
# mkdir /opt/icp311cn/cluster/images
# mv /root/ibm-cloud-private-x86_64-3.1.1.tar.gz /opt/icp311cn/cluster/images/

構成ファイル群を確認
# cd /opt/icp311cn/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/icp311cn/cluster/ssh_key

参考: Sharing SSH keys among cluster nodes

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

ICP Kubernetesクラスターを構成するNode群で疎通できる Private IP (今回は 10.87.98.162)を指定します。
シングル構成なので,master/worker/proxyの役割を1VMで担う構成をとります。

# vi /opt/icp311cn/cluster/hosts
/opt/icp311cn/cluster/hosts
[master]
10.87.98.162

[worker]
10.87.98.162

[proxy]
10.87.98.162

#[management]
#4.4.4.4

#[va]
#5.5.5.5

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

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

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

# vi /opt/icp311cn/cluster/config.yaml
/opt/icp311cn/cluster/config.yaml
以下の2つの項目を見つけて,コメントアウトを外して,IPアドレスを指定する

before:

# cluster_lb_address: none
# proxy_lb_address: none

after:

cluster_lb_address: 169.62.99.167
proxy_lb_address: 169.62.99.167

/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-cn311.capsmalt.com      k8s-icp-cn311
10.87.98.162    k8s-icp-cn311

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

最後に docker run でICP Kubernetesクラスターを構築します。
クラスター完成には30分ほど要します。(今回は37分かかりました)

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

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

..
PLAY RECAP *********************************************************************
169.62.99.167              : ok=221  changed=143  unreachable=0    failed=0
localhost                  : ok=248  changed=155  unreachable=0    failed=0


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

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

Playbook run took 0 days, 0 hours, 37 minutes, 23 seconds

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

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

ブラウザで, https://xxx.xxx.xxx.xxx:8443 にアクセスしてください。
ログインユーザー名/パスワードは,admin/adminです。
xxx部は,Admin Console (ダッシュボード) 用に指定した Public IPです。

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

/opt/icp311cn/cluster/config.yaml
・・
default_admin_user: admin # <== ログインユーザー名
default_admin_password: admin # <== ログインパスワード
・・
cluster_lb_address: 169.62.99.167 # <== Admin Console の IPアドレス
・・

アクセス例:
https://169.62.99.167:8443

以下のような画面が表示されたら「Advanced」 > 「Proceed to xx.xx.xx.xx (unsafe)」をクリックして進めます。
image.png
image.png

ユーザー名: admin
パスワード: admin

image.png

以下図のようなWelcome画面にたどり着けばOKです。
正常にICPコンソールにログインできました。
image.png

カタログからHelm Chartを使って,ICP(K8s)上にコンテナアプリをデプロイしたり,プラットフォームメニューからPrometheusを使用したモニタリングなどを確認したり,色々と試してみてください。

基本的にはKubernetesクラスターをすぐに使用開始できるようにビルトインであらゆる機能が揃っています。例えば,JenkinsをベースにしたCI/CDコンポーネント(Microclimate)など追加機能はHelmChartから簡単に導入・構成ができます。

CLI系

ICPのインストールが完了すると kubectl などの標準的なCLIもICP(K8s)バージョンにマッチしたCLIが最初から導入されています。

  • kubectl
  • helm
  • istioctl

さらにいくつかの便利なCLIが用意されています。
※もちろんICP用のCLIは全く使わずに kubectlだけでK8sランタイムとして使うことも可能です。

CLIに関するマニュアルのリンクをリストします。

  • cloudctl

    • 最も基本となる親コマンド
    • 例) cloudctl login -a https://<IP>:8443 --skip-ssl-validation -u admin -p admin
  • cloudctlのサブコマンド群

    • iam
      • ID/Tokenなど認証情報管理
    • catalog
      • Helm Chart カタログ管理
    • cm
      • クラスター管理
    • pm
      • パスワード管理

まとめ

今回はICPのCloud Native Edition(商用版)を使ってPrivate Kubernetesクラスターをシングル構成(1つのVM)で構築しました。

構築したICPはMulticloud Manager(MCM)として親玉クラスターになることができます。
MCMは,KubernetesでKubernetesを管理することができます。言い換えると,ICPから複数のKuberneresクラスターを統合管理できるようになります。

次回はMCMの導入・構築をしてみたいと思います。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?