でのデータベースサーバーの配備


このチュートリアルでは、ローカルマシンで設定されているKubernetesクラスタにMySQLデータベースサーバーを展開する方法を学びます.これはKubernetesでデータを保持する多くの方法の一つです.
Kubernetesは、コンテナのアプリケーションの展開、スケーリング、および管理を自動化するためのツールです.
このチュートリアルで使用するいくつかの用語やKubernetesオブジェクトに慣れています.
  • Docker Image : 完全に機能的な容器をセットアップするために必要なすべての必需品を詰めるファイルのコレクション.
  • Container : 画像、実行中のイメージのインスタンス.
  • Node : Kubernetesオブジェクト、コンテナを実行し、リソースを提供する仮想マシン.
  • Kubernetes Cluster : それらを管理するノードと構成のコレクション.
  • Pod : Kubernetesオブジェクト、実行コンテナ、Kubernetesで作成および管理できるコンピューティングの最小展開単位.
  • Deployment : Kobernetesオブジェクト(それはポッドのセットをモニターします)、それらのポッドが走っていて、彼らが下っているならば、ポッドを再開することを確認してください.
  • Service : 実行中のコンテナ(POD)にアクセスする方法を提供するKubernetesオブジェクト.
  • Persistent Volume : Kuberneteオブジェクトは、クラスタ内のストレージの一部です.
  • Persistent Volume Claim : 永続ボリュームストレージの要求
  • Kubernetes Config file : 作成する別のオブジェクトについてKubernetesを指示するファイルです.これはYAMLの構文で書かれています.
  • 技術的には、あなたはDeployment それはPod MySQL Dockerイメージのコンテナを実行すると、Service これはPODへのアクセスを許可します.このpodはストレージを要求するPersistent Volume Claim ) ストレージリソースにPersistent Volume ).
    永続的なボリュームを静的または動的に作成することができます.このチュートリアルの次の段階では、静的に行う方法を学びます.
    このチュートリアルでは、スムーズに動作するようにインストールする必要があります.
  • あなたのマシンのHERE インストールする
  • ローカルKubernetesクラスターMinikube , クリックHERE minikubeをインストールするには
  • 必要に応じて、Dockerハブアカウントを作成できますHERE

  • 永続的なボリューム( PV )をビルドする
    まず、作業ディレクトリを作成して移動します.
    $ mkdir mysql-kube
    $ cd mysql-kube/
    
    YAMLファイル名mysql-pv.yaml , 次のように入力します.
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: mysql-pv
      labels:
        type: local
    spec:
      storageClassName: manual
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: "/mnt/data"
    
    ファイルを保存して閉じます.
    このYAMLファイルは、Kubernetesに適用されますPersistent Volume , MySQLデータベースサーバーPod . 永続的なボリュームは、podのライフサイクルに依存しません.これは、いつでも、ポッドがクラッシュまたは誤動作のために再開するということを意味します.

    永続的ボリュームクレーム( PVC )のビルド
    作業ディレクトリ中mysql-kube/ , ファイル名mysql-pvc.yaml , 次のように入力します.
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: mysql-pv-claim
    spec:
      storageClassName: manual
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 5Gi
    
    そこに、あなたが適用されたときにストレージを提供するファイルを作成したが、このファイルはPersistent Volume Claim これは、MySQLポッドがそのプロビジョニングされたストレージを要求するために使用されます.

    MySQL podの展開
    ここでは、ファイル名を作成しますmysql-deployment.yaml 同じディレクトリにmysql-kube/ . ファイルを作成し、以下のコードを実行します.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mysql
    spec:
      selector:
        matchLabels:
          app: mysql
      strategy:
        type: Recreate
      template:
        metadata:
          labels:
            app: mysql
        spec:
          containers:
            - image: mysql:8.0
              name: mysql
              env:
                - name: MYSQL_ROOT_PASSWORD
                  value: password
              ports:
                - containerPort: 3306
                  name: mysql
              volumeMounts:
                - name: mysql-persistent-storage
                  mountPath: /var/lib/mysql
          volumes:
            - name: mysql-persistent-storage
              persistentVolumeClaim:
                claimName: mysql-pv-claim
    
    このファイルは、MySQL Dockerイメージのコンテナを実行しているPODを管理するための展開オブジェクトを作成しますPersistent Volume Claim PODが要求するために使用するPersistent Volume .

    この配備ファイルを適用する前に、作成されるMySQLデータベースPODにアクセスする他のPODを許可するサービスオブジェクトを作成します.
    まだmysql-kube/ ディレクトリを作成するmysql-service.yaml 次のコードを実行します.
    apiVersion: v1
    kind: Service
    metadata:
      name: mysql
    spec:
      ports:
        - port: 3306
      selector:
        app: mysql
      clusterIP: None
    
    ファイルを保存し、Kubernetesクラスタが稼働していることを確認します.端末をオープンし、mysql-kube/ 以下を実行します.
    $ minikube start
    

    Minikube迅速にMacOS、Linux、およびWindows上のローカルKubernetesクラスタを設定します.
    では、設定したすべての設定ファイルを使いたいというKubernetesに教えてください.これらのコマンドをmysql-kube/ 以下の順番で

  • ステップ1 :永続的なボリュームを作成する
  • $ kubectl apply -f mysql-pv.yaml
    

  • ステップ2:永続的なボリュームクレームを作成する
  • $ kubectl apply -f mysql-pvc.yaml
    

  • ステップ3 :配備の作成
  • $ kubectl apply -f mysql-deployment.yaml
    

  • 手順4 :サービスの作成
  • $ kubectl apply -f mysql-service.yaml
    

    この一連のコマンドはPersistent Volume , エーPersistent Volume Claim , エーDeployment それはPod Aを走るcontainer MySQL DockerのイメージとService これは、そのpodへのアクセスを許可します.
    Kubernetesオブジェクトが正常に作成されたかどうかを確認します.

  • 展開
  • $ kubectl get deployments
    

  • ポッド
  • $ kubectl get pods
    

  • サービス
  • $ kubectl get services
    

    これまでのところ、これまでのところ、MySQLデータベースサーバーポッドにクライアントとして接続するMySQLコンテナを実行しているpodを作成するテストを実行しました
    $ kubectl run -it --rm --image=mysql:8.0 --restart=Never mysql-client -- mysql -h mysql -password="password"
    
    このコマンドは、MySQLコンテナを対話モードで実行します.これにより、コンテナの実行時にコマンドを実行できます.
    MySQLシェルが開き、新しいデータベース、新しいテーブル、テーブルにデータを挿入し、より多くのSQLコマンドを作成できます.


    結論
    これにより、Kubernetesオブジェクトを介してKubernetesクラスタ内のストレージの静的メソッドを使用してMySQLデータベースサーバーを展開する方法を学びました.
    また、対話型モードでコンテナーを実行するときに、SQLコマンドを実行することによって、その配備されたサーバーにクライアントを接続する方法をテストしました.
    あなたが質問、コメントがあるならば、ここで、または、私の上で手を伸ばすのを自由に感じてください;私は、答えるより幸せです.
    また近いうちに.