はじめに
今回は,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
いまからやること
ざっくりやることを列挙すると以下です。
-
- 必要となるコンポーネントを取得・インストール
- Docker CE
- Python
- socat
- ICP インストールイメージをロード (docker load)
※ちなみにICP Communityエディションの場合は,「Docker公式からDocker-ceを取得し」,「ICPインストールイメージはDockerHubからibmcom/icp-inception をpullする」方法になります。
(ご参考: 無償版 Kubernetes インストール手順 (ICP CE V3.1.0))
-
- 環境セットアップ
- ssh用key-pair
- $ICP_HOME/cluster/hosts
- $ICP_HOME/cluster/config.yaml
- /etc/hosts
-
- 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
[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
以下の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行追加
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
問題があった場合は, 以下を確認ください
/opt/icp311cn/cluster/install.log
- 既知の問題と対策はこちら ==> Troubleshooting and support
ICP Admin Console (GUI) へのアクセス
ブラウザで, https://xxx.xxx.xxx.xxx:8443
にアクセスしてください。
ログインユーザー名/パスワードは,admin/admin
です。
xxx部は,Admin Console (ダッシュボード) 用に指定した Public IPです。
これらの設定箇所は,/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)」をクリックして進めます。
ユーザー名: admin
パスワード: admin
以下図のようなWelcome画面にたどり着けばOKです。
正常にICPコンソールにログインできました。
カタログから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 login -a https://<IP>:8443 --skip-ssl-validation -u admin -p admin
-
cloudctlのサブコマンド群
まとめ
今回はICPのCloud Native Edition(商用版)を使ってPrivate Kubernetesクラスターをシングル構成(1つのVM)で構築しました。
構築したICPはMulticloud Manager(MCM)として親玉クラスターになることができます。
MCMは,KubernetesでKubernetesを管理することができます。言い換えると,ICPから複数のKuberneresクラスターを統合管理できるようになります。
次回はMCMの導入・構築をしてみたいと思います。