Kubernetes基础:包含多个容器的Pod
在前面的文章中介绍了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相关推荐
- 容器编排技术 -- kubernetes 通过环境变量向容器暴露 Pod 信息
容器编排技术 -- kubernetes 通过环境变量向容器暴露 Pod 信息 1 Before you begin 2 Downward API 3 使用 Pod 字段作为环境变量的值 4 使用容器 ...
- kubernetes 通过环境变量向容器暴露 Pod 信息
kubernetes 通过环境变量向容器暴露 Pod 信息 在学习docker的时候,大家可能经常看到不少示例在docker run的时候指定环境变量(比如wordpress的docker示例就是通过 ...
- k8s基础概念:pause容器和pod控制器类型
pause容器的作用 pause容器:只要是有容器启动,pause就会启动. pod内的其他容器会共用pause容器的网络栈和存储卷. 容器是没有自己的IP地址的,都共用pause容器的. 要保证po ...
- Kubernetes(k8s)基础之二:容器编排介绍及概念
目录 1.k8s对象 2. 容器编排的概念 2.1.K8S是如何对容器编排? 2.2.Pod是怎么创建出来的? 2.3.Pod资源组成的应用如何提供外部访问的? 2.4.Service又是怎么关联到P ...
- Kubernetes基础:Pod的详细介绍
本文的演练环境为基于Virtualbox搭建的Kubernetes集群,具体搭建步骤可以参考kubeadm安装kubernetes V1.11.1 集群 1. 基本概念 1.1 Pod是什么 Pod是 ...
- 容器编排技术 -- Kubernetes 给容器和Pod分配CPU资源
容器编排技术 -- Kubernetes 给容器和Pod分配CPU资源 1 Before you begin 2 创建一个命名空间 3 声明一个CPU申请和限制 4 CPU 单位 5 请求的CPU超出 ...
- 容器编排技术 -- Kubernetes 给容器和Pod分配内存资源
容器编排技术 -- Kubernetes 给容器和Pod分配内存资源 1 Before you begin 2 创建一个命名空间 3 配置内存申请和限制 4 超出容器的内存限制 5 配置超出节点能力范 ...
- Kubernetes生产实践系列之二十九:Kubernetes基础技术之容器关键技术实践
一.前言 在文章<Kubernetes生产实践系列之二十八:Kubernetes基础技术之容器关键技术介绍>中,对于Docker容器技术依赖的namespace.cgroup和UnionF ...
- Kubernetes基础学习(一)
Kubernetes基础学习 Kubernetes核心组件 Kubernetes核心组件如下: Kubernetes Master部分: etcd保存了整个集群的状态: apiserver提供了资源操 ...
最新文章
- “冗余”的参数(变量) —— 提升访问的效率
- 解压与压缩ramdisk.img文件
- 关于Lambda和匿名内部类
- C语言进行离散傅里叶DFT变换~MATLAB验证
- 瑞德西韦有效吗?专家一句大实话解释清楚了
- 【Python】Python实战从入门到精通之四 -- 教你使用Python中字典
- 个人身份信息(PII)是什么?会被恶意使用吗?如何保护它?
- Excel 2010 VBA 入门 058 定时运行程序
- 学好Python的11个优秀资源
- 创奇文书档案管理软件 V8.1
- Python实现登录注册系统
- 手机静音状态下也让播出声音
- 好看动漫+电影+电视剧分享
- 线性代数:如何求特征值和特征向量
- opencv 锐化 java_Java Opencv 实现锐化
- 火车头+php教程,dede使用火车头采集视频教程
- 震惊!英伟达 4 月的发布会全部是合成的
- C#-属性和方法的Fody的使用(AOP)
- crm营销自动化系统 CRM软件自动化 - whale帷幄
- 文末送书 | 图灵宇宙:用漫画讲述图灵奖背后的计算机科学发展简史
热门文章
- 灌篮高手怎么找回原来的服务器,灌篮高手手游异常登陆、封号补偿及领取方式介绍...
- 编译原理三大圣书——龙书、虎书、鲸书
- Android开发——获取并生成唯一识别码
- hdu 2276【Kiki Little Kiki 2】
- Dockerflie概述
- 年度盘点 || 2019年十大营销事件
- 计算机机房建设标准.doc,计算机机房建设标准.doc
- 如何批量替换文件名称中的指定字符?
- 趣店季报图解:营收3.8亿同比降47% 股价重回1美元以上
- golang语言的入门基础,及window和linux系统上环境的搭配及运行