在前面的文章中介绍了Pod的使用方法,示例中的Pod包含一个容器,这篇文章介绍一下包含多个容器的Pod的使用方法。

YAML文件示例

[root@host131 Pod]# cat multi-pods.yaml
---
apiVersion: v1
kind: Pod
metadata:name: multi-pods
spec:containers:- name: blue-pod-containerimage: busybox:1.31.1command: ["sleep"]args:    ["1000"]- name: green-pod-containerimage: busybox:1.30.1command: ["sleep"]args:    ["10000"]- name: yellow-pod-containerimage: busybox:1.30.1command: ["sleep"]args:    ["100000"]
...
[root@host131 Pod]#

生成Pod

[root@host131 Pod]# kubectl create -f multi-pods.yaml
pod/multi-pods created
[root@host131 Pod]#

确认Pod信息

使用kubectl get pods命令可以获取此pod的详细信息,可以看到READY显示为3/3,说明包含三个容器全部正常启动,整体状态STATUS为Running状态,Pod本身的IP为10.254.176.3,Pod名称为multi-pods。

[root@host131 Pod]# kubectl get pods -o wide
NAME         READY   STATUS    RESTARTS   AGE   IP             NODE              NOMINATED NODE   READINESS GATES
multi-pods   3/3     Running   0          27s   10.254.176.3   192.168.163.131   <none>           <none>
[root@host131 Pod]#

然后可以使用kubectl describe查看pod的详细信息:

[root@host131 Pod]# kubectl describe pod/multi-pods
Name:         multi-pods
Namespace:    default
Priority:     0
Node:         192.168.163.131/192.168.163.131
Start Time:   Sun, 09 Feb 2020 04:34:18 -0500
Labels:       <none>
Annotations:  <none>
Status:       Running
IP:           10.254.176.3
IPs:IP:  10.254.176.3
Containers:blue-pod-container:Container ID:  docker://881da8a39e6a9999cce25ef227c97e8680379d97cd190e6a98ff25f49a3f7469Image:         busybox:1.31.1Image ID:      docker-pullable://busybox@sha256:6915be4043561d64e0ab0f8f098dc2ac48e077fe23f488ac24b665166898115aPort:          <none>Host Port:     <none>Command:sleepArgs:1000State:          RunningStarted:      Sun, 09 Feb 2020 04:34:19 -0500Ready:          TrueRestart Count:  0Environment:    <none>Mounts:/var/run/secrets/kubernetes.io/serviceaccount from default-token-kzxwt (ro)green-pod-container:Container ID:  docker://b60d1cf06ff68ffae44e13f33d84b12b8525707af6de1836abdc5905a135166fImage:         busybox:1.30.1Image ID:      docker-pullable://busybox@sha256:4b6ad3a68d34da29bf7c8ccb5d355ba8b4babcad1f99798204e7abb43e54ee3dPort:          <none>Host Port:     <none>Command:sleepArgs:10000State:          RunningStarted:      Sun, 09 Feb 2020 04:34:19 -0500Ready:          TrueRestart Count:  0Environment:    <none>Mounts:/var/run/secrets/kubernetes.io/serviceaccount from default-token-kzxwt (ro)yellow-pod-container:Container ID:  docker://8e500fef966ab861843d46076bdb07fa5443041bcc6b20c2a415ef5aed181cdfImage:         busybox:1.30.1Image ID:      docker-pullable://busybox@sha256:4b6ad3a68d34da29bf7c8ccb5d355ba8b4babcad1f99798204e7abb43e54ee3dPort:          <none>Host Port:     <none>Command:sleepArgs:100000State:          RunningStarted:      Sun, 09 Feb 2020 04:34:19 -0500Ready:          TrueRestart Count:  0Environment:    <none>Mounts:/var/run/secrets/kubernetes.io/serviceaccount from default-token-kzxwt (ro)
Conditions:Type              StatusInitialized       True Ready             True ContainersReady   True PodScheduled      True
Volumes:default-token-kzxwt:Type:        Secret (a volume populated by a Secret)SecretName:  default-token-kzxwtOptional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300snode.kubernetes.io/unreachable:NoExecute for 300s
Events:Type    Reason     Age    From                      Message----    ------     ----   ----                      -------Normal  Scheduled  2m47s  default-scheduler         Successfully assigned default/multi-pods to 192.168.163.131Normal  Pulled     2m46s  kubelet, 192.168.163.131  Container image "busybox:1.31.1" already present on machineNormal  Created    2m46s  kubelet, 192.168.163.131  Created container blue-pod-containerNormal  Started    2m46s  kubelet, 192.168.163.131  Started container blue-pod-containerNormal  Pulled     2m46s  kubelet, 192.168.163.131  Container image "busybox:1.30.1" already present on machineNormal  Created    2m46s  kubelet, 192.168.163.131  Created container green-pod-containerNormal  Started    2m46s  kubelet, 192.168.163.131  Started container green-pod-containerNormal  Pulled     2m46s  kubelet, 192.168.163.131  Container image "busybox:1.30.1" already present on machineNormal  Created    2m46s  kubelet, 192.168.163.131  Created container yellow-pod-containerNormal  Started    2m46s  kubelet, 192.168.163.131  Started container yellow-pod-container
[root@host131 Pod]#

