'setting image pull policy using kubectl
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?
Solution 1:[1]
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>
Solution 2:[2]
It's possible to specify --image-pull-policy
for a single pod
using 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 exampled 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.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | laxman |
Solution 2 |