😎
k8s Deploymentのマニフェスト
はじめに
k8sのオブジェクトである「Deployment」のマニフェストのメモをまとめていく。
可能な限り、コピペで使用できる状態にしておく。
また、今回は「Pod」「ReplicaSet」の包括したマニフェストファイルを作成する
作成する構成図
マニフェスト
apiVersion: apps/v1
kind: Deployment
metadata:
name: sample-app # Deploymentの名前
labels:
app: sample-app # Deploymentのラベル
spec: # Deploymentの詳細定義
replicas: 2 # ReplicaSetの指定
selector:
matchLabels: # Deploymentが管理するPodのラベルを定義
app: sample-app
template: # Deploymentを通してPodを定義する場所(Podテンプレート)
metadata:
labels: # Podのラベル
app: sample-app
spec:
containers:
- name: sample-app # Podのコンテナ名
image: nginx:1.16 # 取得したいコンテナイメージ
imagePullPolicy: Always # コンテナを起動する度に、コンテナイメージレジストリに問い合わせて起動する
ports: # Podのポート番号
- containerPort: 8080
readinessProbe: # Pod内のコンテナが正常に動作しているかの確認。異常の時は、Podを再起動する
httpGet:
port: 8080
path: /health
initialDelaySeconds: 15 # 起動後、15秒後からreadinessProbeを開始
periodSeconds: 30 # 30秒間間隔でチェックを行う
livenessProbe: # Podがリクエストを受け付けることができるかの確認。異常の時は、リクエストを受け付けない
httpGet:
port: 8080
path: /health
initialDelaySeconds: 30 # 起動後、30秒後からlivenessProbeを開始
periodSeconds: 30 # 30秒間間隔でチェックを行う
resources:
requests: # 使用するリソースの下限の指定。空きのスペックにリソースがない場合は、作成されない
cpu: 100m
memory: 512Mi
limits: # 使用するリソースの上限の指定。
cpu: 250m
memory: 768Mi
文言解説
ラベル
Deploymentから見た時に、対象となるPodをして置くために必要な設定。
また、ラベルの付け方は公式が推奨している書き方があるため、そちらを参考にするといい。
最後に
まだまだ考慮する内容があるのですが(podの安全な停止等)、また学習の進捗が進み次第更新していきます。何かご指摘などございましたら、コメントのほどよろしくお願いいたします。
参考記事
Discussion