在文档和这个问题之后,我尝试提取我在使用kubectl创建部署时使用docker在本地创建的映像。我在找这样的东西,
kubectl先创建部署-k8s-deploy--image=“laxman/nodejs/express-app”--image pull policy=“never”
查看kubectl创建部署--help
不提供任何--映像拉取策略
选项。
是否有任何全局配置来设置ImagePull策略,以及如何仅为某些特定部署设置此标志?
您可能已经越过了可以用命令行完成的操作。有关如何在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请求被批准并合并。