k8s 配置私有镜像仓库认证

1. 创建 Docker 注册表的 Secret

首先,创建一个类型为 dockerconfigjsonSecret,用于存储 Docker 注册表的认证信息。

方法 1: 使用 Docker CLI 和 kubectl

不适用于阿里云格式不一样

  1. 登录 Docker 注册表
docker login <your-registry-server>

这会生成一个包含认证信息的配置文件,通常位于 ~/.docker/config.json

  1. 创建 Secret
kubectl -n prom create secret generic myregistrykey \
  --from-file=.dockerconfigjson=$HOME/.docker/config.json \
  --type=kubernetes.io/dockerconfigjson
方法 2: 手动创建 YAML 文件

不适用于阿里云格式不一样

  1. Base64 编码 config.json 文件
cat ~/.docker/config.json | base64 -w 0
  1. 创建 Secret YAML 文件
apiVersion: v1
kind: Secret
metadata:
  name: myregistrykey
data:
  .dockerconfigjson: <base64-encoded-json-string>
type: kubernetes.io/dockerconfigjson
  1. 应用 Secret
kubectl apply -f myregistrykey-secret.yaml

2. 将 imagePullSecrets 引用到 Pod

在创建 Pod 时,你需要在 Pod 的 YAML 文件中使用 imagePullSecrets 字段引用这个 Secret

Pod YAML 示例
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mycontainer
    image: <your-registry-server>/myimage:mytag
  imagePullSecrets:
  - name: myregistrykey
详细说明:
  • image** 字段**: 指定容器要拉取的镜像,格式为 <your-registry-server>/myimage:mytag
  • imagePullSecrets** 字段**: 用于指定拉取私有镜像时使用的 Secret。它是一个数组,因此你可以指定多个 Secret

3. 设置命名空间的默认 imagePullSecrets

如果你希望在某个命名空间中默认使用某个 imagePullSecrets,你可以修改该命名空间的 ServiceAccount

修改默认 ServiceAccount
apiVersion: v1
kind: ServiceAccount
metadata:
  name: default
  namespace: mynamespace
imagePullSecrets:
- name: myregistrykey
应用 ServiceAccount 配置:
kubectl apply -f serviceaccount.yaml

4. 验证配置

创建 Pod 后,可以通过以下命令查看 Pod 是否正常启动,或者查看其事件日志,以确认镜像是否成功拉取:

kubectl get pods
kubectl describe pod mypod
### Kubernetes 私有镜像仓库配置教程 在 Kubernetes 中,如果需要从私有镜像仓库拉取镜像,则必须完成相应的认证配置。以下是详细的配置流程: #### 1. 创建 Docker Secret 为了能够让 Kubernetes 使用私有镜像仓库中的镜像,首先需要创建一个 `Docker Secret` 来存储认证信息。可以通过以下命令实现: ```bash kubectl create secret docker-registry myregistrykey \ --docker-server=<your-registry-server> \ --docker-username=<your-name> \ --docker-password=<your-pword> \ --docker-email=<your-email> ``` 此命令会生成名为 `myregistrykey` 的 Secret 对象[^1]。 #### 2. 查看已创建的 Secret 可以使用以下命令来验证并查看刚刚创建的 Secret 是否成功以及其具体内容: ```bash kubectl get secrets kubectl describe secret myregistrykey ``` #### 3. 在 Deployment 或 Pod 中引用 Secret 当创建 Deployment 或者 Pod 资源时,在 YAML 文件中通过 `imagePullSecrets` 字段引入之前创建的 Secret。例如: ```yaml apiVersion: v1 kind: Pod metadata: name: private-image-test-pod spec: containers: - name: uses-private-image image: <your-registry-server>/private-image:v1 imagePullSecrets: - name: myregistrykey ``` 上述 YAML 定义了一个 Pod 并指定了该 Pod 所需的私有镜像及其对应的拉取凭证[^3]。 #### 4. 应用配置文件 保存上面定义的内容到 `deployment.yaml` 文件后执行以下命令使其生效: ```bash kubectl apply -f deployment.yaml ``` 这一步骤将会部署带有指定 Secret 认证信息的服务实例[^2]。 #### 5. 设置命名空间级别的默认 Image Pull Secrets (可选) 为了让同一命名空间下的所有资源都自动应用某个特定的 Secret 进行镜像拉取操作而无需每次都单独声明,还可以设置整个命名空间范围内的默认 `ImagePullSecrets` 值。具体做法如下所示: ```bash kubectl patch namespace default -p '{"metadata":{"annotations":{"imagepullsecrets":"myregistrykey"}}}' ``` 或者更推荐的方式是在新建 Namespace 之初就加入相应字段描述: ```yaml apiVersion: v1 kind: Namespace metadata: name: example-namespace annotations: imagePullSecrets: | - name: myregistrykey ``` #### 6. 登录至本地环境测试连接性(辅助步骤) 另外也可以先尝试直接利用客户端工具确认能否正常访问目标注册中心作为前期准备工作的一部分: ```bash docker login -u admin -p 123456 192.168.0.76:81 ``` 这样可以帮助排查可能存在的网络权限等问题[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值