このセクションでは、Kubernetes クラスタを操作するためのマニフェストファイルの作成と、Kubernetes Master にPod リソースを作成する方法を紹介します。

マニフェストの作成(サンプル)

サンプルのマニフェストを新規作成し、下記編集します。

[root@kube-master ~]# vi manifest/sample-pod.yaml

リソースの種類( kind )に Podを指定し、その Pod リソースの名前は sample-pod 、Pod 上のコンテナイメージは nginx:1.12 としています。

apiVersion: v1
kind: Pod
metadata:
  name: sample-pod
spec:
  containers:
    - name: nginx-container
      image: nginx:1.12

リソースの作成

Master サーバーで作成したサンプルのマニフェストを実行し、Kubernetes クラスタに Pod リソースを作成します。

[root@kube-master ~]# kubectl apply -f manifest/sample-pod.yaml 
pod/sample-pod created
[root@kube-master ~]# 

Master サーバーから Kubernetes クラスタ上の Pod の稼働状況を確認します。ここでは、sample-pod の名前の Pod が稼働していることが確認できます。

[root@kube-master ~]# kubectl get pod sample-pod
NAME         READY   STATUS    RESTARTS   AGE
sample-pod   1/1     Running   0          3m26s
[root@kube-master ~]#

Master サーバーから sample-pod の 詳細情報を確認します。ここでは、 kube-work2 の Node サーバー上で IPアドレス 10.244.2.2 のPod として sample-pod が稼働していることが確認できます。

[root@kube-master ~]# kubectl describe pods sample-pod
Name:               sample-pod
Namespace:          default
Priority:           0
PriorityClassName:  <none>
Node:               kube-work2/192.168.25.102
Start Time:         Sat, 05 Jan 2019 16:46:50 +0900
Labels:             <none>
Annotations:        kubectl.kubernetes.io/last-applied-configuration:
                      {"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{},"name":"sample-pod","namespace":"default"},"spec":{"containers":[{"image":"ng...
Status:             Running
IP:                 10.244.2.2
Containers:
  nginx-container:
    Container ID:   docker://9893d0febae30afe1c8cc412b51e38a99ae4a0333451ecf203985eaac7006b1a
    Image:          nginx:1.12
    Image ID:       docker-pullable://nginx@sha256:72daaf46f11cc753c4eab981cbf869919bd1fee3d2170a2adeac12400f494728
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Sat, 05 Jan 2019 16:47:03 +0900
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-75dfq (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  default-token-75dfq:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-75dfq
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type    Reason     Age    From                 Message
  ----    ------     ----   ----                 -------
  Normal  Scheduled  4m55s  default-scheduler    Successfully assigned default/sample-pod to kube-work2
  Normal  Pulling    4m55s  kubelet, kube-work2  pulling image "nginx:1.12"
  Normal  Pulled     4m42s  kubelet, kube-work2  Successfully pulled image "nginx:1.12"
  Normal  Created    4m42s  kubelet, kube-work2  Created container
  Normal  Started    4m42s  kubelet, kube-work2  Started container
[root@kube-master ~]#

Pod リソースが稼働している kube-work2 の Node サーバーで、docker イメージを確認します。ここでは、 nginx のイメージ( IMAGE ID : 4037a5562b03 )があることが確認できます。 

[root@kube-work2 ~]# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/kube-proxy    v1.13.1             fdb321fd30a0        3 weeks ago         80.2MB
k8s.gcr.io/coredns       1.2.6               f59dcacceff4        2 months ago        40MB
nginx                    1.12                4037a5562b03        8 months ago        108MB
quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        11 months ago       44.6MB
k8s.gcr.io/pause         3.1                 da86e6ba6ca1        12 months ago       742kB
[root@kube-work2 ~]# 

Pod リソースが稼働している kube-work2 の Node サーバーで、コンテナの稼働状況を確認します。ここでは、 nginx のイメージ( IMAGE ID : 4037a5562b03 )からコンテナが作成され稼働していることが確認できます。

[root@kube-work2 ~]# docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS               NAMES
aa8e22b26f54        4037a5562b03           "nginx -g 'daemon of…"   36 seconds ago      Up 36 seconds                           k8s_nginx-container_sample-pod_default_3263683f-10c6-11e9-94ad-525400bc2a02_0
559583efeacf        k8s.gcr.io/pause:3.1   "/pause"                 37 seconds ago      Up 36 seconds                           k8s_POD_sample-pod_default_3263683f-10c6-11e9-94ad-525400bc2a02_0
b6b0ecf61d9d        f0fad859c909           "/opt/bin/flanneld -…"   6 hours ago         Up 6 hours                              k8s_kube-flannel_kube-flannel-ds-amd64-w64mv_kube-system_fc268074-1093-11e9-94ad-525400bc2a02_0
93c2a0827484        fdb321fd30a0           "/usr/local/bin/kube…"   6 hours ago         Up 6 hours                              k8s_kube-proxy_kube-proxy-k76gv_kube-system_fc269cf7-1093-11e9-94ad-525400bc2a02_0
b9b608d6b23a        k8s.gcr.io/pause:3.1   "/pause"                 6 hours ago         Up 6 hours                              k8s_POD_kube-proxy-k76gv_kube-system_fc269cf7-1093-11e9-94ad-525400bc2a02_0
93f7ab33300b        k8s.gcr.io/pause:3.1   "/pause"                 6 hours ago         Up 6 hours                              k8s_POD_kube-flannel-ds-amd64-w64mv_kube-system_fc268074-1093-11e9-94ad-525400bc2a02_0
[root@kube-work2 ~]#