zaki work log

作業ログやら生活ログやらなんやら

pv(NFS)を有効にしてHawkular Metricsを再デプロイ

今朝NFSが使えなかった件、なんかyum updateしたら動くようになってた。 なのでNFSサーバの設定を有効にして、再度NFS PVを有効にしてインストール

zaki-hmkc.hatenablog.com

qiita.com

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のようなファイルストレージを使うのは非常にイケてないという話を今月だけでも何度も聞いてるので、相当な理由がない限りはブロックストレージを使いましょう。

speakerdeck.com