k8s中使用docker作为容器运行时如何拉取私有镜像仓库镜像
接着根据提示输入用户名密码,完成之后会打印config.json文件生成的位置。然后通过config.json文件生成secret,如下。方括号中的地址填写镜像仓库的地址,也可以填域名。配置完重启docker,重新拉取镜像即可。在部署应用的时候添加对应的serviceaccount,如下。除了上述方法也可以通过指定用户名密码直接创建secret。最后在部署应用的添加imagePullSecrets
·
当在k8s中拉取私有镜像仓库的镜像时会碰到没有权限的问题,如果使用的容器运行时是docker时,可以使用以下三种方法解决:
- 配置daemon.json文件
在/etc/docker/daemon.json文件(如果不存在则需要手动创建)中添加以下内容
{
"insecure-registries": ["x.x.x.x/x"]
}
方括号中的地址填写镜像仓库的地址,也可以填域名。配置完重启docker,重新拉取镜像即可。
- 创建kubernetes.io/dockerconfigjson类型的secret
首先使用docker命令登录镜像仓库
docker login xxxx
接着根据提示输入用户名密码,完成之后会打印config.json文件生成的位置。然后通过config.json文件生成secret,如下
kubectl create secret generic image-pull-secret \
--from-file=.dockerconfigjson=/root/.docker/config.json \
--type=kubernetes.io/dockerconfigjson
除了上述方法也可以通过指定用户名密码直接创建secret
kubectl create secret docker-registry image-pull-secret \
--docker-server=xxxxxxx \
--docker-username='xxxxxx' \
--docker-password='xxxxxx'
最后在部署应用的添加imagePullSecrets
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
template:
spec:
containers:
- name: test
image: test:latest
imagePullSecrets:
- name: image-pull-secret
- 在serviceaccount中增加imagePullSecrets
在第二种办法中创建了secret后,也可以将其添加到serviceaccount中
kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "image-pull-secret"}]}'
在部署应用的时候添加对应的serviceaccount,如下
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
template:
spec:
containers:
- name: test
image: test:latest
serviceAccount: default
`
更多推荐
已为社区贡献16条内容
所有评论(0)