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

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

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

推薦する

インターネット大手がエンタープライズ市場に注目する理由

インターネット市場を最も単純かつ大まかに区分すると、消費者市場と企業市場に大別できます。前者は個人ユ...

海外の無料DNSサービス6選

DNS は、ドメイン ネーム システム (Domain Name System または Domain...

国家インターネット情報局が複数の恐喝ウェブサイトを調査し処罰

新華網、北京、9月13日(新華社)―中国サイバースペース管理局から記者が得た情報によると、最近、多数...

タオバオ12.12の新しいゲームプレイがウェブサイト運営にもたらす啓蒙について語る

今日、「Taobaoが12.12に新しいゲームプレイを開始、商人と消費者が主人公」という記事を見まし...

起業の地政学的理論を反駁する: 起業は究極的には人の問題である

最初は香港、次に上海、そして今度は広州で同様の疎外が起こっている。しかし、こうした議論は、無意味な口...

マイクロソフトの商用Surfaceは教育業界のデジタル化をサポートします

現在の教育業界のユーザーは、もはや「教育と学習」という単調なモデルにとらわれているわけではありません...

Baidu ウェブマスターメッセージリマインダーツールが信頼できるかどうかを議論する

昨日、Baidu は多くのアップデートを行い、多くの友人から、自分の Web サイトがダウングレード...

UCloud が BFSU Online と提携し、教育の情報化を強化

習近平総書記は「誰もが学び、どこでも学び、いつでも学べる」学習社会の構築を提案した。同時に、第19回...

Kubernetes 1.24 では dockershim のサポートが終了します

Kubernetes コンテナ オーケストレーション プラットフォームの最新バージョンでは、Dock...

digitalocean-2g メモリ/サンフランシスコ/簡単な評価

Digitalocean は、現時点では価格性能比の点ではおそらく最高の 1 つですが、もちろんこれ...

#100Gddos 保護-spartanhost-E3-1230v3/16g メモリ/1T ハードディスク/G ポート/シアトル

私が Spartanhost を推奨する理由は単純です。超安価な DDoS 保護、つまり基本的に無料...

buyvm-VPS 簡単な紹介

Buyvm は 2010 年 4 月に設立されたカナダの企業ですが、そのサーバーはすべて米国にあり、...

中国モバイルインターネット秋季レポート

2018年9月現在、中国のモバイルインターネットの月間アクティブユーザー数は11億6,700万人に達...

企業がソフト記事マーケティングを実施する場合、どのような詳細を考慮すべきでしょうか?

ご存知のとおり、ソフトテキストマーケティングの役割と効果は、企業価値の向上、企業ブランドのアピール、...