[英]How to pull image from dockerhub in kubernetes?
我计划在我的 kubernetes-clustering 基础设施中部署一个应用程序。 我将图像推送到 dockerhub repo。 如何从 dockerhub 中提取图像?
一行命令创建Docker注册表机密
kubectl create secret docker-registry regcred --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email> -n <your-namespace>
然后,您可以在规范下的部署文件中使用它
spec:
containers:
- name: private-reg-container-name
image: <your-private-image>
imagePullSecrets:
- name: regcred
更多细节: https : //kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/#create-a-secret-in-the-cluster-that-holds-your-authorization-代币
Kubernetes运行docker docker pull pseudo/your-image:latest
引擎盖下。 Kubernetes资源中的image
字段只是要运行的docker图像。
spec:
containers:
- name: app
image: pseudo/your-image:latest
[...]
由于docker镜像名称不包含特定的docker注册表URL,因此默认为docker.io 。 你的形象实际上是docker.io/pseudo/your-image:latest
如果您的映像托管在私有docker hub repo中 ,则需要在spec字段中指定image pull secret。
spec:
containers:
- name: app
image: pseudo/your-image:latest
imagePullSecrets:
- name: dockerhub-credential
以下是创建包含docker hub登录的秘密的文档: https : //kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
使用kubectl set image
docker pull
或kubectl set image
yaml 部署示例
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
使用kubectl get deployments
启动容器并显示部署状态
结果
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 18s
现在使用set image
更新 kubernetes 中的set image
kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1
并显示带有rollout
状态更新图像
kubectl rollout status deployment/nginx-deployment
注意: ngnix
是container ->name
containers:
- name: nginx
image: nginx:1.14.2
nginx:1.16.1
是nginx:1.16.1
中的镜像版本,是推荐的更新版本
如果您决定删除更新并回滚到以前的版本,请使用rollout undo
kubectl rollout undo deployment/nginx-deployment
有关更多信息,请使用文档
#!/bin/bash
for ns in $(kubectl get namespaces |grep -v NAME|awk '{print $1}')
do
kubectl create secret docker-registry docker.registry \
--docker-username=<MyAccountName> \
--docker-password='MyDockerHubPassword' -n $ns
done
for ns in $(kubectl get namespaces|grep -v NAME|awk '{print $1}')
do
for sa in $(kubectl -n $ns get sa|grep -v SECRETS|awk '{print $1}')
do
kubectl patch serviceaccount $sa -p '{"imagePullSecrets": [{"name": "docker.registry"}]}' -n $ns
if [ $? -eq 0 ]; then
echo $ns $sa patched
else
echo Error patching $ns $sa
fi
done
done
如果您愿意,您可以只修补特定的命名空间。
让我知道事情的后续。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.