在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的全局配置,我如何仅针对某些特定部署设置此标志?
答案 0 :(得分:5)
您可能已经超过了命令行可以完成的工作。有关如何在yaml文件中指定部署的信息,请参见Creating a Deployment。
imagePullPolicy
是Container定义的一部分。
您可以通过将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。