Kubernetesのフック関数の詳細な説明と例

Kubernetesのフック関数の詳細な説明と例

1. 概要

フック関数は、自身のライフサイクル内でイベントを感知し、対応するタイミングになるとユーザーが指定したプログラム コードを実行します。

Kubernetes は、メイン コンテナの起動後と停止前に 2 つのフック関数を提供します。

  • post start: コンテナが作成された後に実行されます。失敗した場合は、コンテナが再起動されます。
  • pre stop: コンテナが終了する前に実行されます。実行が完了すると、コンテナは正常に終了します。完了するまで、コンテナを削除する操作はブロックされます。

フック ハンドラーは、次の 3 つの方法でアクションの定義をサポートします。

  • コマンドを実行: コンテナ内でコマンドを 1 回実行します。
 …… lifecycle: postStart: exec: command: - cat - /tmp/healthy ……
  • TCPSocket: 現在のコンテナ内の指定されたソケットにアクセスしようとします。
 …… lifecycle: postStart: tcpSocket: port: 8080 ……

  • HTTPGet: 現在のコンテナ内のURLへのHTTPリクエストを開始する
…… lifecycle: postStart: httpGet: path: / #URI地址port: 80 #端口号host: 192.168.5.3 #主机地址scheme: HTTP #支持的协议,http或者https ……

2. フック関数の使い方を説明するために、execメソッドを例に挙げます。

次の内容を含む pod-hook-exec.yaml ファイルを作成します。

 apiVersion: v1 kind: Pod metadata: name: pod-hook-exec namespace: dev spec: containers: - name: main-container image: nginx ports: - name: nginx-port containerPort: 80 lifecycle: postStart: exec: # 在容器启动的时候执行一个命令,修改掉nginx的默认首页内容command: ["/bin/sh", "-c", "echo postStart... > /usr/share/nginx/html/index.html"] preStop: exec: # 在容器停止之前停止nginx服务command: ["/usr/sbin/nginx","-s","quit"]

 # 创建pod [root@k8s-master01 ~]# kubectl create -f pod-hook-exec.yaml pod/pod-hook-exec created # 查看pod [root@k8s-master01 ~]# kubectl get pods pod-hook-exec -n dev -o wide NAME READY STATUS RESTARTS AGE IP NODE pod-hook-exec 1/1 Running 0 29s 172.17.169.187 k8s-node2 # 访问pod [root@k8s-master01 ~]# curl 172.17.169.187 postStart...

効果:

3. まとめ

  • PostStart フックはコンテナの作成直後に呼び出され、PostStart とコンテナの ENTRYPOINT は非同期に実行され、それらの間の順序は保証されません。
  • PreStop フックは、コンテナが Terminated 状態になるとすぐに呼び出されます (つまり、ジョブ タスクの場合は、実行後にステータスが完了するため、PreStop フックはトリガーされません)。同時に、PreStop は同期的にブロックされ、PreStop が実行された後にのみ Pod 削除操作が実行されます。
  • PostStart はコンテナが実行状態になるのをブロックします。
  • PreStop はコンテナの削除をブロックしますが、terminationGracePeriodSeconds 時間が経過すると、コンテナは強制的に削除されます。
  • PreStop または PostStart が失敗すると、コンテナは強制終了されます。

<<:  高性能でクラウドネイティブなレイクウェアハウス統合ストレージアーキテクチャの探求

>>:  ビジネス運営におけるクラウドコンピューティングの可能性

推薦する

dedipathロサンゼルスデータセンターのKVMシリーズVPSの簡単なレビューで、dedipathのVPSがいかに優れているかを説明します。

Dedipath は誰もがよく知っている企業です。同社はニューヨーク、ロサンゼルス、ラスベガス、ジャ...

Rushmail: 企業のマーケティングデータを機密に保つにはどうすればいいですか?一括メールプラットフォームの操作ログの分析

月給5,000~50,000のこれらのプロジェクトはあなたの将来ですインターネット時代の発展に伴い、...

企業がハイブリッド クラウド戦略を採用する必要があるのはなぜですか?

クラウドに移行する企業は、パブリック クラウドとプライベート クラウドのどちらを選択するかというジレ...

アリババクラウドが「ゼロカーボンクラウド」プランを発表

5月28日、2021 Alibaba Cloud Summitにおいて、Alibaba Cloud ...

ロングテールキーワードを簡単に選択するための4つのヒント

優れたロングテールキーワードがウェブサイトにもたらすメリットについては、誰もがよく知っています。ウェ...

ソフトウェア定義アーキテクチャによりクラウドアクセスのネットワーク最適化が可能

クラウド コンピューティングが業界にもたらす大きな変化や、クラウド コンピューティング テクノロジー...

クラウド市場ランキングの新たな視点:Amazon Web Services は中国のパブリッククラウド市場で第 2 位にランクイン

[51CTO.comより引用]毎年、大手研究機関が発表するクラウドコンピューティングの市場シェアは、...

justhost: 中国ルーティングの改善、月額 1.45 ドル、帯域幅 200M、トラフィック無制限

Justhost は、ロシアの DataLine データセンターのルーティングが大幅に最適化され、当...

inet.ws はどうですか?米国中部のシカゴデータセンターにおけるVPS評価

inet.ws は、米国中部のシカゴで VPS ビジネスを展開しています。KVM 仮想化、純粋な S...

検索エンジンにおけるフレンドリーリンクの割合についての簡単な説明

フレンドリー リンクは、SEO の観点から見て高品質な外部リンクであり、Web サイトの SEO に...

不自然なリンクが Google ペンギンを生き延びる方法

Google は 4 月 24 日にペンギン アルゴリズムのアップデートを発表し、多くのウェブサイト...

金融グレードのプロフェッショナル クラウド サービスである Ping An Cloud は、保険業界が安心してクラウドに移行できるよう支援します。

【平安クラウド金融業界ソリューション】 [51CTO.comからのオリジナル記事] 保険業界は伝統的...

百度、今日頭条、広東通など5大チャンネルの詳しい説明

チャネルに精通しているということは、宣伝する製品に適したチャネルを選択できるかどうかを意味します。ま...

ファーストレベルドメインブログの権威を高める方法

2013 年の新しい Baidu アルゴリズムと新たな課題に直面して、どのように最適化すればよいので...

マルチクラウド アプリケーションを構築するための 4 つのヒント

一般的に、マルチクラウドに関する議論を推進する力は 2 つあります。組織が必要とするクラウド コンピ...