提问者:小点点

使用kubectl设置映像提取策略


在文档和这个问题之后,我尝试提取我在使用kubectl创建部署时使用docker在本地创建的映像。我在找这样的东西,

kubectl先创建部署-k8s-deploy--image=“laxman/nodejs/express-app”--image pull policy=“never”

查看kubectl创建部署--help不提供任何--映像拉取策略选项。

是否有任何全局配置来设置ImagePull策略,以及如何仅为某些特定部署设置此标志?


共2个答案

匿名用户

您可能已经越过了可以用命令行完成的操作。有关如何在yaml文件中指定部署,请参阅创建部署。

ImagePull策略是Container定义的一部分。

通过向命令中添加-o yaml--dry run,可以为任何kubectl命令获取yaml。使用您的示例部署:

kubectl create deployment first-k8s-deploy \
  --image="laxman/nodejs/express-app" \
  -o yaml \
  --dry-run

给你:

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: first-k8s-deploy
  name: first-k8s-deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      app: first-k8s-deploy
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: first-k8s-deploy
    spec:
      containers:
      - image: laxman/nodejs/express-app
        name: express-app
        resources: {}

然后将imagePullPolicy属性添加到列表中的容器中:

    spec:
      containers:
      - image: laxman/nodejs/express-app
        name: express-app
        resources: {}
        imagePullPolicy: Never

然后可以使用以下命令部署您创建的yaml文件

kubectl应用-f

匿名用户

可以使用cli为单个pod指定--映像提取策略。

因此,您可以创建和运行一个pod使用:

kubectl运行PODNAME--image='laxman/nodejs/express-app'--image-pull-policy='never'

通过执行kubectl run--help,您可以看到其他示例和详细的解释,并在此处提供留档。

正如我所说,这适用于pods,如果您添加选项--generator=deployment/v1beta1,它将创建一个部署。从Kubernetes 1.18开始,这将被弃用。pull请求被批准并合并。