📚

Kubernetes初学の書Part4

2023/01/03に公開

はじめに

Kubernetesをはじめて学習する人へ向けて、基本概念の説明からアプリケーションを作成していく過程について記載する。

前回のおさらい

Part3

CLIツールkubectlについて記載した。
https://zenn.dev/higashi10/articles/2dc128dc6f2e85

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