使用 kubectl 设置镜像拉取策略

nmx*_*mxl 5 kubernetes kubectl

按照文档和这个问题,我试图在使用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 以及如何仅为某些特定部署设置此标志?

Mat*_*att 8

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

imagePullPolicy是部分集装箱的定义。

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

kubectl create deployment first-k8s-deploy \
  --image="laxman/nodejs/express-app" \
  -o yaml \
  --dry-run
Run Code Online (Sandbox Code Playgroud)

给你:

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: {}
Run Code Online (Sandbox Code Playgroud)

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

    spec:
      containers:
      - image: laxman/nodejs/express-app
        name: express-app
        resources: {}
        imagePullPolicy: Never
Run Code Online (Sandbox Code Playgroud)

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

kubectl apply -f <filename>


Cro*_*rou 8

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

因此您可以使用以下命令创建并运行pod

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

您可以通过执行查看其他示例和详细说明,并且可以在此处kubectl run --help获取文档。

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

  • 使用我的 kubectl 版本(v1.19.7)永远不需要大写“--image-pull-policy='Never'” (3认同)