ホームページ Java &#&チュートリアル Kubernetes サービス -- 単一インスタンスのステートフル サービスを実行する簡単な例

Kubernetes サービス -- 単一インスタンスのステートフル サービスを実行する簡単な例

Jul 22, 2017 pm 03:21 PM
kubernetes

目標

環境にPVを作成する
MySQlデプロイメントを作成する
DNS名を使用してクラスター内の他のポッドにMySQLを公開する

始める前に

Kubernetesクラスターとクラスターに接続できるkubectlコマンドラインツールが必要です。クラスターがない場合は、Minikube を使用してクラスターを作成できます。
データ保存用のPV(Persistent Volume)を作成します。ここをクリックして、サポートされている PV タイプを表示します。このガイドでは GCEPersistentDisk を使用して説明しますが、どの PV タイプでも正常に動作します。 GCEPersistentDisk は Google Compute Engine (GCE) 上でのみ動作します。

環境内にディスクを作成します

Google Compute Engine で、次のコマンドを実行します:

gcloud compute disks create --size=20GB mysql-disk
ログイン後にコピー

次に、作成したばかりの mysql ディスクを指す PV を作成します。以下は、PV を作成するための構成ファイルで、上記の GCE ディスクを指します。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
spec:
  capacity:
    storage: 20Gi
  accessModes:- ReadWriteOnce
  gcePersistentDisk:
    pdName: mysql-disk
    fsType: ext4
ログイン後にコピー

行 pdName: mysql-disk は、上記の GCE 環境によって作成されたディスクの名前と一致することに注意してください。他の環境で PV を作成する場合は、永続ボリュームで詳細を確認してください。
PV の作成:

kubectl create -f https://k8s.io/docs/tasks/run-application/gce-volume.yaml
ログイン後にコピー

MySQL のデプロイ

Kubernetes デプロイメントを通じてステートフル サービスを作成し、PVC (Persistent VolumeClaim) を使用して既存のサービスに接続できますPV。たとえば、次の YAML ファイルは、MySQL を実行し、PVC を使用するデプロイメントを記述します。このファイルは、/var/lib/mysql にマウントされるボリュームを定義し、20G のボリューム サイズを必要とする PVC を作成します。
注: パスワードは YAML 構成ファイルで定義されていますが、安全ではありません。より安全なソリューションについては、Kubernetes Secrets を確認してください。

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:- port: 3306
  selector:
    app: mysql
  clusterIP: None---apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  accessModes:- ReadWriteOnce
  resources:
    requests:
      storage: 20Gi---apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: mysql
spec:
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:      - image: mysql:5.6name: mysql
        env:
          # Use secret in real usage- 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
ログイン後にコピー

1. YAML ファイルのコンテンツをデプロイします。

kubectl create -f https://k8s.io/docs/tasks/run-application/mysql-deployment.yaml
ログイン後にコピー

2. 導入情報を表示します。

kubectl describe deployment mysql

 Name:                 mysql
 Namespace:            default
 CreationTimestamp:    Tue, 01 Nov 2016 11:18:45 -0700
 Labels:               app=mysql
 Selector:             app=mysql
 Replicas:             1 updated | 1 total | 0 available | 1 unavailable
 StrategyType:         Recreate
 MinReadySeconds:      0
 OldReplicaSets:       <none>
 NewReplicaSet:        mysql-63082529 (1/1 replicas created)
 Events:
   FirstSeen    LastSeen    Count    From                SubobjectPath    Type        Reason            Message   ---------    --------    -----    ----                -------------    --------    ------            -------
   33s          33s         1        {deployment-controller }             Normal      ScalingReplicaSet Scaled up replica set mysql-63082529 to 1
ログイン後にコピー

3. デプロイメントによって作成されたポッドを表示します。

kubectl get pods -l app=mysql

 NAME                   READY     STATUS    RESTARTS   AGE
 mysql-63082529-2z3ki   1/1       Running   0          3m
ログイン後にコピー

4. PVをチェック。

 kubectl describe pv mysql-pv

 Name:            mysql-pv
 Labels:          <none>
 Status:          Bound
 Claim:           default/mysql-pv-claim
 Reclaim Policy:  Retain
 Access Modes:    RWO
 Capacity:        20Gi
 Message:    
 Source:
     Type:        GCEPersistentDisk (a Persistent Disk resource in Google Compute Engine)
     PDName:      mysql-disk
     FSType:      ext4
     Partition:   0 ReadOnly:    false
 No events.
ログイン後にコピー

