Kubernetes 1.10.2でPodの作成と削除
目次
概要
『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インスタンスを利用しました。 サーバのスペックは以下のとおりです。
項目 | 内容 |
---|---|
AMI | CentOS 7 (x86_64) - with Updates HVM |
インスタンスタイプ | t2.micro |
vCPU | 1 |
メモリ | 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の作成
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
※ファイルを新規作成※
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']
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コンテナの起動確認
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
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の削除
Podの削除
今回作成した myapp-pod という名のPodを削除してみます。
# kubectl delete pod myapp-pod pod "myapp-pod" deleted
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が削除されたため、表示されなくなった
ノードでコンテナの削除確認
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テンプレートを参考にしました。