Docker/K8S実践コンテナ開発入門@15日目
K8Sの環境構築が完了したので、続きをやっていきます。
Podを作成してデプロイする
nginxとechoアプリケーションを利用してこの2つを含む単位(Pod)をローカルKubernetes環境にデプロイする。<
- Podの作成はKubectlだけで行うことも可能
- バージョン管理の観点からyamlファイルとして定義することが多い
書籍の内容に従って、「simple-pod.yaml」を作成する。
属性:kind の値にってよってspec配下のスキーマが変わる。主に以下のリソースを指定できる
- Pod
- ReplicaSet
- Deployment
- Service
- Ingress
- ConfigMap
- DaemonSet
■デプロイコマンド
kubectl apply -f simple-pod.yaml
上記コマンドでpod作成が完了
Podを操作する
■以下のコマンドでkubectlを取得する
lawrence@Chocolate echo3 % kubectl get pod NAME READY STATUS RESTARTS AGE simple-echo 0/2 ContainerCreating 0 83s
Statusが「ContainerCreating」となっているのでまだ作成途中
■再実行
lawrence@Chocolate echo3 % kubectl get pod NAME READY STATUS RESTARTS AGE simple-echo 2/2 Running 0 5m11
Status = RunningとなっているのでOK
次podの内のコンテナ操作を行う。
SwarmクラスタにおけるManagerと同じ要領で行ける
■nginxに接続
kubectl exec -it simple-echo sh -c nginx
■ログ取得
kubectl logs -f simple-echo -c echo
■Podの削除
kubectl delete pod simple-echo ||> ■マニフェストファイルベースで削除する場合 >|| kubectl delete -f simple-pod.yaml
コラムに書かれていましたが、PodのIPアドレスは仮想のIPアドレスが割り当てられるので
同一コンテナ内であればlocalhost:ポート番号 で接続可能。
複数Podを作る場合でも自身に接続したい場合はlocalhostという記載で本番でもイケそうですね。
ReplicaSet
今度はReplicaSetという概念を利用してPodを複数実行する。
「simple-replicaset.yaml」というファイルを書籍に従って作成し、ReplicaSetの作成コマンド実施
■ReplicaSet作成
ubectl apply -f simple-replicaset.yaml
■作成結果確認
lawrence@Chocolate echo3 % kubectl get pod NAME READY STATUS RESTARTS AGE echo-kfdgq 2/2 Running 0 75s echo-skg25 2/2 Running 0 75s echo-tq9ks 2/2 Running 0 75s
echoという指定した名称で作成され、枝番は自動割り振りでしょうか。
「ReplicaSet」ではなく、「StatefulSet」ならば枝番となる模様。どっちがいいのかな?
Deployment
RepicaSetの上位リソースであるDeploymentを検証
「simple-deployment.yaml」を作成する。※「Replicaset」用のyamlのファイルを複製しkind属性をDeploymentに変更したのみ
DeploymentはReplicasetで構成されたPodを管理・操作するために提供されているリソース
Deploymentでは、Replicasetの世代管理(リビジョン)が可能とのこと。
実運用では基本Deploymentの方が多そうですね。
■Deploymentで実行
kubectl apply -f simple-deployment.yaml --record
-
- recordオプションを付与してkubectlのコマンドを記録します。
■各Pod状態を取得
kubectl get pod,replicaset,deployment --selector app=echo
■deploymentのリビジョンを取得
kubectl rollout history deployment echo
続きは明日以降行います。