Kubernetes完全ガイド
https://gyazo.com/95e968a5619e34d516108783d04ff6b4
Kubernetes
https://www.amazon.co.jp/Kubernetes%E5%AE%8C%E5%85%A8%E3%82%AC%E3%82%A4%E3%83%89-impress-top-gear-%E9%9D%92%E5%B1%B1/dp/4295004804
メモ
Kubernetesではリソースを登録することで、コンテナの実行などを非同期で行う
Workloads リソース
クラスタ上にコンテナを起動させるために利用する
Pod
リソースの最小単位。一つ以上のContainerからなる
ReplicationController (非推奨。ReplicaSetを使う)
ReplicaSet
指定した数のPodを維持し続ける。基本的にDeploymentから使用する
Deployment
ReplicaSetの上位リソース
複数のReplicaSetを管理し、ローリングアップデートやロールバックを行う
DaemonSet
各NodeにPodを1つずつ配置する
FluentdやDatadogのagentなど、全Node上で必ず動作させたいプロセスに使う
StatefulSet
DBなどstatefullなワークロードに対応するPodを作成
Persistent Volumeを使うことで永続化できる
Job
一度限りの処理を実行するPod
バッチ処理に使う
CronJob
スケジュールされた時間にJobを作成する
Discovery / LB
コンテナのサービスディスカバリ、外部からアクセス可能なエンドポイントなどを提供
直接利用するリソースは2つ
Service
L4ロードバランシング (TCP,UDP) を提供
ClusterIP
kubernetes クラスタ内からのみ疎通性がある Internal Network に作り出される仮想IPを割り当てる
ExternalIP
外部疎通性を確立する
NodePort
全ての kubernetes Node のIPアドレスで受信したトラフィックをコンテナに転送する
LoadBalancer
クラスタ外の LB に外部疎通性のある仮想IPを払い出す
Headless (None)
対象となる個々の Pod のIPアドレスが直接返る
ExternalName
Service名の名前解決に対して、外部ドメインあてのCNAMEを返す
None-Selector
kubernetes 内の自由な宛先にロードバランスできる
Ingress
L7ロードバランシング (HTTP, HTTPS, HTTP2とか) を提供する
パスベースルーティングとか
NodePort service へのトラフィックを定義する
resource
manifest で登録されるAPIリソース
controller
resource が kubernetes に登録された際に、何らかの処理を行うもの
Config / Storage
設定、機密情報、永続化ボリューム
Secret
機密情報の管理
分類
Generic
TLS
Docker registory
Service Account
コンテナから利用する場合
環境変数として渡す or Volume としてマウントする
kubesecを使って安全に管理する
ConfigMap
設定情報
PersistentVolumeClaim
永続化領域を利用する
Cluster
クラスタ自体の振る舞いを定義
Node
Namespace
仮想的なクラスタの分離機能
デフォルトではdefault, kube-system, kube-public が作成されている
PersistentVolume
ResourceQuota
ServiceAccount
Role
ClusterRole
RoleBinding
ClusterRoleBinding
NetworkPolicy
Metadata
クラスタ内の他のリソースを操作
LimitRange
HorizontalPodAutoscaler
PodDisruptionBudget
CustomResourceDefinition
ヘルスチェック
Liveness Probe
podが正常に動作しているか
失敗したらrestartPolicyに従って再起動
Readiness Probe
podがサービスインする準備ができているか
失敗したらトラフィックを流さない
UserAccount
Google CloudやAWSではIAMとリンクしている部分
ServiceAccount
Namespaceにひも付き、認証/認可を行う