当該コンテンツは、ローカリゼーションサービスを準備しております。早急にローカライズサービスをご提供できるよう、努めております。

NFS Client Provisioner利用ガイド

NFS Client Provisionerは、既存のNFSサーバにPVC(Persistent Volume Claim)によるPV(Persistent Volume)を自動生成するProvisionerです。

このガイドではHelm CLIを用いてnfs-client-provisionerを設置し、NAS商品に生成されたボリュームを連動する方法を説明します。

このガイドはHelmv3基準で作成しました。 Helmを使用するためには、kubectlのインストール及びkubeconfig設定が先行する必要があります。

NAS Volume 生成

NAS商品からNFSプロトコルでボリュームを生成します。

NASボリューム作成時にNFSアクセス制御の設定をして、クラスタ内のすべてのワーカーノードサーバーをACLに登録する必要があります。

NASボリュームが生成されたら、マウント情報の*IP及び*PATHの情報を確認します。

IPとPATH情報はnfs-client-provisionerをインストールする際の設定値として使用されます。

Helm CLI 設置

Helm CLIは、下記リンクから使用環境に合わせた方法でインストールを進めます。

Helm Repo 追加

Helm CLIインストール後、公式Helm chart repositoryをCLIに追加します。

$ helm repo add stable https://kubernetes-charts.storage.googleapis.com/

NFS Client Provisioner 設置

helm install コマンドを利用して、クラスターにnfs-client-provisionerをインストールします。

$ helm --kubeconfig=$KUBE_CONFIG install storage stable/nfs-client-provisioner \
--set nfs.server=__NAS_IP__ \
--set nfs.path=__NAS_PATH__
NAME: storage
LAST DEPLOYED: Mon Jun  8 15:03:25 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

上記命令の __NAS_IP__, __NAS_PATH__ 값の値は、次の例題を参考に設定値を指定します。

例題

  • __NAS_IP__: 169.254.0.13
  • __NAS_PATH__: /n000693_provisioner

StorageClass 確認する

nfs-client-provsioner インストールが完了すると、 kubectl --kubeconfig=$KUBE_CONFIG get storageclass コマンドでStorage Classを照会できます。

$ kubectl --kubeconfig=$KUBE_CONFIG get storageclass
NAME                          PROVISIONER                                    AGE
nfs-client                    cluster.local/storage-nfs-client-provisioner   5m49s
nks-block-storage (default)   blk.csi.ncloud.com                             3h39m

Default Storage Class 確認·変更

クラスタには基本的にblock storage csiがインストールされているので、storage class照会時に nks-block-storagedefaultに設定されていることが確認できます。

PVCに対してnfs-client-provsionerでPVを自動生成したい場合は、defaultnfs-clientに変更する必要があります。 変更方法については、次の公式文書をご参照ください。

アプリケーションをインストールしてボリュームを作成してみる。

Helmを利用してPVを必要とするJenkinsのインストール及び生成されたボリュームを確認します。

Jenkins 設置する

helm install 命令でJenkinsをクラスターに設置します。

$ helm --kubeconfig=$KUBE_CONFIG install ci stable/jenkins
NAME: ci
LAST DEPLOYED: Mon Jun  8 15:27:00 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
1. Get your 'admin' user password by running:
  printf $(kubectl get secret --namespace default ci-jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode);echo
2. Get the Jenkins URL to visit by running these commands in the same shell:
  export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/component=jenkins-master" -l "app.kubernetes.io/instance=ci" -o jsonpath="{.items[0].metadata.name}")
  echo http://127.0.0.1:8080
  kubectl --namespace default port-forward $POD_NAME 8080:8080

3. Login with the password from step 1 and the username: admin

4. Use Jenkins Configuration as Code by specifying configScripts in your values.yaml file, see documentation: http:///configuration-as-code and examples: https://github.com/jenkinsci/configuration-as-code-plugin/tree/master/demos

For more information on running Jenkins on Kubernetes, visit:
https://cloud.google.com/solutions/jenkins-on-container-engine
For more information about Jenkins Configuration as Code, visit:
https://jenkins.io/projects/jcasc/

PVC, PV 確認する

Jenkins インストール完了後、次のコマンドでPVCとPVを確認します。

$ kubectl --kubeconfig=$KUBE_CONFIG get pvc
NAME         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
ci-jenkins   Bound    pvc-6ddce683-4b6b-49d3-a26e-76ae92dde6dd   8Gi        RWO            nfs-client     25s

$ kubectl --kubeconfig=$KUBE_CONFIG get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                STORAGECLASS   REASON   AGE
pvc-6ddce683-4b6b-49d3-a26e-76ae92dde6dd   8Gi        RWO            Delete           Bound    default/ci-jenkins   nfs-client              39s

注意事項

nfs-client-provisionerを通じてNASにマウントされたWorker Nodeを停止する場合、停止失敗状態になることがあります。 これはOSのバグで、マウントされたNASに対してIが存在する場合に発生します。 よって停止する前に ノードメンテナンスガイドを参考に終了するNodeを予めDrainしてから停止しておくことをお勧めします。

に対する検索結果は~件です。 ""

    に対する検索結果がありません。 ""

    処理中...