【k8s】解决kubelet下载docker私有仓库验证问题
由于自己搭建的harbor仓库,开启了登录验证,那么在kubelet触发docker去下载镜像时需要提供登录验证信息。可以通过以下方式解决:
kubectl create secret generic harborregcred[secret 的名称] -n xxxx[根据需要设置命名空间] --from-file=.dockerconfigjson=$HOME/.docker/config.json --type=kubernetes.io/dockerconfigjson
上面的语句就是创建了一个: secret ,里面包括了:docker login --usernmae=xxx 生成之后的信息
[root@master sys]# cat $HOME/.docker/config.json
{
"auths": {
"xxx.xxx.xxx.22:444": {
"auth": "anRramRldjpKdGtqRGV2MDAx"
}
}
执行docker login --username=bbbb xxxx[私有仓库地址],成功之后会生成一个config.json信息,然后用这个信息创建成一个secret,然后添加到创建k8s资源的yaml文件中,比如创建一个deployment.yaml,配置如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: auth
namespace: jdev
labels:
app: auth
spec:
replicas: 1
selector:
matchLabels:
app: auth
template:
metadata:
name: auth
labels:
app: auth
spec:
imagePullSecrets:
- name: harborregcred 【这个就是上面创建的secret】
containers:
- name: jtkj-auth
image: 私有镜像库地址/dev/auth:latest
imagePullPolicy: Always
ports:
- containerPort: 9200
name: authport
protocol: TCP
resources:
limits:
cpu: 500m
memory: 2048Mi
requests:
cpu: 250m
memory: 1024Mi
kubectl create:这是 kubectl 命令的一部分,用于创建 Kubernetes 资源。
secret:这是资源类型,表示你要创建的是一个秘密对象(Secret)。
generic:这是子命令,用于创建一个通用类型的秘密对象。通用秘密对象可以存储任意键值对的数据,非常适合存储像 Docker 配置文件这样的数据。
--type:这个选项指定了秘密对象的类型。类型可以帮助 Kubernetes 理解如何处理和使用这个秘密对象。
kubernetes.io/dockerconfigjson:这是特定于 Docker 配置文件的秘密类型。Kubernetes 使用这种类型来识别和处理包含 Docker 认证信息的秘密对象。
注意点就是: 创建的secret的命名空间和需要创建的k8s资源命名空间一致。