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 が失敗すると、コンテナは強制終了されます。

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

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

推薦する

ドメイン名を登録する際にURLの履歴に注目しましたか?

多くの場合、ウェブマスターはドメイン名を登録するときに、思いついたドメイン名をそのまま登録します。し...

Azureで提供されるSolarWindsデータベースパフォーマンス監視製品

最近、SolarWinds は、データベース パフォーマンス監視製品 (SolarWinds Dat...

Baiduの検索マーケティングコンセプトに関する考察

有料ランキングに触れたのが、百度検索に注目し始めたきっかけです。百度検索は開発以来、アカウント管理を...

国産CPUをベースにしたクラウドプラットフォーム上でコンテナ管理プラットフォームを構築するには? (パート1)

「ZTE事件」が拡大し続ける中、中国国民は自主管理可能な国産技術に大きな注目を寄せている。私の部署の...

優秀な SEO チームを作る方法

どの企業も、先見性があり、献身的で熱心な従業員で構成された完璧なインターネット マーケティング チー...

SaaS、IaaS、PaaS、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドに加えて、クラウドコンピューティングには以下のサブセクターもあります。

クラウド コンピューティングではさまざまな種類のサービスが利用できます。一般的なパブリック クラウド...

アリママ公式解釈:タオバオ不正行為の手数料を凍結する理由

A5 Webmaster Network(admin5.com)は11月22日、多くのTaobaoア...

推奨: kazila-weird merchant/Xen/年間30ドルの支払い/64Mメモリ/3Gハードディスク/50gトラフィック

kazila.com は Hostcat に何度も登場しています。この VPS 販売業者は 2008...

ウェブサイト運営に関するいくつかの考察

良いドメイン名はケーキの上のアイシングであり、良い運用はタイムリーな助けです。良いドメイン名がうまく...

モバイルインターネット時代のマーケティングにおける10の大きな変化

以前、私はWeChatでアンケートを実施し、以下のどれが一番ひどいかを全員に尋ねました。 1. イン...

優れたクラウド プラットフォームを構築するための 7 つのステップ

効率的なクラウド アーキテクチャは、突然現れるものではありません。代わりに、最適な運用環境は組織によ...

分析例: ウェブサイトが公開された日にスナップショットがある理由

ウェブサイトを公開した後にスナップショットを取得することは、多くのウェブマスターが夢見ていることです...

手頃な価格の有機野菜が天猫双十一に登場、アリババクラウドIoTが強力なツールに

今年の天猫ダブル11はオンラインからオフラインまで拡大し、良質な商品が引き続き供給されています。有機...

クラウドネイティブ時代において、金融テクノロジーの生産性はどのように向上するのでしょうか?

[51CTO.com からのオリジナル記事]この新しい段階において、金融業界はクラウド ネイティブを...