見出し画像

k8sのアウトプット

本を読んで自分の言葉でまとめた部分を一部(本丸写の部分は除いています)アウトプットしておきます。マークダウンで書いています。コピペして自分の環境で見てください!

----- 以下メモ -----

# kubectl

- コンテナ確認

kubectl getはpod以外の取得にも使われる

```shell
kubectl get pods
kubectl get services

# Podの詳細確認
kubectl get pods ポッド名 -o yaml
```

- ログ確認

```shell
kubectl logs mynginx
```

- Pod削除

````shell
kubectl delete pod mynginx
````

- マニフェスト展開
```shell
kubectl apply -f マニフェストファイル名
```

- Pod削除

```shell
kubectl delete -f マニフェストファイル名
```

# k8sのネットワーク

※主要なもののみまとめてます。

- **ClusterIP** クラスタ内のポッド間を接続するためのサービス
- クラスタ外に対してアクセス手段は提供していない→クラスタ内での通信にしか利用できない
- Podが壊れて再作成されても新しいPodにアクセスできる
- 複数のPodが展開されている際に処理を分散できる
- 配下のポッド群を束ねるVirtual IPのようなもの

- **NodePort** 外部からのアクセスを受け付けるサービス
- Dockerホストのポートフォワーディングのようなイメージ
- 内部でClusterIPを使っているのでサービスを外部に公開しつつ内部の別ポッドから通信を行うことも可能

- **LoadBalancer** NodePortの拡張版 クラウドで事前に予約されたIPアドレスのプールからIPをインスタンスなどの機能に割り振る機能を利用するためのサービス
- 全てのk8sクラスタが使えるわけではないよ

# デプロイメントリソースについて

- ポッドとサービスを使ってアプリケーションをk8s上で動かすことができるが実運用場面では**デプロイメント**というリソースを使うのが一般的
- デプロイメントは内部にレプリカセットというリソースを持っておりポッドリソースという階層構造になっている
- **デプロイメント**の中に**レプリカセット**がありその中に**ポッド**がある
- **レプリカセット** 水平スケールや自動復旧機能を担当
- **デプロイメント** ポッドのアップグレードを担当

# バージョンアップについて

- **ロールアウト** どうやってポッドをおきかえていくかというルール
- **ロールバック** 切り戻し

- 手順

1. アプリケーション書き換え
2. docker-compose再ビルド
3. docker-hubへpush
4. k8sマニフェスト書き換え
5. マニフェスト適用

- 適用直後は前のバージョンのものと最新のものが混ざって出てくる
- マニフェストのstrategyのrollingUpdateという箇所で挙動が変わる
- **ローリングアップデート**挙動 : 新しいものを展開しつつ古いものを減らしていく
- デフォルト
- **Recreate**挙動 : 古いものを一度停止して新しいものを一気に立ち上げる
- 停止している間はアプリが動かない

この記事が気に入ったらサポートをしてみませんか?