首页 > 解决方案 > 从同一个 YAML 定义文件创建多个 pod

问题描述

所以,我有一个 pod 定义文件,我想知道是否有办法使用 kubectl apply 命令从同一个定义文件创建 pod 的多个实例。我知道这可以通过部署来完成,但想知道是否有一种方法可以使用 apply 命令快速启动多个 pod?

标签: kuberneteskubectl

解决方案


我知道这可以通过部署来完成,但想知道是否有一种方法可以使用 apply 命令快速启动多个 pod?

是的,这是可能的,但不能使用简单的kubectl apply命令,因为它没有这样的选项/功能,并且不能用于从单个 yaml 定义文件创建 pod 的多个实例。

如果您只需要创建n 个独立的 pod,而不是由任何replicaset,等管理deploymentstatefulset那么您可以为此目的使用一个简单的 bash one-liner。

假设我们想基于以下 yaml 模板快速启动 10 个独立的 pod,命名为pod-template.yaml

apiVersion: v1
kind: Pod
metadata:
  name: {{pod-name}}
spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80
          protocol: TCP

我们可以使用以下脚本来做到这一点:

for i in {1..10}; do sed "s/{{pod-name}}/pod-$i/g" pod-template.yaml | kubectl apply -f - ; done

它将创建 10 个名为pod-1, pod-2...的 pod pod-10

$ for i in {1..10}; do sed "s/{{pod-name}}/pod-$i/g" pod-template.yaml | kubectl apply -f - ; done
pod/pod-1 created
pod/pod-2 created
pod/pod-3 created
pod/pod-4 created
pod/pod-5 created
pod/pod-6 created
pod/pod-7 created
pod/pod-8 created
pod/pod-9 created
pod/pod-10 created

以防万一您现在想删除它们并且不想一一删除;)

for i in {1..10};do kubectl delete pod pod-$i; done

推荐阅读