このエントリーをはてなブックマークに追加

概要

 『Kubernetes 1.10.2をAWS EC2(CentOS 7.5)へインストールしてkubeadmでマスタサーバとして構成』と 『Kubernetes 1.10.2をAWS EC2(CentOS 7.5)へインストールしてkubeadmでk8sのノードとして構成』で 構築したKubernetesのクラスタ環境でPodを作成し、ノードでDockerコンテナが稼働することを確認します。 kubernetes.ioで公開されているサンプルのPodテンプレートをそのまま使っています。

構成

利用環境

 サーバ環境はAWS(Amazon Web Services)のEC2インスタンスを利用しました。 サーバのスペックは以下のとおりです。

■サーバスペック
項目内容
AMICentOS 7 (x86_64) - with Updates HVM
インスタンスタイプt2.micro
vCPU1
メモリ1GiB
ディスク汎用SSD(GP2) 8GiB
リージョン日本

サーバ構成

OSバージョン

CentOS 7.5.1804 x86_64

ソフトウェア・パッケージ一覧

  • docker-1.13.1-58.git87f2fab.el7.centos.x86_64.rpm
  • 32e8bd812a3944ccf07750d52088a118fa11493d34e009e2873317e0f0b0dfd2-kubectl-1.10.2-0.x86_64.rpm
  • b754a6990af7d7012189610b0dc69e6e950c13a8c415b9ebea8d56352e9719fd-kubeadm-1.10.2-0.x86_64.rpm
  • bdee083331998c4631bf6653454c584fb796944fe97271906acbaacbf340e1d5-kubelet-1.10.2-0.x86_64.rpm

サーバ構築

マスタサーバでPodの作成

(1) Podテンプレートの作成

 kubernetes.ioで公開されているサンプルのPodテンプレートをそのまま作成します。

$ sudo su -
Last login: Tue May 22 14:05:38 UTC 2018 on pts/0
# mkdir -p /data/k8s
# cd /data/k8s/
# vi myapp-pod.yaml
ファイル名:/data/k8s/myapp-pod.yaml
※ファイルを新規作成※
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-container
    image: busybox
    command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']

(2) PodテンプレートからPodを作成

 上記のPodテンプレートを元にPodを作成します。

# kubectl create -f myapp-pod.yaml
pod "myapp-pod" created

(3) Podの確認

 Podの状態を表示します。 kube create を実行した直後は、Podの状態が ContainerCreating となっていますが、 しばらく待って再度確認すると Running に変わっています。

# kubectl get pods
NAME        READY     STATUS              RESTARTS   AGE
myapp-pod   0/1       ContainerCreating   0          12s ←コンテナ作成中
(ちょっと待つ)
# kubectl get pods
NAME        READY     STATUS    RESTARTS   AGE
myapp-pod   1/1       Running   0          3m ←起動中

 これでPodテンプレートを元に myapp-pod という名のPodが起動したことが確認できました。

ノードでDockerコンテナの起動確認

(1) Dockerコンテナの確認

 続いて、ノード(Kubernetesで管理するサーバ、Dockerの実行環境)のサーバにログインして、 Podから起動されたDockerコンテナが起動していることを確認します。 Podテンプレートを見てわかる通り、busyboxという名のDockerイメージを元にコンテナを起動しています。 以下では da77edb010a6 というコンテナIDで対象のコンテナが起動していることが分かります。

