今朝NFSが使えなかった件、なんかyum update
したら動くようになってた。
なのでNFSサーバの設定を有効にして、再度NFS PVを有効にしてインストール
NFSサーバ
[root@okd-manager ~]# cat /etc/exports.d/export-nfs.exports /exports/nfs/ *(rw,sync,no_wdelay,no_root_squash,insecure) [root@okd-manager ~]# exportfs -ar [root@okd-manager ~]# exportfs -v /exports/nfs <world>(sync,no_wdelay,hide,no_subtree_check,sec=sys,rw,insecure,no_root_squash,no_all_squash) [root@okd-manager ~]#
Hawkular Metricsの再デプロイ
面倒なので-e openshift_metrics_install_metrics=false
で一度アンインストールして、NFS PVを有効にしたインベントリファイルに変更して再度-e openshift_metrics_install_metrics=true
する。
NFSを使う部分のインベントリファイルはこんな感じ。
openshift_metrics_storage_kind=nfs openshift_metrics_storage_access_modes=['ReadWriteOnce'] openshift_metrics_storage_host=okd-manager.esxi.jp-z.jp openshift_metrics_storage_nfs_directory=/exports/nfs openshift_metrics_storage_volume_name=metrics openshift_metrics_storage_volume_size=10Gi openshift_metrics_storage_labels={'storage': 'metrics'}
あとこれも。
openshift_enable_unsupported_configurations=true
再デプロイに成功すると、、、
[zaki@okd-master ~]$ oc get pod -n openshift-infra NAME READY STATUS RESTARTS AGE hawkular-cassandra-1-66ktf 0/1 Pending 0 9m hawkular-metrics-clbqq 0/1 Running 0 9m hawkular-metrics-schema-p4567 1/1 Running 0 9m heapster-v5shf 0/1 Running 1 9m
あれ?Pendingだ。。
pvの作成
statusがPendingだったら、今のところ経験上ほぼ大抵は使えるpvが存在しなくてデプロイ待ちになってる状態。
[zaki@okd-master ~]$ oc get pv No resources found. [zaki@okd-master ~]$ oc get pvc -n openshift-infra NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE metrics-cassandra-1 Pending 9m [zaki@okd-master ~]$
そういえば、deploy_cluster.yml
を使ったクラスタ全体のインストールでなく、metrics単体のデプロイだとpvは作られないんだった。
[zaki@okd-master ~]$ oc get pvc -n openshift-infra metrics-cassandra-1 -o yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"labels":{"metrics-infra":"hawkular-cassandra"},"name":"metrics-cassandra-1","namespace":"openshift-infra"},"spec":{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"10Gi"}},"selector":{"matchLabels":{"storage":"metrics"}},"storageClassName":null}} creationTimestamp: 2019-11-22T13:16:10Z finalizers: - kubernetes.io/pvc-protection labels: metrics-infra: hawkular-cassandra name: metrics-cassandra-1 namespace: openshift-infra resourceVersion: "2635388" selfLink: /api/v1/namespaces/openshift-infra/persistentvolumeclaims/metrics-cassandra-1 uid: 402b94ee-0d2a-11ea-b7ba-000c29f44d7c spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi selector: matchLabels: storage: metrics status: phase: Pending [zaki@okd-master ~]$
このpvcに合わせたpvを手動で作る。
apiVersion: v1 kind: PersistentVolume metadata: labels: storage: metrics name: metrics-volume spec: accessModes: - ReadWriteOnce capacity: storage: 10Gi nfs: path: /exports/nfs/metrics server: okd-manager.esxi.jp-z.jp persistentVolumeReclaimPolicy: Retain
こんなファイル作成してpv作成
[zaki@okd-master pv]$ oc create -f metrics-pv.yml persistentvolume/metrics-volume created
[zaki@okd-master pv]$ oc get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE metrics-volume 10Gi RWO Retain Available 2s [zaki@okd-master pv]$ oc get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE metrics-volume 10Gi RWO Retain Bound openshift-infra/metrics-cassandra-1 17s [zaki@okd-master pv]$ [zaki@okd-master pv]$ oc get pvc -n openshift-infra NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE metrics-cassandra-1 Bound metrics-volume 10Gi RWO 11m [zaki@okd-master pv]$
Boundになった。
[zaki@okd-master pv]$ oc get pod -n openshift-infra NAME READY STATUS RESTARTS AGE hawkular-cassandra-1-66ktf 1/1 Running 3 13m hawkular-metrics-clbqq 1/1 Running 1 13m hawkular-metrics-schema-p4567 0/1 Completed 0 13m heapster-v5shf 1/1 Running 1 13m [zaki@okd-master pv]$
podの起動にも成功。
NFS側のファイル
[root@okd-manager ~]# ll -a /exports/nfs/metrics/ 合計 0 drwxrwxr-x. 4 root root 35 11月 22 22:28 . drwxrwxr-x. 3 nobody nobody 32 11月 22 22:05 .. drwxr-xr-x. 2 1000040000 root 80 11月 22 22:29 commitlog drwxr-xr-x. 9 1000040000 root 156 11月 22 22:28 data [root@okd-manager ~]#
うむ。
ちなみにcassandraだけでなくデータベース用のストレージにNFSのようなファイルストレージを使うのは非常にイケてないという話を今月だけでも何度も聞いてるので、相当な理由がない限りはブロックストレージを使いましょう。
ストレージの使い方、初歩的な間違いとしてRDBMSなどのデータストアのストレージとして本来ReadWriteOnceなブロックストレージを使わなければいけないところ、ReadWriteMany NFSなファイルストレージを使ってしまう、というのがありますが遅い&データ壊れますのでこの組み合わせは基本ダメです #k8sjp
— Takayoshi Kimura (@nekop) November 13, 2019
ほとんどの場合、ストレージはインフラで用意されているRWOなブロックストレージを利用することになります。RWMなNFSとかはコンテンツファイルとか設定ファイル置き場的なユースケースしかないのであまりユースケースが広くない。 #k8sjp
— Takayoshi Kimura (@nekop) November 13, 2019