5. PVCを確認します。

 kubectl describe pvc mysql-pv-claim

 Name:         mysql-pv-claim
 Namespace:    default
 Status:       Bound
 Volume:       mysql-pv
 Labels:       <none>
 Capacity:     20Gi
 Access Modes: RWO
 No events.
ログイン後にコピー

MySQL インスタンスへのアクセス

前の YAML ファイルは、クラスター内の他の Pod がデータベースにアクセスできるようにするサービスを作成します。サービス オプションclusterIP:Noneを使用すると、サービスのDNS名がポッドのIPアドレスに直接解決されます。これは、サービスに Pod が 1 つしかなく、Pod の数を増やす予定がない場合に使用するのに最適な方法です。
Mysql クライアントを実行して Mysql サービスに接続します:

kubectl run -it --rm --image=mysql:5.6 mysql-client -- mysql -h <pod-ip> -ppassword
ログイン後にコピー

上記のコマンドはクラスター内に新しいポッドを作成します。これは Mysql クライアントを実行し、上記のサービスの Mysql サーバーに接続されます。正常に接続された場合は、ステートフル MySQL データベースが正常に起動して実行されていることを意味します。

Waiting for pod default/mysql-client-274442439-zyp6i to be running, status is Pending, pod ready: falseIf you don't see a command prompt, try pressing enter.mysql>
ログイン後にコピー

Update

デプロイメントのイメージやその他の部分の更新は、通常どおり kubectl apply コマンドを使用して行うこともできます。ステートフル アプリケーションを使用するときに注意すべき点がいくつかあります:

アプリケーションをスケーリングしないでください。このアプリケーションはシングルトン アプリケーション専用です。次の PV は 1 つの Pod にのみマッピングできます。クラスター化されたステートフル アプリケーションについては、StatefulSet のドキュメントを確認してください。
デプロイメントの YAML 構成ドキュメントで戦略を使用: type: Recreate します。これにより、Kubernetes にローリング アップデートを使用しないよう指示されます。ローリング アップデートは機能しないため、複数の Pod が同時に実行されることはありません。 Recreate 戦略では、更新された構成で新しい Pod を作成するときに、以前の Pod が削除されます。

デプロイメントの削除

デプロイメントオブジェクトを名前で削除します:

kubectl delete deployment,svc mysql
kubectl delete pvc mysql-pv-claim
kubectl delete pv mysql-pv
ログイン後にコピー

另外,如果你使用的是GCE disk,还需要删除对应的disk:

gcloud compute disks delete mysql-disk
ログイン後にコピー

 

文章转自:

以上がKubernetes サービス -- 単一インスタンスのステートフル サービスを実行する簡単な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

スタンバイ時の接続ステータス: 切断、理由: NIC 準拠 スタンバイ時の接続ステータス: 切断、理由: NIC 準拠 Feb 19, 2024 pm 03:15 PM

「イベント ログ メッセージの接続ステータスには、スタンバイ: NIC 準拠により切断されました。というメッセージが表示されます。これは、システムがスタンバイ モードで、ネットワーク インターフェイス カード (NIC) が切断されていることを意味します。これは通常、ネットワークの問題ですが、他の問題が発生する可能性もあります。 「スタンバイ接続が切断される原因は何ですか?」 スタンバイ接続が切断される原因は何ですか? NIC に準拠していますか? Windows イベント ビューアに「ConnectivityStatusinStandby:DisConnected,Reason:NICCompliance」メッセージが表示された場合は、NIC またはネットワーク インターフェイス コントローラーに問題がある可能性があることを示しています。この状況は通常、

Python での SVM の例 Python での SVM の例 Jun 11, 2023 pm 08:42 PM

Python のサポート ベクター マシン (SVM) は、分類および回帰の問題を解決するために使用できる強力な教師あり学習アルゴリズムです。 SVM は、高次元データや非線形問題を処理する場合に優れたパフォーマンスを発揮し、データ マイニング、画像分類、テキスト分類、バイオインフォマティクスなどの分野で広く使用されています。この記事では、Python で分類に SVM を使用する例を紹介します。 scikit-learn ライブラリの SVM モデルを使用します。

モモステータスの設定方法 モモステータスの設定方法 Mar 01, 2024 pm 12:10 PM

有名なソーシャル プラットフォームである Momo は、ユーザーに日常の社会的交流のための豊富な機能サービスを提供します。 Momo では、ユーザーは自分の生活状況を簡単に共有したり、友達を作ったり、チャットしたりすることができます。その中でも、設定ステータス機能は、ユーザーが現在の気分やステータスを他の人に示すことで、より多くの人々の注目とコミュニケーションを集めることができます。では、モモのステータスをどのように設定すればよいのでしょうか? 以下に詳しく説明します。 Momo にステータスを設定するにはどうすればよいですか? 1. Momo を開き、右下隅にある [More] をクリックし、[Daily Status] を見つけてクリックします。 2. ステータスを選択します。 3. 設定状況が表示されます。

