k 8 s無脳シリーズ(三)-NSSストレージ(簡易バージョン)

9980 ワード

k 8 s無脳シリーズ(三)-NSSストレージ(簡易バージョン)


1.概念

  • pv,pvc pv=PersistentVolume永続化ストレージコントローラ、namespaceではなくクラスタ向けであることを明らかにした.pvc=PersistentVolumeClaimドッキングpodとpv,
  • 関係、公式説明
    A PVC to PV binding is a one-to-one mapping, using a ClaimRef which is a bi-directional binding between the PersistentVolume and the PersistentVolumeClaim

  • pvcとpvのバインド関係は一対一に対応している.注意!ここでの1つの対応は、pvcごとに1つのpvしかないが、pvは複数のpvcに対応することができる.この点はAccess ModesにReadWriteManyが含まれていることから分かる.
  • この記事では、単純な「静的ストレージ」のみを対象としており、「動的ストレージ」セクションは含まれていません.
  • pvcはpvに対応する問題である.pvcはpvを検索し、バインドされていないものが見つかり、リソースの要求が一致し、labelが追加された場合、pvcがmatchLabelプロパティを設定した場合、自動的にバインドされます.具体的には、NFSストレージ(複雑なバージョン)で説明します.

  • 2.配置


    2.1 NFSインストール

  • サービス側設置
  • $yum install nfs-utils -y
    
    $systemctl enable rpcbind nfs
    
    $systemctl start rpcbind nfs
    
    $mkdir /data/nfs
    
    $chown -R nfsnobody.nfsnobody /data/nfs
    
    $vim /etc/export
    /data/nfs 192.168.56.0/24(rw,async,all_squash)
    /data/nfs/mysql 192.168.56.0/24(rw,async,no_root_squash,fsid=0) #  ,MYSQL ROOT 
    
    $systemctl restart nfs
    
  • クライアント認証サービス可用性
  • cd $HOME
    mkdir nfs  
    sudo mount -t nfs 192.168.56.4:/data/nfs nfs
    

    3.実際の操作

  • MySQL用の記憶空間mysql-pvを作成する.yaml
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: mysql-pv
    spec:
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Recycle
      nfs:
        path: /data/nfs/mysql
        server: 192.168.56.4
    
    $kubectl create -f mysql-pv.yaml
    
    $kubectl get pv mysql-pv
    NAME       CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS      CLAIM     REASON    AGE
    mysql-pv   5Gi        RWO           Recycle         Available                       3s
    
  • mysql-pvcを作成する.yaml
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: mysql-pvc
      namespace: default
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
    
    $kubectl create -f mysql-pvc.yaml
    NAME            STATUS    VOLUME     CAPACITY   ACCESSMODES   AGE
    pvc/mysql-pvc   Bound     mysql-pv   5Gi        RWO           22s
    
    NAME          CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS    CLAIM               REASON    AGE
    pv/mysql-pv   5Gi        RWO           Recycle         Bound     default/mysql-pvc             2m
    
    
  • mysql-rcを修正する.yaml(無脳シリーズ-最小クラスタ構築参照)
    apiVersion: v1
    kind: ReplicationController
    metadata:
      name: mysql-rc
    spec:
      replicas: 1
      selector:
        app: mysql-pod
      template:
        metadata:
          labels:
            app: mysql-pod
        spec:
          containers:
          - name: mysql
            image: mysql:5.6
            ports:
            - containerPort: 3306
            env:
            - name: MYSQL_ROOT_PASSWORD
              value: "123"
            volumeMounts:
            - mountPath: "/var/lib/mysql"
              name: mysql-data
          volumes:
          - name: mysql-data
            persistentVolumeClaim:
              claimName: mysql-pvc
    
    $kubectl create -f mysql-rc.yaml
    $kubectl get rc mysql-rc
    NAME       DESIRED   CURRENT   READY     AGE       CONTAINER(S)   IMAGE(S)    SELECTOR
    mysql-rc   1         1         1         16s       mysql          mysql:5.6   app=mysql-pod
    
  • これで、永続化されたストレージを持つMySQLインスタンスがクラスタ内で実行されました.もう一度検証してみるとNFSサービスディレクトリに入るとmysqlデータがディレクトリに表示されていることがわかります
    $cd /data/nfs/mysql && ls
    auto.cnf  ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema
    
  • 4.並べ替えおよび解決方法

  • mysql-rcの作成に失敗しました.「changing ownership of'/var/lib/mysql/」:Operation not permitted」を報告します.root_squash,fsid=0.そうでないと、上記のエラーが報告されます.調整が行われている場合は、nfsサービスを再起動し、mysql-rcを削除してください.再作成
  • 診断テクニックmysql-rcの作成に失敗しました.xxxxは実行時の番号
    $kubectl describe pod mysql-rc-xxxx
    
    $kubectl log mysql-rc-xxxx
    
    
    podが存在するマシンを表示し、エラーログはpodが存在するノードに入り、dfコマンドを実行してマウントに成功したかどうかを確認します