可以看到在Containers段显示了三个容器的详细信息,而在Event中也可以看到三个容器的创建过程。

进入容器

Pod中只有一个容器时,使用如下命令即可进入到容器之中:

执行命令:kubectl exec -it pod名称 sh或者bash

而如果有多个容器时,则需要使用-c指定容器名称:

执行命令:kubectl exec -it pod名称 -c 容器名称 sh或者bash

比如进入multi-pods中名为yellow-pod-container :

[root@host131 Pod]# kubectl exec -it multi-pods -c yellow-pod-container sh
/ # ps -ef
PID   USER     TIME  COMMAND1 root      0:00 sleep 1000006 root      0:00 sh11 root      0:00 ps -ef
/ # busybox |grep BusyBox
BusyBox v1.30.1 (2019-05-09 01:23:43 UTC) multi-call binary.
BusyBox is copyrighted by many authors between 1998-2015.BusyBox is a multi-call binary that combines many common Unixlink to busybox for each function they wish to use and BusyBox
/ # hostname
multi-pods
/ #

pause镜像确认,使用docker ps命令可以确认到包含pause在内的4个容器,pause容器作为此Pod的根容器,负责整个Pod的网络信息

[root@host131 Pod]# docker ps |grep multi-pods
8e500fef966a        64f5d945efcc                               "sleep 100000"           8 minutes ago       Up 8 minutes                            k8s_yellow-pod-container_multi-pods_default_3c744cee-6ce3-4de3-99ab-f8909fee0147_0
b60d1cf06ff6        64f5d945efcc                               "sleep 10000"            8 minutes ago       Up 8 minutes                            k8s_green-pod-container_multi-pods_default_3c744cee-6ce3-4de3-99ab-f8909fee0147_0
881da8a39e6a        6d5fcfe5ff17                               "sleep 1000"             8 minutes ago       Up 8 minutes                            k8s_blue-pod-container_multi-pods_default_3c744cee-6ce3-4de3-99ab-f8909fee0147_0
44d9b05a6d1b        gcr.io/google_containers/pause-amd64:3.1   "/pause"                 8 minutes ago       Up 8 minutes                            k8s_POD_multi-pods_default_3c744cee-6ce3-4de3-99ab-f8909fee0147_0
[root@host131 Pod]#

首先确认pause的id

[root@host131 Pod]# docker inspect k8s_POD_multi-pods_default_3c744cee-6ce3-4de3-99ab-f8909fee0147_0 |grep Id"Id": "44d9b05a6d1b9f33e170a70a4db304b92e4dbbdd3d0a38efaca0513ad8b86acb",
[root@host131 Pod]#

然后可以确认到在其余的容器中都和此Pod有所关联,可以看到Pause作为根容器为其余容器所起到的作用。

[root@host131 Pod]# docker inspect k8s_yellow-pod-container_multi-pods_default_3c744cee-6ce3-4de3-99ab-f8909fee0147_0 |grep 44d9b05a6d1b9f33e170a70a4db304b92e4dbbdd3d0a38efaca0513ad8b86acb"ResolvConfPath": "/var/lib/docker/containers/44d9b05a6d1b9f33e170a70a4db304b92e4dbbdd3d0a38efaca0513ad8b86acb/resolv.conf","HostnamePath": "/var/lib/docker/containers/44d9b05a6d1b9f33e170a70a4db304b92e4dbbdd3d0a38efaca0513ad8b86acb/hostname","NetworkMode": "container:44d9b05a6d1b9f33e170a70a4db304b92e4dbbdd3d0a38efaca0513ad8b86acb","IpcMode": "container:44d9b05a6d1b9f33e170a70a4db304b92e4dbbdd3d0a38efaca0513ad8b86acb","io.kubernetes.sandbox.id": "44d9b05a6d1b9f33e170a70a4db304b92e4dbbdd3d0a38efaca0513ad8b86acb"
[root@host131 Pod]#
[root@host131 Pod]# docker inspect k8s_green-pod-container_multi-pods_default_3c744cee-6ce3-4de3-99ab-f8909fee0147_0 |grep 44d9b05a6d1b9f33e170a70a4db304b92e4dbbdd3d0a38efaca0513ad8b86acb"ResolvConfPath": "/var/lib/docker/containers/44d9b05a6d1b9f33e170a70a4db304b92e4dbbdd3d0a38efaca0513ad8b86acb/resolv.conf","HostnamePath": "/var/lib/docker/containers/44d9b05a6d1b9f33e170a70a4db304b92e4dbbdd3d0a38efaca0513ad8b86acb/hostname","NetworkMode": "container:44d9b05a6d1b9f33e170a70a4db304b92e4dbbdd3d0a38efaca0513ad8b86acb","IpcMode": "container:44d9b05a6d1b9f33e170a70a4db304b92e4dbbdd3d0a38efaca0513ad8b86acb","io.kubernetes.sandbox.id": "44d9b05a6d1b9f33e170a70a4db304b92e4dbbdd3d0a38efaca0513ad8b86acb"
[root@host131 Pod]#