サーバーの状態を確認する方法 サーバーの状態を確認する方法 Oct 09, 2023 am 10:10 AM

サーバーのステータスを表示する方法には、コマンド ライン ツール、グラフィカル インターフェイス ツール、監視ツール、ログ ファイル、リモート管理ツールなどがあります。詳細な紹介: 1. コマンド ライン ツールを使用します。Linux または Unix サーバーでは、コマンド ライン ツールを使用してサーバーのステータスを表示できます。2. グラフィカル インターフェイス ツールを使用します。グラフィカル インターフェイスを備えたサーバー オペレーティング システムの場合は、グラフィックス ツールを使用できます。システムによって提供されるインターフェース ツールを使用してサーバーの状態を表示する; 3. 監視ツールを使用する 特別な監視ツールを使用して、サーバーの状態をリアルタイムで監視することができます。

Android スマートフォンの WhatsApp にオフラインで表示する方法 Android スマートフォンの WhatsApp にオフラインで表示する方法 Jul 14, 2023 am 08:21 AM

「オフライン」に見せたいですか、それとも WhatsApp で自分の現在のステータスを友達と共有したくないですか?これを行うためのシンプルだが賢いトリックがあります。 WhatsApp の設定を調整して、現在のステータス (オフラインまたは最後に見た状態) が友達や他の人に表示されないようにすることができます。 WhatsAppのステータスバーにオフラインステータスを表示するにはどうすればよいですか?これは非常にシンプルで合理的なプロセスです。したがって、今すぐ以下の手順に従ってください。ステップ 1 – 携帯電話で WhatsApp を開きます。ステップ 2 – [⋮] をタップし、[設定] を開くことを選択します。ステップ 3 – プライバシー設定を開いてアクセスします。ステップ 4 – プライバシー ページで、[最終閲覧日とオンライン] 設定を開いてアクセスします。ステップ 5 – 「できる人」を変更します。

go-zero と Kubernetes の実践: 高可用性、高パフォーマンス、高スケーラビリティを備えたコンテナ化されたマイクロサービス アーキテクチャの構築 go-zero と Kubernetes の実践: 高可用性、高パフォーマンス、高スケーラビリティを備えたコンテナ化されたマイクロサービス アーキテクチャの構築 Jun 22, 2023 am 09:26 AM

インターネットの規模が拡大し、ユーザーのニーズが高まるにつれ、マイクロサービスアーキテクチャの利点がますます注目されています。その後、高可用性、高パフォーマンス、高スケーラビリティなどのニーズをより適切に満たすことができる、コンテナ化されたマイクロサービス アーキテクチャが特に重要になってきました。この傾向の下、go-zero と Kubernetes が最も人気のあるコンテナ化されたマイクロサービス フレームワークになりました。この記事では、go-zero フレームワークと Kubernetes コンテナ オーケストレーション ツールを使用して高可用性、高パフォーマンスを構築する方法を紹介します。

Javaスレッドの5つの状態と状態遷移ルール​​の詳細説明 Javaスレッドの5つの状態と状態遷移ルール​​の詳細説明 Feb 19, 2024 pm 05:03 PM

Java スレッドの 5 つの状態とその変換ルールについての深い理解 1. スレッドの 5 つの状態の概要 Java では、スレッドのライフサイクルは、新規状態 (NEW)、準備完了状態を含む 5 つの異なる状態に分割できます。 (RUNNABLE)、実行状態(RUNNING)、閉塞状態(BLOCKED)、終了状態(TERMINATED)。新しい状態 (NEW): スレッド オブジェクトが作成されると、そのオブジェクトは新しい状態になります。この時点で、スレッド オブジェクトはタスクを実行するのに十分なリソースを割り当てています。

Beego の Docker と Kubernetes を使用した本番環境のデプロイと管理 Beego の Docker と Kubernetes を使用した本番環境のデプロイと管理 Jun 23, 2023 am 08:58 AM

インターネットの急速な発展に伴い、ますます多くの企業がアプリケーションをクラウド プラットフォームに移行し始めています。 Docker と Kubernetes は、クラウド プラットフォームでのアプリケーションの展開と管理のための 2 つの非常に人気のある強力なツールになりました。 BeegoはGolangで開発されたWebフレームワークで、HTTPルーティング、MVC階層化、ロギング、構成管理、セッション管理などの豊富な機能を提供します。この記事では、Docker と Kub の使用方法について説明します。

See all articles