当前位置: 首页 > news >正文

关于kubernetes拉取私库镜像需要注意的点

刚开始完k8s,总会遇到很多坑,因为是开源项目,版本总在更新,所以要时刻关注自己使用的版本有哪些不一样的命令和参数。
本次采坑是想让k8s可以在建立pod时可以到私库中拉取镜像。根据官网或网上资料,可以通过创建secret记录私库鉴权信息。具体做法如下:
首先在其中一个node上登录私有仓库(docker 访问私库的配置,这里不做描述)
docker login my.registry
登录成功后会在/root/.docker目录下生产config.json文件,然后执行如下命令:
cat /root/.docker/config.json | base64 -w 0
该命令会将你的认证信息通过base64编码,生成一个编码之后的字符串。
在kubernetes中的master节点中创建secret.yaml:
apiVersion: v1
kind: Secret
metadata:
name: myregistrykey
type: kubernetes.io/dockercfg
data:
.dockercfg: ewoJImF1dGhzIjogewoJCSJidXMuZ2EiOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2WVdSdGFXNHhOVGszTlRNPSIKCQl9Cgl9Cn0=

在kubernetes中的master节点创建secret:
kubectl create -f secret.yaml
查看secret是否创建:
kubectl get secret
之后在创建其他元素的时候指定:imagesPullSecrets即可。
例如:
pod:
apiVersion: v1
kind: Pod
metadata:
name: redis-test
containers:

  • name: redis-test
    image: my.registry/redis
    imagePullSecrets:
  • name: myregistrykey
    至此是网上和官网提供的可以让k8s启动pod时访问私库的方法。
    很多人也是可以使用,但由于k8s一直在更新版本,网上很多资料都是建立在旧版本基础上进行验证,在新版本中一些参数有变更。
    本次采坑就是在于编辑secret元素时type和date参数有变动,从k8s 1.8之后,kubernetes.io/dockercfg就变成kubernetes.io/dockerconfigjson,相对应 .dockercfg也变成.dockerconfigjson,所以在使用k8s 1.8以后版本创建secret时,元素要变成如下:
    apiVersion: v1
    kind: Secret
    metadata:
    name: myregistrykey
    data:
    .dockerconfigjson: ewoJImF1dGhzIjogewoJCSJidXMuZ2EiOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2WVdSdGFXNHhOVGszTlRNPSIKCQl9Cgl9Cn0=
    type: kubernetes.io/dockerconfigjson
    不然在创建完secret后,pod启动会报需要验证或者找不到镜像的错误,而无法正常使用镜像。

转载于:https://blog.51cto.com/13748725/2122064

相关文章:

  • Python学习之路16-使用API
  • 报错:在做往下拉选里面拼接数据的时候 3个下拉选显示一个值 原因 @scope(单例)或者没配默认单例...
  • flask接收请求并推入栈
  • 从PRISM开始学WPF(八)导航Navigation?
  • 手把手教你将单机游戏改造成对战网游(附详细教程)
  • P2264 情书
  • Spring Boot的@Service和@Autowired和@ComponentScan注解
  • 两个变量交换的四种方法(Java)
  • 分布式消息队列ActiveMQ+Spring整合
  • Vue2.x学习三:事件处理生命周期钩子
  • MySQL的prompt不生效的问题
  • Django之ModelForm(二)-----ModelForm组件
  • Lua使用总结
  • Python模块-threading模块
  • xtrabackup 备份原理
  • 2017-09-12 前端日报
  • Angular4 模板式表单用法以及验证
  • Effective Java 笔记(一)
  • JavaScript创建对象的四种方式
  • Java精华积累:初学者都应该搞懂的问题
  • JDK9: 集成 Jshell 和 Maven 项目.
  • JS 面试题总结
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 面试遇到的一些题
  • 配置 PM2 实现代码自动发布
  • 浅谈Golang中select的用法
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 删除表内多余的重复数据
  • 我从编程教室毕业
  • 在weex里面使用chart图表
  • 找一份好的前端工作,起点很重要
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • #stm32整理(一)flash读写
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (二)正点原子I.MX6ULL u-boot移植
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .net 7 上传文件踩坑
  • .net6使用Sejil可视化日志
  • /proc/vmstat 详解
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [ACTF2020 新生赛]Include
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [BZOJ] 2427: [HAOI2010]软件安装
  • [BZOJ4566][HAOI2016]找相同字符(SAM)
  • [CareerCup] 12.3 Test Move Method in a Chess Game 测试象棋游戏中的移动方法
  • [Flutter]WindowsPlatform上运行遇到的问题总结
  • [Golang]K-V存储引擎的学习 从零实现 (RoseDB mini版本)
  • [HCTF 2018]WarmUp (代码审计)
  • [LeetBook]【学习日记】获取子字符串 + 颠倒子字符串顺序
  • [LeetCode] 596:超过5名学生的课
  • [leetcode]Symmetric Tree