😎

k8s Deploymentのマニフェスト

2021/07/04に公開

はじめに

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をして置くために必要な設定。
また、ラベルの付け方は公式が推奨している書き方があるため、そちらを参考にするといい。
https://kubernetes.io/ja/docs/concepts/overview/working-with-objects/common-labels/

最後に

まだまだ考慮する内容があるのですが(podの安全な停止等)、また学習の進捗が進み次第更新していきます。何かご指摘などございましたら、コメントのほどよろしくお願いいたします。

参考記事

https://www.amazon.co.jp/dp/B08FZX8PYW/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1
https://www.amazon.co.jp/dp/B087PTX51W/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1
https://kubernetes.io/ja/docs/concepts/workloads/controllers/deployment/

Discussion