概述
本文介绍如何通过创建Secret来拉取私有镜像仓库的镜像,从而完成Deployment的创建。
使用私有仓库的问题
- 拉取镜像时需要认证
使用私有仓库时需要通过用户名和密码进行认证。所以,若是直接配置镜像仓库的地址,无法拉取到镜像文件,会报拉取镜像的错误。
- 可能由于网络问题导致镜像拉取失败
若是通过公网来拉取镜像,可能会由于网络原因导致惊醒拉取失败。
使用方式说明
在使用私有仓库时,需要进行认证。可以通过以下步骤来使用私有仓库:
- 在对应命名空间下创建一个Secret对象
创建secret的命令如下:
kubectl create secret docker-registry myregistrykey \
--docker-server=mycluster.icp:8500 \
--docker-username=<user_name> \
--docker-password=<user_password> \
--docker-email=<user_email> \
--namespace mynamespace
- 在创建pod或deployment的配置文件中引用该Secret对象
也就是在选项imagePullSecrets中指定myregistrykey。
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: nginx-demo
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
hostNetwork: false
containers:
- name: nginx
image: mycluster.icp:8500/developer/nginx
ports: []
resources:
limits: {}
imagePullSecrets:
- name: myregistrykey
这里一定要注意imagePullSecrets选项的位置,不要搞错了。其name,就是第1步我们创建的secret对象的名称。文章来源:https://www.toymoban.com/news/detail-581647.html
使用Secret的实战步骤
创建secret
kubectl create secret docker-registry node-9005-pull-secret \
--docker-server=xxx-vpc.cn-beijing.cr.aliyuncs.com \
--docker-username=myuser \
--docker-password=mypass \
--docker-email=myuser@126.com \
--namespace mytest
创建Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: node-9005-dep
namespace: mytest
spec:
replicas: 2
selector:
matchLabels:
app: node-9005
template:
metadata:
name: node-9005
labels:
app: node-9005
spec:
containers:
- name: nodejs
image: xxx-vpc.cn-beijing.cr.aliyuncs.com/others/node-9005:20230505
imagePullPolicy: IfNotPresent
imagePullSecrets:
- name: node-9005-pull-secret
注意:我这里用的是阿里云的仓库,所以使用了vpc的域名来拉取惊醒,这样镜像拉取会容易。文章来源地址https://www.toymoban.com/news/detail-581647.html
参考文献
- 为特定名称空间创建 imagePullSecrets
到了这里,关于k8s实战-如何使用私有镜像仓库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!