アリクラウドKubernetesを使用してMySQLデータの永続化ストレージを実現--単一のインスタンス

6028 ワード

前提条件:
  • は、アリクラウドコンテナサービスによってKubernetesを作成してクラスタを作成する必要があります.
  • は、アリクラウドNASコンソールからファイルシステムを作成し、マウントポイントを追加する必要があります.Kubernetesクラスタがプライベートネットワークにある場合は、マウントポイント推奨もプライベートネットワークに追加され、Kubernetesと同じプライベートネットワークを処理します.Kubernetesクラスタネットワークが作成したマウントポイントにアクセスできることを保証すれば、クラシックネットワーク、または他のプライベートネットワークも使用できます.1つのファイルシステムで複数のマウントポイントを作成できます.

  • 操作手順:
    コンテナサービス管理画面で「ストレージボリューム」をクリックし、「作成」をクリックします.
    【NAS】タイプを選択し、【データボリューム名】を入力し、作成するスペース【総量】を入力し、【ReadWriteOnce】アクセスモードを選択し、【マウントポイントドメイン名】を入力し、サブディレクトリを指定します.
    マウントポイントドメイン名:このドメイン名はNASコンソールから取得されます.
    ReadWriteOnce:単一ノードのみが読み書きでマウントされます.
    サブディレクトリ:デフォルトはルートディレクトリで、テストで名前を指定する必要があります.そうしないと、データベースは初期化時に「chown:changing ownership of'/var/lib/mysql/':Operation not permitted」と報告されます.
    コンテナサービス管理画面で「ストレージボリューム」をクリックし、「ストレージ宣言」をクリックし、「作成」をクリックします.
    注:ストレージは、アプリケーションに必要な「名前空間」に宣言する必要があります.デフォルトは「default」で、他の名前空間の場合は自分で作成する必要があります.
    【NAS】を選択し、【名前】を入力して【既存のストレージボリュームモード】を選択し、最後に作成したばかりのストレージボリュームを選択すればよい.
    作成したPVとPVCをコマンドラインで確認します.
    [yuyan@registry:~]
    $ kubectl get pv
    NAME         CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   REASON   AGE
    mysql-data   20Gi       RWO            Retain           Bound    test/mysql-data   nas                     44s
    [yuyan@registry:~]
    $ kubectl get -n test pvc
    NAME         STATUS   VOLUME       CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    mysql-data   Bound    mysql-data   20Gi       RWO            nas            36s

    生産資源構成表プロファイルを作成します.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      namespace: test
      name: mysql-test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mysql-test
      template:
        metadata:
          namespace: test
          name: mysql-test
          labels:
            app: mysql-test
        spec:
          containers:
          - name: mysql-test
            image: mysql:5.7
            env:
            - name: MYSQL_ROOT_PASSWORD
              value: "!gogen123"
            volumeMounts:
            - name: mysql-data
              mountPath: /var/lib/mysql/
          volumes:
          - name: mysql-data
            persistentVolumeClaim:
              claimName: mysql-data

    「pod.spec.volumes」でvolumeを作成し、作成したvolumeを「pod.spec.containers.volumeMounts」でマウントします.
    MySQLが正常かどうかをテストします.
    $ kubectl exec -ti -n test mysql-test-99bd46dbc-ttqkn -- mysql -uroot -p'!gogen123'
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 7
    Server version: 5.7.25 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    4 rows in set (0.00 sec)
    
    mysql> create database k8s;
    Query OK, 1 row affected (0.02 sec)

    データの永続化をテストします.
    作成したばかりのpodを削除し(コントローラを一緒に削除)、新しいpodを作成します.このとき、既存のデータを使用します.
    MySQLに古いデータを使う必要がある場合は、MYSQLを注釈するだけです.ROOT_PASWORD変数でいいです.新しいリソースリストのプロファイルは以下の通りです.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      namespace: test
      name: mysql-test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mysql-test
      template:
        metadata:
          namespace: test
          name: mysql-test
          labels:
            app: mysql-test
        spec:
          containers:
          - name: mysql-test
            image: mysql:5.7
            #env:
            #- name: MYSQL_ROOT_PASSWORD
            #  value: "!gogen123"
            volumeMounts:
            - name: mysql-data
              mountPath: /var/lib/mysql/
          volumes:
          - name: mysql-data
            persistentVolumeClaim:
              claimName: mysql-data

    データベース検証にログインし、前にk 8 sという新しいライブラリを作成しました.
    $ kubectl exec -ti -n test mysql-test-75fbc84b9f-kpjwc -- mysql -uroot -p'!gogen123'
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 2
    Server version: 5.7.25 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | k8s                |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    5 rows in set (0.02 sec)
    
    mysql>

    アリ雲NASの簡単な使用説明.
    【地域】を選択し、【ファイルシステム】をクリックし、【ファイルシステムの作成】をクリックします.
    ファイルシステムインタフェースを作成するには、次のようにします.
    地域:デフォルトでは選択したばかりの地域ですが、変更することもできます.
    ストレージタイプ:データベースの場合はSSDが推奨されますが、その他は状況に応じて変更されます.
    プロトコルタイプ:NFS(Linux用).
    使用可能領域:任意.
    ストレージ・パッケージ:ある場合は(購入が必要)を選択して、ストレージ・スペースを相殺し、ストレージ・パッケージがない場合は量単位で料金を支払うことができます.
    ファイルシステムを作成したら【マウントポイントの追加】をクリックします.
    インタフェースは以下の通りです.
    マウント占有タイプ:パブリックネットワークに置く場合はクラシックネットワーク、VPCネットワークに置く場合はプライベートネットワークを選択します.Kubernetesがプライベートネットワークにいる場合は、プライベートネットワークの選択をお勧めします.この作成が完了すると、異なるネットワークに複数のマウントポイントを作成することもできます.
    VPCネットワーク:独自のネットワークを選択するとこのオプションがあり、自動的にロードされ、選択するだけです.
    スイッチ:独自のネットワークスイッチで、同様に独自のネットワークを選択する必要があります.自動的にロードされ、選択するだけです.
    ≪権限グループ|Privileges Group|ldap≫:特別な要件がない場合は、デフォルトのすべての許可を使用します.
    作成したファイルシステム【管理】をクリックして下の画面に入ります
    KubernetesでNASストレージボリュームを追加するときにこのマウントポイントが必要です.ドメイン名で、マウスを上に移動するとmountコマンドでマウントする方法が表示されます.
    [マウントポイントを追加]をクリックして追加を続行することもできます.
    転載先:https://blog.51cto.com/270142877/2365489