k8sはコンテナのオーケストレーションツール
複数の物理マシンに複数のコンテナがあることが前提
1台1台の物理マシンの中に複数のコンテナがある
定義ファイル(マニュフェストファイル)を作成すれば、コンテナを作成管理してくる
L etcd(データベース)に書き込まれる
docker-composeは作って終わりだが、k8sはその状態を維持する。監視も行う
### マスターノードとワーカーノード
クラスターは定義ファイルに基づいて自立して動く
k8sは仮想ネットワークドライバであるCNIをインストールする必要がある
マスターノードではコントロールプレーンでワーカーノードを管理
### 用語
Pod: コンテナとボリュームがセットになったもの
Service: Podをまとめて管理する
ReplicaSet: Podの数を管理
### 定義ファイル
apiVersion: v1
kind: Pod
metadata:
name: apa000pod
labels:
app: apa000kube
spec:
containers:
- name: apa000ex91
image: httpd
ports:
- containerPort: 80
apa000dep.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: apa000dep
spec:
selector:
matchLabels:
app: apa000kube
replicas: 3
template:
metadata:
labels:
app: apa000kube
spec:
containers:
- name: apa000ex91
image: httpd
ports:
- containerPort: 80
service
apiVersion: v1
kind: Service
metadata:
name: apa000ser
spec:
type: NodePort
ports:
- port: 8099
targetPort: 80
protocol: TCP
nodePort: 30080
selector:
app: apa000kube
### kubernetsコマンド
$ kubectl ${command} ${option}
create, edit, delete, get, set, apply, describe, diff, expose, scale, autoscale, rollout, exec, run, attach, cp, logs, cluster-info, top
$ kubectl apply -f *.yml
$ kubectl get pods
$ kubectl apply -f *.yml
$ kubectl get services
OK、さー仕事するぞー