使用kubectl设置图像拉取策略

时间:2020-01-30 06:44:25

标签: kubernetes kubectl

docs和此question之后,我尝试使用 kubectl 创建部署时,拉取我在docker本地创建的映像。我正在寻找这样的东西,

kubectl create deployment first-k8s-deploy --image="laxman/nodejs/express-app" --image-pull-policy="never"

查看kubectl create deployment --help并没有提供任何--image-pull-policy选项。

是否存在用于设置imagePullPolicy的全局配置,我如何仅针对某些特定部署设置此标志?

2 个答案:

答案 0 :(得分:5)

您可能已经超过了命令行可以完成的工作。有关如何在yaml文件中指定部署的信息,请参见Creating a Deployment

imagePullPolicyContainer定义的一部分。

您可以通过将kubectl添加到命令来获取任何-o yaml --dry-run命令的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 apply -f <filename>

答案 1 :(得分:1)

可以使用cli为单个--image-pull-policy指定pod

因此,您可以使用以下方法创建并运行pod

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

您可以通过执行kubectl run --help来查看其他示例性详细说明,并提供here文档。

就像我说的那样,这适用于pods,如果您添加选项--generator=deployment/v1beta1,它将创建一个Deployment。 从Kubernetes 1.18开始将弃用 pull request was approved and merged