kubernetes入門 - Part3 - Kubernetesの基本4リソース

# イメージ

このイメージをすれば概要はだいたい分かります

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559029/49fb597c-6b6a-4906-a211-713422df5e7a.png)

# 基本の４つのリソース
| 項目        | 概要             | 構成                              | 目的                                                   |
|-------------|------------------|-----------------------------------|--------------------------------------------------------|
| Pod         | 最小単位         | 1つ以上のコンテナで構成          | 同一ノードで動作するアプリの管理                      |
| ReplicaSet  | クラスタ         | 1つ以上のPodで構成               | 信頼性の確保                                           |
| Deployment  | デプロイ単位     | 1つ以上のReplicaSetで構成        | コンテナのバージョンアップ、デプロイ時のダウンタイム制御 |
| Service     | 外部からの接続単位 | 1つ以上のReplicaSetで構成        | ロードバランシングなど外部からの接続を実現           |

# yamlのテンプレート出力コマンド

一度 --dry-run -o yaml で雛形を出したら、それを元に編集して使いまわせます。
| リソース      | コマンド                                                                                                                                                                                                                                       | 備考                                                 |
|--------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------|
| Pod          | `kubectl run my-pod --image=nginx --restart=Never --dry-run=client -o yaml`                                                                                                                                                                     |                                                      |
| Deployment   | `kubectl create deployment my-app --image=nginx --dry-run=client -o yaml`                                                                                                                                                                       | `--dry-run=client` は「実際にはクラスタに反映しない」の意味 |
| Service      | `kubectl expose deployment my-app --port=80 --target-port=80 --type=ClusterIP --dry-run=client -o yaml`                                                                                                                                        |                                                      |
| ConfigMap    | `kubectl create configmap my-config --from-literal=key=val --dry-run=client -o yaml`                                                                                                                                                           |                                                      |
| Secret       | `kubectl create secret generic my-secret --from-literal=key=val --dry-run=client -o yaml`                                                                                                                                                      |                                                      |
| ReplicaSet   | `kubectl create` で Pod をベースに作成 → 手動で書き換える<br>`kubectl run my-rs-pod --image=nginx --restart=Never --dry-run=client -o yaml > my-replicaset.yaml`<br>・`kind: Pod` → `kind: ReplicaSet`<br>・`metadata.name`, `spec.template`, `spec.replicas` を追加<br>・`spec.selector` を手動で記述する必要あり | ReplicaSet 用のコマンドは無い                        |