背景简介
Kubernetes配置Image Pull Secret,是为了让Pod在拉取私有镜像仓库中的镜像时,能够验证身份,确保容器运行所需的镜像安全可靠。
环境信息
- Kubernetes v1.29.1。【Kubernetes - 安装】
示例参数
演示用的示例参数请根据实际使用场景进行变更。
- 镜像库: repo.test.com
- 用户名: tester
- 密码: password
- 需要拉取的镜像: nginx:latest
详细步骤
注意点:
- 请确认是否需要指定 namespace,如需指定 namespace 请在 kubectl 指令中添加 -n your-namespace
第一步: 创建一个名为 docker-config.json
的文件,该文件将包含用于登录私有镜像库的凭据。
$ nano docker-config.json
{
"auths": {
"repo.test.com": {
"username": "tester",
"password": "password"
}
}
}
第二步: 生成 docker-config.json
配置文件的 base64 编码串,用于后续使用
$ base64 docker-config.json
ewogICJhdXRocyI6IHsKICAgICJyZXBvLnRlc3QuY29tIjogewogICAgICAidXNlcm5hbWUiOiAi
dGVzdGVyIiwKICAgICAgInBhc3N3b3JkIjogInBhc3N3b3JkIgogICAgfQogIH0KfQo=
第三步: 创建一个 Kubernetes Secret 资源文件,例如 image-pull-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: image-pull-secret
type: kubernetes.io/dockerconfigjson
data:
.dockerconfigjson: ewogICJhdXRocyI6IHsKICAgICJyZXBvLnRlc3QuY29tIjogewogICAgICAidXNlcm5hbWUiOiAidGVzdGVyIiwKICAgICAgInBhc3N3b3JkIjogInBhc3N3b3JkIgogICAgfQogIH0KfQo=
apiVersion
: v1:指定API版本。kind
: Secret:指定资源类型为Secret。metadata.name
:指定Secret的名称。type
:指定Secret的类型为 kubernetes.io/dockerconfigjson,这是用于Docker配置的Secret类型。data
:包含 Base64 编码的 docker-config.json 内容。
第四步: 使用kubectl应用Secret资源文件。
$ kubectl apply -f image-pull-secret.yaml -n your-namespace
secret/image-pull-secret created
第五步: 创建一个Pod资源文件,例如 nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: repo.test.com/nginx:latest
imagePullSecrets:
- name: image-pull-secret
spec.containers.image
:指定要拉取的镜像。imagePullSecrets
:指定在拉取镜像时使用的Secret。
第六步: 使用 kubectl 应用 Pod 资源文件。
$ kubectl apply -f nginx-pod.yaml -n your-namespace
pod/nginx-pod created
第七步: 查看启动状态
$ kubectl get pod -n your-namespace
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 107s
以上便是本文的全部内容,感谢您的阅读,如遇到任何问题,欢迎在评论区留言,我会通过邮件回复。