Reputation: 2100
Following the docs and this question, I am trying to pull a image that I created locally with docker while creating deployment with kubectl. I am looking for something like this,
kubectl create deployment first-k8s-deploy --image="laxman/nodejs/express-app" --image-pull-policy="never"
Looking into kubectl create deployment --help
doesn't provide any --image-pull-policy
option.
Is there any global config to set imagePullPolicy and how can I set this flag for some specific deployments only?
Upvotes: 12
Views: 23986
Reputation: 11388
It's possible to specify --image-pull-policy
for a single pod
using the cli.
So you can create and run a pod
using:
kubectl run PODNAME --image='laxman/nodejs/express-app' --image-pull-policy='Never'
You can see other examples and detailed explanation by doing kubectl run --help
and documentation is available here.
Like I said this applied to pods
if you add option --generator=deployment/v1beta1
it will create a Deployment.
This is going to be Deprecated starting from Kubernetes 1.18 pull request was approved and merged.
Upvotes: 8
Reputation: 74630
You might have gone past what can be done with the command line. See Creating a Deployment for how to specify a deployment in a yaml file.
The imagePullPolicy
is part of the Container definition.
You can get the yaml for any kubectl
command by adding -o yaml --dry-run
to the command. Using your example deployment:
kubectl create deployment first-k8s-deploy \
--image="laxman/nodejs/express-app" \
-o yaml \
--dry-run
Gives you:
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: {}
Then add the imagePullPolicy
property into a container in the list:
spec:
containers:
- image: laxman/nodejs/express-app
name: express-app
resources: {}
imagePullPolicy: Never
The yaml file you create can then be deployed with the following command
kubectl apply -f <filename>
Upvotes: 20