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

続きは明日以降行います。