【k8s】解决kubelet下载docker私有仓库验证问题

发布于:2024-12-07 ⋅ 阅读:(92) ⋅ 点赞:(0)

    由于自己搭建的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资源命名空间一致。


网站公告

今日签到

点亮在社区的每一天
去签到