我们目前使用的containerd,之前有在config.toml文件中配置私有仓库镜像拉取所需要的账户和密码,实际我们也可以在k8s中配置拉取镜像的认证问题,这样可以不用动config.toml的配置也能拉取到镜像。
实际上有两种方法也可以在k8s中拉取镜像所需的登录状态或者是拉取镜像的凭证
1.使用secret仓库认证信息拉取镜像
1.1.创建Secret
创建Secret类型的资源来存储镜像仓库信息,注意Secret需要和后面引用secret资源的pod命名空间空间一致kubectl create secret -n <namespace> private-registry-secret \
--docker-server=10.0.1.184:30002 \
--docker-username=admin \
--docker-password=admin123451.2.验证Secret
kubectl get secret -n <namespace> private-registry-secret -o yaml1.3.在pod中引用
然后就可以在镜像中进行引用了,大致示例如下:apiVersion: v1
kind: Pod
metadata:
name: private-pod
namespace: <namespace>
spec:
containers:
- name: app
image: 10.0.1.184:30002/test/ubuntu:latest
imagePullSecrets:
- name: private-registry-secret2.通过SA自动关联Secret
2.1.创建SA并关联Secret
所有使用该SA的Pod会自动继承镜像拉取凭据,注意需要创建的sa和pod命名空间一致。kubectl create serviceaccount -n <namespace> registry-sa
kubectl patch serviceaccount -n <namespace> registry-sa \
-p '{"imagePullSecrets": [{"name": "private-registry-secret"}]}'2.2.验证SA配置
kubectl describe serviceaccount registry-sa -n <namespace>2.3.在pod中引用
apiVersion: v1
kind: Pod
metadata:
name: sa-private-pod
namespace: <namespace>
spec:
serviceAccountName: registry-sa
containers:
- name: app
image: 10.0.1.184:30002/test/ubuntu:latest实际以上两种方式都需要创建Secret,推荐的话一般使用第二种方式。
内容版权声明:除非注明,否则皆为本站原创文章。
评论列表