TIA in the Digital Enterprise - assets.new.siemens.com · 最新バージョン以外で編集が必要な場合は、バージョン毎にインストールをお願いします。
で管理できるAIXコンテナー...© 2019 IBM Corporation •ICPの前提バージョン –...
Transcript of で管理できるAIXコンテナー...© 2019 IBM Corporation •ICPの前提バージョン –...
ICPで管理できるAIXコンテナー〜導⼊編〜
2019年05⽉17⽇
⽇本アイ・ビー・エム株式会社 Power Systems テクニカル・セールス
⽇本アイ・ビー・エムシステムズ・エンジニアリング株式会社
© 2019 IBM Corporation© 2019 IBM Corporation
AIXでもコンテナー技術を利⽤できますLinuxと同じように、OSからミドルウェアまでパッケージ化可能
2
AIXでもコンテナー利⽤
������
I
������
IBM Cloud PrivateIBM Cloud Private
A
����
CE CE
L I
E
C
© 2019 IBM Corporation© 2019 IBM Corporation
• AIXノードをICPのWorkerノードとして登録可能• AIXコンテナーはWorkload Partition (WPAR) を使⽤して実装
3
AIXコンテナー概要
– WPARはAIX6.1で実装されたAIXのコンテナー技術– AIXコンテナーではWPARとICPとを連携するサービスを導⼊してICPからAIXノードを管理
• AIXコンテナーはShared WPARで実装– /usr, /optはグローバル環境を読み取り専⽤でマウント– 必要なファイルセットはグローバル環境にインストール
• AIXコンテナーの稼働条件– AIXコンテナーは作成されたAIXと同じレベルのノードでのみデプロイ可能
• AIXの前提条件– AIX7.2 TL3以降– メモリ︓8GB以上を推奨, /var︓50GB以上の空き領域を推奨
© 2019 IBM Corporation© 2019 IBM Corporation
• ICPの前提バージョン– v3.1.2 or v2.1.0.3
• 本資料には、バージョン別のインストール⽅法を記載しています• ICPのネットワーク・タイプ
– AIXコンテナーを使⽤する場合、選択できるネットワーク・タイプはcalicoのみ• ICPのIPsec設定
– AIXコンテナーを使⽤する場合、ICPのIPsec設定は無効化すること
4
IBM Cloud Privateの前提条件
# cat config.yaml〜中略〜## Network Settingsnetwork_type: calico〜中略〜## IPSec mesh Settings## If user wants to configure IPSec mesh, the following parameters## should be configured through config.yamlipsec_mesh:enable: false
© 2019 IBM Corporation© 2019 IBM Corporation
• AIXノードをICPに追加/AIXコンテナーを作成するステップ
5
AIXコンテナー導⼊・構成概要
IBM Cloud Private
Linuxノード ②AIXノードを追加
AIXノード①パッケージ導⼊
IBM Cloud Private
AIXノード
①コンテナー・イメージ作成
AIXコンテナー
②コンテナーのデプロイ
AIXコンテナーの導⼊ AIXコンテナー・イメージの作成
① AIXにコンテナー・パッケージを導⼊② AIXノードをICPに追加(コンテナーの構成/始動)
① AIXノード上でコンテナー・イメージを作成② 作成したイメージをAIXノードにデプロイ
AIXコンテナーの導⼊ICP v3.1.2
© 2019 IBM Corporation© 2019 IBM Corporation
• icp-workerの導⼊– ここではyumを使⽤してicp-workerを導⼊– ICP v3.1.2⽤のパッケージを指定
7
AIXコンテナー・パッケージの導⼊
# yum install icp-worker-3.1.2
# export PATH=$PATH:/opt/freeware/bin
• パスの構成– AIXコンテナー関連コマンド使⽤のためPATH変数を設定
ICP v3.1.2
© 2019 IBM Corporation© 2019 IBM Corporation
• icp-worker RPMパッケージ導⼊– AIX Toolbox for Linux Applicationから以下のパッケージをダウンロード
• ca-certificates-2017.07.17-1.aix6.1.ppc.rpm • calico-cni-3.3.1-1.aix7.2.ppc.rpm• calico-node-3.3.1-1.aix7.2.ppc.rpm• cloudctl-3.1.2.0-1.aix7.2.ppc.rpm • criwpar-0.2.0-1.aix7.2.ppc.rpm• icp-worker-3.1.2-1.aix7.2.ppc.rpm• kubectl-1.12.4-1.aix7.2.ppc.rpm• kubelet-1.12.4-1.aix7.2.ppc.rpm• kubernetes-node-img-1.12.4-1.aix7.2.ppc.rpm
– ダウンロードしたパッケージをインストール
8
(参考)⼿動でのコンテナー・パッケージ導⼊
# rpm -ivh ca-certificates-2017.07.17-1.aix6.1.ppc.rpm ¥ calico-cni-3.3.1-1.aix7.2.ppc.rpm ¥ calico-node-3.3.1-1.aix7.2.ppc.rpm ¥ cloudctl-3.1.2.0-1.aix7.2.ppc.rpm ¥ criwpar-0.2.0-1.aix7.2.ppc.rpm ¥ icp-worker-3.1.2-1.aix7.2.ppc.rpm ¥ kubectl-1.12.4-1.aix7.2.ppc.rpm ¥ kubelet-1.12.4-1.aix7.2.ppc.rpm ¥ kubernetes-node-img-1.12.4-1.aix7.2.ppc.rpm
ICP v3.1.2
© 2019 IBM Corporation© 2019 IBM Corporation
• 名前解決– /etc/hostsにICPマスターノードを追加– ここではICPマスターノードはホスト名︓mycluster.icp, IPアドレス: 192.168.48.20
• kubelet, kube-proxyの証明書と鍵の構成– ICPマスターノードからAIXノードに証明書と鍵をコピー
9
AIXコンテナーの構成
192.168.48.20 mycluster.icp
# scp -r [email protected]:/etc/cfc/{kubelet,kube-proxy} /etc/cfc/
※ ICPについては参考資料︓ICP_v3.1.0_on Power_構成ガイドを参照
ICP v3.1.2
© 2019 IBM Corporation© 2019 IBM Corporation
• インターフェース構成– ICPマスターノードと通信するインターフェースを指定– デフォルトはen0なので必要に応じて修正
• 時刻同期– ICPマスターノードとAIXノードが時刻同期できていること
10
AIXコンテナーの構成
# cat /etc/criwpard/criwpard.conf{"network": {"host_interface": "en0"
}}
ICP v3.1.2
© 2019 IBM Corporation© 2019 IBM Corporation
• ICPへのログイン– kubectlコマンドの設定を⾏うために、cloudctlコマンドでログインします
11
Kubectlコマンドの設定
# cloudctl login -a https://mycluster.icp:8443 -u admin
Password>Authenticating...OK
Targeted account mycluster Account (id-mycluster-account)
〜中略〜
User "mycluster-user" set.Context "mycluster-context" created.Switched to context "mycluster-context".OK
Configuring helm: /.helmOK
ICP v3.1.2
© 2019 IBM Corporation© 2019 IBM Corporation
• Kubernetes DaemonSetsの構成– 構成スクリプトを実⾏– ICPのWebインターフェースのIPアドレスとクラスター間通信のIPアドレスのセグメントが異なる場合はスクリプト実⾏後に修正が必要
12
AIXコンテナーの構成
# /opt/freeware/bin/k8s-setup.shThis script installs Kubernetes daemonsets for AIX nodes in the IBM Cloud Private cluster.kubectl CLI must be configured with "admin" privileges on the node before running this script.
Continue [y/N]? y
〜中略〜Install calico-node-aix daemonset [y/N]? yRemoving calico-node-aix daemonset... Error from server (NotFound): daemonsets.extensions "calico-node-aix" not founddoneInstalling calico-node-aix daemonset... daemonset.extensions "calico-node-aix" createddone
ICP v3.1.2
© 2019 IBM Corporation© 2019 IBM Corporation
• Kubernetesサービスの起動– AIXノードでKubernetesサービスを起動
– AIX起動時にKubernetesサービスが起動するように設定
• AIXノードの追加確認– AIXノードがICPクラスターに追加されたことを確認
13
AIXコンテナーの始動
# startsrc -g kube-system
# cp /opt/freeware/share/kubernetes/Skube /etc/rc.d/rc2.d/
# kubectl get nodesNAME STATUS ROLES AGE VERSION192.168.48.20 Ready etcd,master,proxy 201d v1.12.4+icp-ee192.168.48.21 Ready management 84d v1.12.4+icp-ee192.168.48.23 Ready worker 201d v1.12.4+icp-ee192.168.48.24 Ready worker 201d v1.12.4+icp-ee192.168.48.25 Ready worker 36m v1.12.4+aix
ICP v3.1.2
AIXコンテナーの導⼊v2.1.0.3
© 2019 IBM Corporation© 2019 IBM Corporation
• icp-workerの導⼊– ここではyumを使⽤してicp-workerを導⼊– ICP v2.1.0.3⽤のパッケージを指定
15
AIXコンテナー・パッケージの導⼊
# yum install icp-worker-2.1.0.3
# export PATH=$PATH:/opt/freeware/bin
• パスの構成– AIXコンテナー関連コマンド使⽤のためPATH変数を設定
ICP v2.1.0.3
© 2019 IBM Corporation© 2019 IBM Corporation
• icp-worker RPMパッケージ導⼊– AIX Toolbox for Linux Applicationから以下のパッケージをダウンロード
• ca-certificates-2017.07.17-1.aix6.1.ppc.rpm• calico-cni-2.0.3-1.aix7.2.ppc.rpm• calico-node-3.0.4-1.aix7.2.ppc.rpm• criwpar-0.1.0-1.aix7.2.ppc.rpm• icp-worker-2.1.0.3-1.aix7.2.ppc.rpm• kubectl-1.10.0-1.aix7.2.ppc.rpm• kubernetes-node-1.10.0-1.aix7.2.ppc.rpm• libgcc-8.1.0-2.aix7.2.ppc.rpm• libgo-8.1.0-2.aix7.2.ppc.rpm
– ダウンロードしたパッケージをインストール
16
(参考)⼿動でのコンテナー・パッケージ導⼊
# rpm -ivh ca-certificates-2017.07.17-1.aix6.1.ppc.rpm calico-cni-2.0.3-1.aix7.2.ppc.rpm ¥> calico-node-3.0.4-1.aix7.2.ppc.rpm criwpar-0.1.0-1.aix7.2.ppc.rpm icp-worker-2.1.0.3-1.aix7.2.ppc.rpm ¥> kubectl-1.10.0-1.aix7.2.ppc.rpm kubernetes-node-1.10.0-1.aix7.2.ppc.rpm libgcc-8.1.0-2.aix7.2.ppc.rpm ¥> libgo-8.1.0-2.aix7.2.ppc.rpm
ICP v2.1.0.3
© 2019 IBM Corporation© 2019 IBM Corporation
• 名前解決– /etc/hostsにICPマスターノードを追加– ここではICPマスターノードはホスト名︓mycluster.icp, IPアドレス: 192.168.55.56
• kubelet, kube-proxyの証明書と鍵の構成– ICPマスターノードからAIXノードに証明書と鍵をコピー
17
AIXコンテナーの構成
192.168.55.56 mycluster.icp
# scp [email protected]:/var/lib/kubelet/{kubelet-config,ca.crt,kubelet.crt,kubelet.key, ¥> kube-proxy-config,kube-proxy.crt,kube-proxy.key} /var/lib/kubelet/
※ ICPについては参考資料︓ICP_v3.1.0_on Power_構成ガイドを参照
ICP v2.1.0.3
© 2019 IBM Corporation© 2019 IBM Corporation
• インターフェース構成– ICPマスターノードと通信するインターフェースを指定– デフォルトはen0なので必要に応じて修正
• 時刻同期– ICPマスターノードとAIXノードが時刻同期できていること
18
AIXコンテナーの構成
# cat /etc/criwpard/criwpard.conf{"network": {"host_interface": "en0"
}}
ICP v2.1.0.3
© 2019 IBM Corporation© 2019 IBM Corporation
• kubectl CLI構成– ICPのWebインターフェースにadmin権限でログインし、クライアントの構成を選択– 表⽰された構成コマンドをAIXノード上で実⾏
– kubectlコマンドの実⾏確認
19
AIXコンテナーの構成
# kubectl get nodesNAME STATUS ROLES AGE VERSION192.168.55.56 Ready <none> 33m v1.10.0+icp-ee
ICP v2.1.0.3
© 2019 IBM Corporation© 2019 IBM Corporation
• Kubernetes DaemonSetsの構成– 構成スクリプトを実⾏– ICPのWebインターフェースのIPアドレスとクラスター間通信のIPアドレスのセグメントが異なる場合はスクリプト実⾏後に修正が必要
20
AIXコンテナーの構成
# /opt/freeware/bin/k8s-setup.shThis script installs Kubernetes daemonsets for AIX nodes in the IBM Cloud Private cluster.kubectl CLI must be configured with "admin" privileges on the node before running this script.
Continue [y/N]? y
〜中略〜Install calico-node-aix daemonset [y/N]? yRemoving calico-node-aix daemonset... Error from server (NotFound): daemonsets.extensions "calico-node-aix" not founddoneInstalling calico-node-aix daemonset... daemonset.extensions "calico-node-aix" createddone
ICP v2.1.0.3
© 2019 IBM Corporation© 2019 IBM Corporation
• calico-node-aixの設定修正– ICPのWebインターフェースのIPアドレスとクラスター間通信のIPアドレスのセグメントが異なる場合は以下の⼿順で登録IPアドレスを修正
– ここではAIXノードの登録IPアドレスを”192.168.55.63”に修正
21
(参考)AIXノードの登録IPアドレス修正
# kubectl edit ds calico-node-aix -n kube-system# kubectl get ds calico-node-aix -n kube-system -o yaml〜中略〜spec:〜中略〜template:〜中略〜spec:
containers:- name: IP_AUTODETECTION_METHODvalue: can-reach=192.168.55.63
© 2019 IBM Corporation© 2019 IBM Corporation
• Kubernetesサービスの起動– AIXノードでKubernetesサービスを起動
– AIX起動時にKubernetesサービスが起動するように設定
• AIXノードの追加確認– AIXノードがICPクラスターに追加されたことを確認
22
AIXコンテナーの始動
# startsrc -s criwpard# startsrc -s kubelet
# cp /opt/freeware/share/kubernetes/Skube /etc/rc.d/rc2.d/
# kubectl get nodesNAME STATUS ROLES AGE VERSION192.168.55.56 Ready <none> 1d v1.10.0+icp-ee192.168.55.63 Ready <none> 12h v1.10.0+aix
ICP v2.1.0.3
AIXコンテナー・イメージの作成
© 2019 IBM Corporation© 2019 IBM Corporation
• Dockerfile※作成– Dockerfileを作成してスクラッチからコンテナー・イメージを作成– Dockerfileの記述⽅式はLinux Dockerと同様– ここではvmstatを実⾏するだけのDockerfileを作成
• Dockerfileからコンテナー・イメージ作成– AIXノードのローカルにコンテナー・イメージを作成
– コンテナー・イメージの確認
24
AIXコンテナー・イメージの作成
# cat testimage.dockerfileFROM scratchPATH /usr/bin:/etc:/usr/sbin:/sbinENV VMSTAT_INTERVAL 1CMD vmstat ${VMSTAT_INTERVAL}
# mkwpari -f testimage.dockerfile testimage:1.0
# lswpariNAME CREATED SIZEtestimage:1.0 18 mins ago 26.8MB〜以下略 ※ Dockerfile reference参照
© 2019 IBM Corporation© 2019 IBM Corporation
• Docker証明書設定– Docker証明書をICPマスターノードからコピー
• (オプション)コンテナー・イメージにタグ付け– 作成したコンテナー・イメージにタグ付け
– コンテナー・イメージを確認
25
AIXコンテナー・イメージの作成
# mkdir /etc/criwpard/certs/mycluster.icp:8500# scp [email protected]:/etc/docker/certs.d/mycluster.icp:8500/ca.crt /etc/criwpard/certs/mycluster.icp:8500/
# mkwpari -T testimage:1.0 testimage:latest
# lswpariNAME CREATED SIZEtestimage:latest 22 mins ago 26.8MBtestimage:1.0 34 mins ago 26.8MB〜以下略
© 2019 IBM Corporation© 2019 IBM Corporation
• コンテナー・イメージをpush– 作成したコンテナー・イメージをDockerレジストリにpush
– コンテナー・イメージを確認
– ICP上でコンテナー・イメージを確認
26
AIXコンテナー・イメージの作成
# pushwpari -u admin testimage:1.0 mycluster.icp:8500/default/testimage:1.0
# lswpariNAME CREATED SIZEmycluster.icp:8500/default/testimage:1.0 5 days ago 26.8MBtestimage:1.0 5 days ago 26.8MB〜以下略
© 2019 IBM Corporation© 2019 IBM Corporation
• YAMLファイル※作成– コンテナー・イメージをデプロイするためにYAMLファイルを作成– YAMLファイルの記述⽅式はLinux Dockerと同様– AIXノードのみにデプロイするためにnodeSelectorを指定
27
AIXコンテナー・イメージのデプロイ
# cat testpod.yamlapiVersion: v1kind: Podmetadata:name: testpod
spec:containers:- name: vmstatimage:
mycluster.icp:8500/default/testimage:1.0env:- name: VMSTAT_INTERVALvalue: "2"
(続き)restartPolicy: Nevertolerations:- key: "ibm.com/aix"operator: "Exists"effect: "NoSchedule"
nodeSelector:beta.kubernetes.io/os: aix
※ Understanding Kubernetes Objects参照
© 2019 IBM Corporation© 2019 IBM Corporation
• コンテナー・イメージをデプロイ– Dockerレジストリにpushしたイメージをデプロイ– デプロイ⼿順はLinux Dockerと同様
– デプロイ状況確認
– WPAR稼働状況確認
28
AIXコンテナー・イメージのデプロイ
# kubectl create -f testpod.yaml
# kubectl get podsNAME READY STATUS RESTARTS AGEtestpod 1/1 Running 0 26s
# lswparName State Type Hostname Directory RootVG WPAR-------------------------------------------------------------------------------------------------------------------------------------------------------k8s_vmstat_6 A S testpod /var/lib/criwpard/pods/7ef3555b-15be-11e9-aeb9-42f0cce8470a/containers/k8s_vmstat_6/mountpoint no
Hits & Tips
© 2019 IBM Corporation© 2019 IBM Corporation
• クラスター外部への通信のためのNAT構成– AIXノードはデフォルトではNATが構成されていないためPodからクラスター外部へ通信ができません
– Podが外部サービスを使⽤する必要がある場合はAIXノード上でNATを構成する必要があります– ここではクラスターDNSのIPアドレスを”10.0.55.10”に修正
• IP Filterの導⼊– AIX Web Download PackからIPFilterをダウンロード– ダウンロードファイルを解凍し、installpコマンドで導⼊
– 設定を反映させるためkubeletを再起動
30
クラスター外部への通信(1/3)
# stopsrc -s kubelet# startsrc -s kubelet
© 2019 IBM Corporation© 2019 IBM Corporation
• NATの構成– IPFilterのカーネル拡張をロード
– NAT構成ファイルを作成– ここでは/etc/ipnat.confを作成
– NAT構成ファイルを読み込み
31
クラスター外部への通信(2/3)
# /usr/lib/methods/cfg_ipf -l
# vi /etc/ipnat.conf# cat /etc/ipnat.confmap en0 10.1.0.0/16 -> 0.0.0.0/32 portmap tcp/udp 10000:20000map en0 10.1.0.0/16 -> 0.0.0.0/32
# ipnat -f /etc/ipnat.conf
外部通信のインターフェースを指定複数ある場合は複数⾏記載
NAT変換後のポート番号の範囲を指定
© 2019 IBM Corporation© 2019 IBM Corporation
• チェックサム・オフロードの無効化– ipnat(IPFilter 4.1.13)によるNATではチェックサム・オフロードが正常に動作しません– 正常に通信するためにはチェックサム・オフロードの無効化が必要です
32
クラスター外部への通信(3/3)
# lsattr -El ent0 -a chksum_offloadchksum_offload no Enable Checksum Offload for IPv4 packets True
© 2019 IBM Corporation© 2019 IBM Corporation
• クラスターDNSの設定修正– ICP導⼊時にクラスターIPアドレスのセグメントをカスタマイズしている場合、AIXノードでクラスターDNSのIPアドレスを修正する必要があります
– ここではクラスターDNSのIPアドレスを”10.0.55.10”に修正
– 設定を反映させるためkubeletを再起動
33
クラスターDNSのIPアドレス修正
# vi /opt/freeware/bin/kubeletsrc# cat /opt/freeware/bin/kubeletsrc〜中略〜--cluster-dns=10.0.55.10 ¥
〜以下略
# stopsrc -s kubelet# startsrc -s kubelet
© 2019 IBM Corporation© 2019 IBM Corporation
• helmコマンド導⼊– ここではyumを使⽤してhelmコマンドをインストール
• helmコマンド構成– helmコマンド初期化後、helmクライアント構成済みの別ノードから証明書類をコピー– ここではICPマスターノードから証明書類をコピー
• helmコマンド構成確認– Client/Serverともに正常に出⼒されることを確認– helmコマンドを使⽤する際はkubectlの接続情報が必要
34
helmクライアント構成
# yum install helm.ppc
# helm init --client-only --skip-refresh# scp 192.168.55.64:/root/.helm/* ~/.helm/*
# helm version --tlsClient: &version.Version{SemVer:"v2.8+unreleased", GitCommit:"", GitTreeState:""}Server: &version.Version{SemVer:"v2.7.3+icp",GitCommit:"27442e4cfd324d8f82f935fe0b7b492994d4c289", GitTreeState:"dirty"}
参考資料
© 2019 IBM Corporation© 2019 IBM Corporation
• Using Kubernetes with AIX container technology - User Guide– ICP v3.1.2 https://ibm.biz/BdzYzp– ICP v2.1.0.3 https://t.co/ODCI2knVbf
• ICP_v3.1.0_on Power_構成ガイド– https://ibm.biz/BdYVky
• Kubernetes Documentation– https://kubernetes.io/docs/home/
• Docker Documentation– https://docs.docker.com/
36
参考資料
© 2019 IBM Corporation© 2019 IBM Corporation