infoMore than 1 year has passed since last update.
Kubernetes入門
Last updated at Posted at 2021-01-15
Kubernetesの概要
- Kubernetesとは、コンテナオーケストレーションツールである。複数のコンテナを良い感じに管理してくれる(例:一部コンテナに負荷集中時に自動でスケールする)
- マスターとノードという2種類のサーバーが存在
- マスターはコンテナの管理をする。また、外部から管理可能にするためのAPIを提供する
- APIの認証情報は
~/.kube/config
に記載する
- ノードはコンテナのホストをする
- 配備するリソース(例:コンテナ)やその設定は、マニフェストと呼ばれる設定ファイルで定義する
- リソース郡はKubernetesクラスタという箱に入る。さらにNamespaceで箱に仕切りをつけることができる
- マスターが提供するAPIはkubectlコマンドで実行する。基本的なコマンドは以下
コマンド |
説明 |
apply |
リソース作成 |
delete |
リソース削除 |
get |
リソース情報参照 |
logs |
ログの参照 |
exec |
配備済コンテナ内でのコマンド実行 |
port-forward |
ローカルのポートからコンテナのポートへのポートフォワード |
各種リソースの説明
- Kubernetesのリソースにはとても多くの種類がある
Workloadsリソース
- Pod
- 1つ以上のコンテナを持つ箱
- 1つのPodにつき1つのIPを持つ
- ReplicaSet
- Podを複製し、特定のラベルを持つPodの数を、マニフェストで定義した数で維持する
- 例:replicas: 3, labels: labelA, labelBと定義した場合、labelA, labelBのpodの合計数を3で維持する
- Podの増減履歴は
kubectl describe rs
で確認可能
- Deployment
- 複数のReplicaSetを管理する。ローリングアップデートやロールバックを行う。
- DaemonSet
- ノードの常駐プロセス。各ノードに1つずつ配備される
- 使用例:Datadogを常駐させることで各ノードを監視する
- StatefulSet
- ステートフルなもの(例:DB)を管理する
- 再作成について
- PersistentVolumeを使用している場合は、同じディスクを用いて再作成される
- 再作成してもPod名は変わらない
- Job
- CronJob
Discovery&LBリソース
Service
- Podのセットに対するエンドポイント
- セット内の特定のpodに通信したい場合はlabelで指定
- エンドポイントの種類は下記を参照
Configリソース
Storageリソース
- Volume
- 既存のボリュームをコンテナから使用できるようにする
- PersistentVolume
- 永続ボリュームを提供する外部システムと連携して、ボリュームの新規作成や削除ができる
- PersistentVolumeClaim
- PodとPersistentVolumeを紐づける
その他
Podのヘルスチェック
種類 |
役割 |
失敗時の挙動 |
Liveness Probe |
Podの死活監視 |
Podの再起動 |
Readiness Probe |
Podがサービスを開始可能か確認(例:バックエンドのDBと接続済か) |
Podへの通信拒否 |
Podの再起動ポリシー
種類 |
説明 |
Always |
常に再起動 |
OnFailure |
終了コード0を除き再起動 |
Never |
再起動しない |
Kubernetesと連携可能な著名サービス
サービス |
機能 |
Fluentd |
ログ管理 |
Prometheus |
監視 |
Istio |
サービスメッシュ |
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
What you can do with signing up