另外如果不使用-c指定容器时,缺省会进入第一个容器中

[root@host131 Pod]# kubectl exec -it multi-pods sh
Defaulting container name to blue-pod-container.
Use 'kubectl describe pod/multi-pods -n default' to see all of the containers in this pod.
/ #

Kubernetes基础:包含多个容器的Pod相关推荐

  1. 容器编排技术 -- kubernetes 通过环境变量向容器暴露 Pod 信息

    容器编排技术 -- kubernetes 通过环境变量向容器暴露 Pod 信息 1 Before you begin 2 Downward API 3 使用 Pod 字段作为环境变量的值 4 使用容器 ...

  2. kubernetes 通过环境变量向容器暴露 Pod 信息

    kubernetes 通过环境变量向容器暴露 Pod 信息 在学习docker的时候,大家可能经常看到不少示例在docker run的时候指定环境变量(比如wordpress的docker示例就是通过 ...

  3. k8s基础概念:pause容器和pod控制器类型

    pause容器的作用 pause容器:只要是有容器启动,pause就会启动. pod内的其他容器会共用pause容器的网络栈和存储卷. 容器是没有自己的IP地址的,都共用pause容器的. 要保证po ...

  4. Kubernetes(k8s)基础之二:容器编排介绍及概念

    目录 1.k8s对象 2. 容器编排的概念 2.1.K8S是如何对容器编排? 2.2.Pod是怎么创建出来的? 2.3.Pod资源组成的应用如何提供外部访问的? 2.4.Service又是怎么关联到P ...

  5. Kubernetes基础:Pod的详细介绍

    本文的演练环境为基于Virtualbox搭建的Kubernetes集群,具体搭建步骤可以参考kubeadm安装kubernetes V1.11.1 集群 1. 基本概念 1.1 Pod是什么 Pod是 ...

  6. 容器编排技术 -- Kubernetes 给容器和Pod分配CPU资源

    容器编排技术 -- Kubernetes 给容器和Pod分配CPU资源 1 Before you begin 2 创建一个命名空间 3 声明一个CPU申请和限制 4 CPU 单位 5 请求的CPU超出 ...

  7. 容器编排技术 -- Kubernetes 给容器和Pod分配内存资源

    容器编排技术 -- Kubernetes 给容器和Pod分配内存资源 1 Before you begin 2 创建一个命名空间 3 配置内存申请和限制 4 超出容器的内存限制 5 配置超出节点能力范 ...

  8. Kubernetes生产实践系列之二十九:Kubernetes基础技术之容器关键技术实践

    一.前言 在文章<Kubernetes生产实践系列之二十八:Kubernetes基础技术之容器关键技术介绍>中,对于Docker容器技术依赖的namespace.cgroup和UnionF ...

  9. Kubernetes基础学习(一)

    Kubernetes基础学习 Kubernetes核心组件 Kubernetes核心组件如下: Kubernetes Master部分: etcd保存了整个集群的状态: apiserver提供了资源操 ...

最新文章

  1. “冗余”的参数(变量) —— 提升访问的效率
  2. 解压与压缩ramdisk.img文件
  3. 关于Lambda和匿名内部类
  4. C语言进行离散傅里叶DFT变换~MATLAB验证
  5. 瑞德西韦有效吗?专家一句大实话解释清楚了
  6. 【Python】Python实战从入门到精通之四 -- 教你使用Python中字典
  7. 个人身份信息(PII)是什么?会被恶意使用吗?如何保护它?
  8. Excel 2010 VBA 入门 058 定时运行程序
  9. 学好Python的11个优秀资源
  10. 创奇文书档案管理软件 V8.1
  11. Python实现登录注册系统
  12. 手机静音状态下也让播出声音
  13. 好看动漫+电影+电视剧分享
  14. 线性代数:如何求特征值和特征向量
  15. opencv 锐化 java_Java Opencv 实现锐化
  16. 火车头+php教程,dede使用火车头采集视频教程
  17. 震惊!英伟达 4 月的发布会全部是合成的
  18. C#-属性和方法的Fody的使用(AOP)
  19. crm营销自动化系统 CRM软件自动化 - whale帷幄
  20. 文末送书 | 图灵宇宙:用漫画讲述图灵奖背后的计算机科学发展简史

热门文章

  1. 灌篮高手怎么找回原来的服务器,灌篮高手手游异常登陆、封号补偿及领取方式介绍...
  2. 编译原理三大圣书——龙书、虎书、鲸书
  3. Android开发——获取并生成唯一识别码
  4. hdu 2276【Kiki Little Kiki 2】
  5. Dockerflie概述
  6. 年度盘点 || 2019年十大营销事件
  7. 计算机机房建设标准.doc,计算机机房建设标准.doc
  8. 如何批量替换文件名称中的指定字符?
  9. 趣店季报图解:营收3.8亿同比降47% 股价重回1美元以上
  10. golang语言的入门基础,及window和linux系统上环境的搭配及运行