第4题:多个容器的pod的创建:
题目:
- 创建一个名为kucc4的pod,1个POD容器其中包含4个镜像:nginx+redis+memcached+consul
解题思路:
本题考的是一个pod中包含多个container的创建方式,按照之前的方法,我们可以--dry-run一个yaml文件,然后再往这个yaml里面填充
具体可参考:https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/
解题步骤:
- 可以先使用kubectl run 生成一个 YAML 文件中描述 kucc4
sudo kubectl run kucc4 --image=nginx --generator=run-pod/v1 -n ns-ehj --dry-run -o yaml > kucc4.yaml
生成并修改后才能apply:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: kucc4
name: kucc4
namespace: ns-ehj
spec:
containers:
- image: nginx
name: kucc4
- image: redis
name: redis
- image: memcached
name: memcached
- image: consul
name: consul
运行结果:
sudo kubectl get pods -n ns-ehj
注意:
运行多个需要协同工作的容器的Pod:
Pod可能封装了一个应用程序,该应用程序由紧密关联且需要共享资源的多个同位容器组成。这些位于同一位置的容器可能形成一个单一的服务单元,一个容器将文件从共享卷提供给公众,而一个单独的“ sidecar”容器则刷新或更新这些文件。Pod将这些容器和存储资源包装在一起,成为一个可管理的实体。该Kubernetes博客对Pod用例一些额外的信息。
Pods如何管理多个容器:
Pod旨在支持形成协作服务单元的多个协作过程(作为容器)。Pod中的容器会自动位于同一群集中的同一物理或虚拟机上,并在同一位置进行调度。这些容器可以共享资源和依赖关系,彼此通信,并协调何时以及如何终止它们。
请注意,在单个Pod中将多个位于同一地点并受共同管理的容器分组是一个相对高级的用例。您仅应在容器紧密耦合的特定实例中使用此模式。例如,您可能具有一个充当共享卷中文件的Web服务器的容器,以及一个单独的“ sidecar”容器,该容器从远程源更新这些文件,如下图所示:
某些Pod具有init容器以及应用程序容器。在启动应用程序容器之前,初始化容器会运行并完成。
Pod为它们的组成容器提供两种共享资源:网络和存储。
Pods模板:
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']
网友评论