2017-12-20 13 views
0

は、私は、これら2つのガイドの混合物で、次の2つのVirtualBoxのVM上でGlusterFSストレージを設定します。Kulusternetesに新しいglusterfs StorageClassを追加しますか?

https://wiki.centos.org/HowTos/GlusterFSonCentOS

http://docs.gluster.org/en/latest/Quick-Start-Guide/Quickstart/

内部ネットワークは10.10.10.4と10.10.10.5のIPアドレスをDHCP割り当てられています。私は、ストレージが正常に正常に動作していることを確認しました。

この時点で、私はYAMLファイルを使用してKubernetesに新しいStorageClassを追加しようとしています。対象に見つけることができる唯一のリソースはOpenShiftまたはHeketi GlusterFSです。

私は次のようにストレージ・クラスの作成を開始:

# storage-class.yml 
apiVersion: storage.k8s.io/v1beta1 
kind: StorageClass 
metadata: 
    name: gluster-container 
provisioner: kubernetes.io/glusterfs 
parameters: 
    resturl: "10.10.10.5" 

私はこれが不完全であると仮定したが、これを構成する方法についてより多くの情報を見つけることができませんよ。私がテストしようとすると、次のエラーが表示されます。

ProvisioningFailed - Failed to provision volume with StorageClass "gluster-container": create volume error: error creating volume Post 10.10.10.5/volumes: unsupported protocol scheme "" 

ここから進める方法はありますか?

+0

私の同僚の一人がこの作品を作ってここに書きましたが、それがあなたを助けてくれるかどうかは分かりません:http://blog.infracloud.io/gluster-heketi-kubernetes/ –

答えて

1

kubernetesでGlusterFSプロビジョニングを動的にプロビジョニングGlusterFSのボリュームに望んでいる - 例えば、以下のように:それ自体が

gluster volume create glustervol1 replica 2 transport tcp 
gluster1.example.com:/bricks/brick1/brick \ 
gluster2.example.com:/bricks/brick1/brick. 

GlusterFSは、これらのボリュームを作成するコマンドをトリガするためにAPIエンドポイントを持っていません。しかし、コミュニティはGlusterFSのAPIエンドポイントとしてHeketiを開発しました。 HeketiのRESTfulな管理インタフェースのエンドポイントは、あなたのkubernetesでresturlStorageClassの値です。

@Vishal Biyaniがコメントしたように、http://blog.infracloud.io/gluster-heketi-kubernetes/は、GCPのHeketiをすばやく開始し、それをkubernetesに接続する方法に関する記事です。 GlusterFSのボリュームの動的なプロビジョニングがご使用の環境で必要とされないなら

、あなたはGlusterFSの前でロードバランサにNFS STORAGECLASSとポイントを使用することができます。それでもGlusterFSの複製と配布は素晴らしいですが、NFSのglusterサービスを有効にし、kubernetesに公開する各glusterボリュームを手動で作成する必要があります。

+0

その書き込み禁止の問題は、 Google Cloud環境向けのもので、アクセス権がありません。 – IAspireToBeGladOS

0

私はglusterFSのボリュームクレームを管理するためのスクリプトを作成しました:

if [[ "$#" -le 3 ]]; then 
    echo "Usage:" 
    echo " $0 <operation> <namespace> <name> <size>" 
    echo " - operation: create | delete" 
    exit 
fi 

OPERATION=$1 
NAMESPACE=$2 
NAME=$3 
SIZE=$4 

function create { 
    gluster volume create $NAMESPACE-$NAME replica 3 server1:/mnt/gluster-storage/brick-$NAMESPACE-$NAME server2:/mnt/gluster-storage/brick-$NAMESPACE-$NAME server3:/mnt/gluster-storage/brick-$NAMESPACE-$NAME 
    gluster volume start $NAMESPACE-$NAME 

    kubectl -n $NAMESPACE apply -f /etc/kubernetes/glusterfs-endpoints.yml 
    kubectl -n $NAMESPACE apply -f /etc/kubernetes/glusterfs-service.yml 

    cat <<EOF | kubectl apply -f - 
apiVersion: v1 
kind: PersistentVolume 
metadata: 
    name: $NAME 
    namespace: $NAMESPACE 
spec: 
    capacity: 
    storage: $SIZE 
    accessModes: 
    - ReadWriteMany 
    glusterfs: 
    endpoints: glusterfs-cluster 
    path: $NAMESPACE-$NAME 
    readOnly: false 
    persistentVolumeReclaimPolicy: Retain 
    claimRef: 
    namespace: $NAMESPACE 
    name: $NAME 
--- 
apiVersion: v1 
kind: PersistentVolumeClaim 
metadata: 
    name: $NAME 
    namespace: $NAMESPACE 
spec: 
    accessModes: 
    - ReadWriteMany 
    resources: 
    requests: 
     storage: $SIZE 
EOF 
} 

function delete { 
    kubectl -n $NAMESPACE delete pvc $NAME 
    kubectl delete pv $NAME 

    yes | gluster volume stop $NAMESPACE-$NAME 
    echo 
    yes | gluster volume delete $NAMESPACE-$NAME 
    echo 
    echo "#################################################################" 
    echo "REMOVE BRICKS MANUALLY:" 
    echo " server1:/mnt/gluster-storage/brick-$NAMESPACE-$NAME" 
    echo " server2:/mnt/gluster-storage/brick-$NAMESPACE-$NAME" 
    echo " server3:/mnt/gluster-storage/brick-$NAMESPACE-$NAME" 
    echo "#################################################################" 
} 

case $OPERATION in 
    create) 
    create 
    ;; 
    delete) 
    delete 
    ;; 
esac 

これはglusterボリュームを作成し、Kubernetesでボリューム請求にマップします。したがって、自動プロビジョニングを必要とせずにglusterfsマウントを使用できます。

そうでなければ、最近のバージョンの最適化の多くをミスgluster.fuseの古いバージョンを使うことになるドッキングウィンドウの外にkubelet実行することを確認します。

関連する問題