# docker ps
CONTAINER ID        IMAGE                                                                                                 COMMAND                  CREATED             STATUS              PORTS               NAMES
da77edb010a6        docker.io/busybox@sha256:58ac43b2cc92c687a32c8be6278e50a063579655fe3090125dcb2af0ff9e1a64             "sh -c 'echo Hello..."   3 minutes ago       Up 3 minutes                            k8s_myapp-container_myapp-pod_default_f55dc524-5dca-11e8-a073-0643f5f5d140_0 ←起動したDockerコンテナ
8915c396737d        k8s.gcr.io/pause-amd64:3.1                                                                            "/pause"                 3 minutes ago       Up 3 minutes                            k8s_POD_myapp-pod_default_f55dc524-5dca-11e8-a073-0643f5f5d140_0
7939fe8b6e01        f0fad859c909                                                                                          "/opt/bin/flanneld..."   3 days ago          Up 3 days                               k8s_kube-flannel_kube-flannel-ds-m9dkj_kube-system_0950d872-5abb-11e8-92f3-0643f5f5d140_0
739feabcaf8c        k8s.gcr.io/kube-proxy-amd64@sha256:c7036a8796fd20c16cb3b1cef803a8e980598bff499084c29f3c759bdb429cd2   "/usr/local/bin/ku..."   3 days ago          Up 3 days                               k8s_kube-proxy_kube-proxy-z2wft_kube-system_094ff39e-5abb-11e8-92f3-0643f5f5d140_0
403243e62b71        k8s.gcr.io/pause-amd64:3.1                                                                            "/pause"                 3 days ago          Up 3 days                               k8s_POD_kube-proxy-z2wft_kube-system_094ff39e-5abb-11e8-92f3-0643f5f5d140_0
f3a5ecdf9ba9        k8s.gcr.io/pause-amd64:3.1                                                                            "/pause"                 3 days ago          Up 3 days                               k8s_POD_kube-flannel-ds-m9dkj_kube-system_0950d872-5abb-11e8-92f3-0643f5f5d140_0

(2) Dockerイメージの確認

 一応このサーバにダウンロードされているDockerイメージの一覧を見ると、 busyboxが存在していることが分かります。

# docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/kube-proxy-amd64             v1.10.2             77019aa0531a        3 weeks ago         97.1 MB
docker.io/busybox                       latest              8ac48589692a        6 weeks ago         1.15 MB ←今回コンテナの元になったイメージ
k8s.gcr.io/kubernetes-dashboard-amd64   v1.8.3              0c60bcf89900        3 months ago        102 MB
quay.io/coreos/flannel                  v0.10.0-amd64       f0fad859c909        3 months ago        44.6 MB
k8s.gcr.io/pause-amd64                  3.1                 da86e6ba6ca1        5 months ago        742 kB

マスタサーバでPodの削除

(1) Podの削除

 今回作成した myapp-pod という名のPodを削除してみます。

# kubectl delete pod myapp-pod
pod "myapp-pod" deleted

(2) Podの確認

 Podの状態を確認します。 kube delete を実行した直後は、Podの状態が Terminating となっていますが、 しばらく待って再確認するとPod自体が削除されて表示されなくなります。

# kubectl get pods
NAME        READY     STATUS        RESTARTS   AGE
myapp-pod   1/1       Terminating   0          46m ←終了中の状態
(ちょっと待つ)
# kubectl get pods
No resources found. ←Podが削除されたため、表示されなくなった

ノードでコンテナの削除確認

(1) Dockerコンテナの確認

 続いて、ノードで busybox のDockerコンテナが停止して表示されなくなっていることを確認します。

# docker ps
CONTAINER ID        IMAGE                                                                                                 COMMAND                  CREATED             STATUS              PORTS               NAMES
7939fe8b6e01        f0fad859c909                                                                                          "/opt/bin/flanneld..."   3 days ago          Up 3 days                               k8s_kube-flannel_kube-flannel-ds-m9dkj_kube-system_0950d872-5abb-11e8-92f3-0643f5f5d140_0
739feabcaf8c        k8s.gcr.io/kube-proxy-amd64@sha256:c7036a8796fd20c16cb3b1cef803a8e980598bff499084c29f3c759bdb429cd2   "/usr/local/bin/ku..."   3 days ago          Up 3 days                               k8s_kube-proxy_kube-proxy-z2wft_kube-system_094ff39e-5abb-11e8-92f3-0643f5f5d140_0
403243e62b71        k8s.gcr.io/pause-amd64:3.1                                                                            "/pause"                 3 days ago          Up 3 days                               k8s_POD_kube-proxy-z2wft_kube-system_094ff39e-5abb-11e8-92f3-0643f5f5d140_0
f3a5ecdf9ba9        k8s.gcr.io/pause-amd64:3.1                                                                            "/pause"                 3 days ago          Up 3 days                               k8s_POD_kube-flannel-ds-m9dkj_kube-system_0950d872-5abb-11e8-92f3-0643f5f5d140_0

参考にしたサイト

 Kubernetesの公式サイト kubernetes.io に掲載されているPodテンプレートを参考にしました。