📚
Kubernetes初学の書Part4
はじめに
Kubernetesをはじめて学習する人へ向けて、基本概念の説明からアプリケーションを作成していく過程について記載する。
前回のおさらい
Part3
CLIツールkubectlについて記載した。
Part4での説明内容
- CLIツールkubectlについて
- Server-side apply
- Podの再起動(rollout restart)
- リソースの状態のチェックと待機(wait)
CLIツールkubectlについて
kubectlの概要についてはこちらから確認できる。
Server-side apply
Kubernetesを複数ユーザやCICDツールで管理するとき、同時に同一のフィールドを変更すると競合してしまうことがある。この問題を解決するために、フィールドを変更したコンポーネント(kubectlやコンポーネント名)を記録する機能とサーバ再度側で差分計算を行う機能が導入されている。
# Server-side applyを有効化してマニュフェストの作成
$ kubectl apply -f nginx-container.yml --server-side
# イメージの更新
$ kubectl set image pod sample-pod nginx-container=nginx:1.7
# Server-side applyを有効化してマニュフェストの適用
$ kubectl apply -f nginx-container.yml --server-side
コンフリクトする様子
Podの再起動(rollout restart)
Deploymentなどのリソースに紐づいている全てのPodは再起動できる。Podの起動時の処理を再実行したい場合やSecretリソースで参照されている環境変数を更新したい場合に利用する。ただし、Pod単体に対して実行することができない。
# リソースの作成
$ kubectl apply -f sample-deployment.yaml
$ kubectl apply -f sample-pod.yaml
# Deplpoymentリソースの全てのPodをリスタート
$ kubectl rollout restart deployment sample-deployment
リソースの状態のチェックと待機(wait)
kubectl wait
リソースの状態を検知し、意図するリソースの状態まで待機する。
--for(オプション)
想定する状態を指定するオプション
--timeout
指定する時間まで待機するオプション
例
# sample-podが正常に起動する(Ready状態になる)まで待機する
kubectl wait --for=condition=Ready pod/sample-pod
# sample-podが正常に起動する(Ready状態になる)まで5秒待機する
kubectl wait --for=condition=Ready pod/sample-pod --timeout=5s
Discussion