このセクションでは、Kubernetes クラスタ上で複数のコンテナを含む Pod を作成する方法について紹介します。
サンプルのマニフェストファイルを新規作成し、以下コードを記述します。
[root@kube-master sample-multicontainer]# vi sample-multicontainer.yaml
containers に複数のコンテナ情報を記述します。ここでは、nginxのコンテナと redis のコンテナを記述しています。
apiVersion: v1 kind: Pod metadata: name: sample-multicontainer spec: containers: - name: nginx-container image: nginx:1.13 - name: redis-container image: redis:3.2
Master サーバーから 作成したマニフェストを実行し、Kubernetes クラスタ上にリソースを作成します。
[root@kube-master sample-multicontainer]# kubectl apply -f sample-multicontainer.yaml pod/sample-multicontainer created [root@kube-master sample-multicontainer]#
Master サーバーから Kubernetes クラスタ上のリソースを確認します。 sample-multicontainer という名前の Pod に 2つのコンテナ( 2/2 )が稼働していることが確認できます。
[root@kube-master sample-multicontainer]# kubectl get pod NAME READY STATUS RESTARTS AGE sample-multicontainer 2/2 Running 0 32s [root@kube-master sample-multicontainer]#
Master サーバーから Pod リソースの詳細情報を確認します。ここでは、sample-multicontainer の Pod 内で nginx のコンテナと redis のコンテナが稼働していることが確認できます。
[root@kube-master sample-multicontainer]# kubectl describe pod sample-multicontainer Name: sample-multicontainer Namespace: default Priority: 0 PriorityClassName: <none> Node: kube-work1/192.168.25.101 Start Time: Sun, 13 Jan 2019 20:49:33 +0900 Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{},"name":"sample-multicontainer","namespace":"default"},"spec":{"containers":[{... Status: Running IP: 10.244.1.118 Containers: nginx-container: Container ID: docker://3a5a924c50bbaf4927b32a1b48abc97993fe6a88aade43c8ca2a5e9fcbf1288a Image: nginx:1.13 Image ID: docker-pullable://nginx@sha256:b1d09e9718890e6ebbbd2bc319ef1611559e30ce1b6f56b2e3b479d9da51dc35 Port: <none> Host Port: <none> State: Running Started: Sun, 13 Jan 2019 20:49:34 +0900 Ready: True Restart Count: 0 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from default-token-75dfq (ro) redis-container: Container ID: docker://5f6c963ddeebed7907a66e37beb3e8e0d0318c7bc4afb35abef9f0196b0b8689 Image: redis:3.2 Image ID: docker-pullable://redis@sha256:7b0a40301bc1567205e6461c5bf94c38e1e1ad0169709e49132cafc47f6b51f3 Port: <none> Host Port: <none> State: Running Started: Sun, 13 Jan 2019 20:49:46 +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 9m34s default-scheduler Successfully assigned default/sample-multicontainer to kube-work1 Normal Pulled 9m34s kubelet, kube-work1 Container image "nginx:1.13" already present on machine Normal Created 9m33s kubelet, kube-work1 Created container Normal Started 9m33s kubelet, kube-work1 Started container Normal Pulling 9m33s kubelet, kube-work1 pulling image "redis:3.2" Normal Pulled 9m21s kubelet, kube-work1 Successfully pulled image "redis:3.2" Normal Created 9m21s kubelet, kube-work1 Created container Normal Started 9m21s kubelet, kube-work1 Started container [root@kube-master sample-multicontainer]#