株式会社ヴァンデミックシステム

Blog

<スポンサーリンク>

参考にさせてもらったもの

Kubernetes完全ガイドをそのままやらせていただきました!

Kubernetesのヘルスチェック

  • Liveness Probe⇨Podが動作しているか確認し、NGであればPodの再起動をする
  • Readiness Probe⇨Podが動作しているか確認し、NGであっても再起動しない
  • LoadBarancerサービスのヘルスチェックはICMPのみ
  • チェック方法は3種類で、exce(コマンドでのリターンコード)、httpGet(ステータスコード)、tcpSocket(TCPセッション)

マニュフェストファイル作成

sample-healthcheck.yaml
apiVersion  V1の
種類 ポッド
メタデータ
   サンプルヘルス・
  ラベル
    アプリ サンプルアプリの
仕様
  コンテナ
    -  名前 nginxの容器の
      イメージ nginxの:1.12 
      ポート
      -  containerPort  80 
      livenessProbe 
        HTTPGET 
          パス /インデックス。 html 
          ポート 80 
          スキーム HTTP 
        タイムアウト秒 1
        successThreshold  1 
        failureThreshold  2 
        initialDelaySeconds  5 
        periodSeconds  3 
      readinessProbe 
        exec 
          command  [ " ls"  " /usr/share/nginx/html/50x.html" ] 
        timeoutSeconds  1 
        successThreshold  2 
        failureThreshold  1 
        initialDelaySeconds  5 
        periodSeconds  3

展開(Readiness Probeも一緒にされる見たい)

k apply -f sample-healthcheck.yaml

ポッドに設定されたProbeの確認

〜/ Desktop❯❯❯kはポッドのサンプル-ヘルスチェックを記述します| egrep「Liveness 
| Readness」
    活性:http-get http://:80 / index.html delay = 5s timeout 
= 1s period = 3s#success = 1#failure = 2
〜/デスクトップ❯❯❯

インデックスファイルを削除してわざとヘルスチェックを失敗させる

k exec -it sample-liveness rm /usr/share/nginx/html/index.html

別窓で見てみるとRESTARTが読み込まされている

〜/ Desktop❯❯❯k get pods sample-liveness --watch
名前READYステータス再起動年齢
サンプルの生存度1/1ランニング1 4分14秒
名前READYステータス再起動年齢
サンプルの生存度1/1ランニング2 4分26秒
サンプルの生存度1/1ランニング3 5分15秒

ヘルスチェックの履歴はdescribeで見れる

kは、ポッドのサンプルの活性を説明します
名前:sample-liveness
名前空間:デフォルト
優先度:0
ノード:ip-172-16-139-45.us-east-1.compute.internal / 172.16.139.45
開始時間:2019年11月18日月曜日17:09:46 +0900
ラベル:app = sample-app
アノテーション:kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion": "v1"、 "kind": "Pod"、 
"metadata":{"annotations":{}、 "labels":{"app": "sample-app"}、 
"name": " sample-liveness "、" namespace ":" default "} ...
              kubernetes.io/psp:eks.privileged
ステータス:実行中
IP:172.16.143.102
コンテナ:
  nginx-container:
    コンテナID:docker:// 
3ef5c4f01ce5913e474af0c67d8d38added4f436f98a3a9cb60c1b2341796994
    画像:nginx:1.12
    イメージID:docker-pullable:// nginx @ sha256
:72daaf46f11cc753c4eab981cbf869919bd1fee3d2170a2adeac12400f494728
    ポート:80 / TCP
    ホストポート:0 / TCP
    状態:実行中
      開始:月、2019年11月18日17:16:39 +0900
    最終状態:終了
      理由:完了
      終了コード:0
      開始:月、2019年11月18日17:15:33 +0900
      終了:2019年11月18日月曜日17:15:48 +0900
    準備完了:真
    再起動カウント:5
    活性:http-get http://:80 / index.html delay = 5s timeout 
= 1s period = 3s#success = 1#failure = 2
    環境:<なし>
    マウント:
      /var/run/secrets/kubernetes.io/serviceaccount from 
default-token-hb7gs(ro)
条件:
  タイプステータス
  初期化されたTrue
  レディトゥルー
  ContainersReady True
  PodScheduled True
ボリューム:
  default-token-hb7gs:
    タイプ:シークレット(シークレットによって作成されたボリューム)
    SecretName:default-token-hb7gs
    オプション:false
QoSクラス:BestEffort
ノードセレクター:<なし>
許容値:node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
イベント:
  タイプ理由メッセージからの年齢
  ---- ------ ---- ---- -------
  通常のスケジュール7m36s default-schedulerは、デフォルト/サンプルライブネスを
ip-172-16-139-45.us-east-1.compute.internalに正常に割り当てました
  通常開始2分22秒(x4は7分35秒)kubelet、
ip-172-16-139-45.us-east-1.compute.internal開始コンテナーnginx-container
  通常プル109s(x5 over 7m35s)kubelet、
ip-172-16-139-45.us-east-1.compute.internal
コンテナイメージ「nginx:1.12」はすでにマシンに存在します
  通常作成109秒(x5 over 7m35s)kubelet、
ip-172-16-139-45.us-east-1.compute.internal
作成されたコンテナーnginx-container
  警告異常な109秒(x8 over 4m22s)kubelet、
ip-172-16-139-45.us-east-1.compute.internal活性プローブが失敗しました
:HTTPプローブがステータスコードで失敗しました:404
  Normal Killing 109s(x4 over 4m19s)kubelet、
ip-172-16-139-45.us-east-1.compute.internal Container nginx-container 
failed liveness probe、will be restarted

<スポンサーリンク>

コメントを残す

Allowed tags:  you may use these HTML tags and attributes: <a href="">, <strong>, <em>, <h1>, <h2>, <h3>
Please note:  all comments go through moderation.

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)