系列目录

上一节我们分别使用纯文本账户密码和docker的config文件一创建一个kubernetes secret对象,并且把它添加到containers的imagePullSecrets字段用以拉取私仓镜像.这一节我们讲解另一种方法:即把secret附加到default这个serviceaccount上,这样拉取镜像的时候就不需要每次都在yml文件里声明imagePullSecrets字段.

至于为什么把镜像的拉取secret附加到default这个serviceaccont上就可以实现无密钥拉取,实际上这里涉及到了kubernetes的RBAC权限,本教程其它章节有介绍过,这里不再详细介绍.默认情况下,拉取镜像使用的是default这个账户,如果给这个账户添加了镜像拉取secret,则它会在拉取镜像时自动使用附加的secret,这样就不用在每个yml文件里都声明imagePullSecrets字段了.

其实知道了原理,并且有了上一节的基础,做法也非常简单,只需要一行命令即可

kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "regcred"}]}'

regcred是我们上一节生成的密钥.

完了之后,大家可以自己验证一下,重新编排一个yml文件,拉取本地没有的镜像,可以看到,yml文件里没有声明imagePullSecrets,也同样可以拉取镜像.我的编排文件如下,非常简单,供大家参考

apiVersion: v1
kind: Pod
metadata:
name: testport
spec:
containers:
- name: cat-hosts
image: 192.168.124.43:8002/rancher/nginx-ingress-controller-defaultbackend:1.4
imagePullPolicy: IfNotPresent

使用修改yml的方式为default用户增加imagePullSecrets.

上述操作虽然看似非常简单,却要求非常高,否则很容易出错,当然大家可以选择记住这个命令,然后类似的命令越来越多时,全部记起来显然不是一个好的办法,我们需要一种可行的操作方法.

  1. 把sa的编排文件导出到其它文件
kubectl get serviceaccounts default -o yaml > ./sa.yaml

内容看起来类似如下:

apiVersion: v1
kind: ServiceAccount
metadata:
creationTimestamp: 2015-08-07T22:02:39Z
name: default
namespace: default
resourceVersion: "243024"
selfLink: /api/v1/namespaces/default/serviceaccounts/default
uid: 052fb0f4-3d50-11e5-b066-42010af0d7b6
secrets:
- name: default-token-uudge
  1. 我们编辑这个文件,增加一个imagePullSecrets字段,并把regcred赋给它,这样二者之间就建立了关联
apiVersion: v1
kind: ServiceAccount
metadata:
creationTimestamp: 2015-08-07T22:02:39Z
name: default
namespace: default
selfLink: /api/v1/namespaces/default/serviceaccounts/default
uid: 052fb0f4-3d50-11e5-b066-42010af0d7b6
secrets:
- name: default-token-uudge
imagePullSecrets:
- name: regcred
  1. 更新default这个账户
kubectl replace serviceaccount default -f ./sa.yaml

kubernetes实战篇之为默认账户创建镜像拉取密钥的更多相关文章

  1. kubernetes之pod生命周期,pod重启策略, 镜像拉取策略

    pod声明周期(状态):pending , running, succeeded, failed, unknown 挂起(Pending):Pod 已被 Kubernetes 系统接受,但有一个或者多 ...

  2. kubernetes实战篇之helm填坑与基本命令

    系列目录 其实前面安装部分我们已经分享一些互联网上其它网友分享的一些坑,本篇介绍helm的基本使用以及在使用过程中碰到的一些坑. 客户端版本和服务端版本不一致问题 有些朋友可能在使用helm init ...

  3. Kubernetes Pod 镜像拉取策略

    Kubernetes Pod 镜像拉取策略 官方文档:https://kubernetes.io/docs/concepts/containers/images/ • IfNotPresent:默认值 ...

  4. kubernetes之镜像拉取策略ImagePullSecrets;

    1.容器镜像是什么? 1.容器镜像(Container Image)是最终运行的软件: 2.容器镜像(最初为Docker镜像,现在叫OCI镜像更合适)是将软件打包的形式.但是容器镜像还可以携带额外的设 ...

  5. kubernetes实战篇之创建密钥自动拉取私服镜像

    系列目录 前面我们讲解了如何搭建nexus服务器,以及如何使用nexus搭建docker私有镜像仓库,示例中我们都是手动docker login登陆私服,然后通过命令拉取镜像然后运行容器.然而这种做法 ...

  6. kubernetes实战篇之helm安装

    系列目录 Helm是kubernetes的应用包管理工具,是CNCF孵化器下的一个项目,主要用来管理 Charts.类似于 Ubuntu 中的 APT 或 CentOS 中的 YUM.它提供了一种简单 ...

  7. kubernetes实战篇之nexus oss服务器部署及基于nexus的docker镜像仓库搭建

    系列目录 Nexus oss仓库管理平台搭建 Nexus是一款仓库管理工具,支持Npm,bower,maven,nuget,apt,yum甚至docker,helm等各种仓库,说的通俗以下,就是私服镜 ...

  8. kubernetes实战篇之windows添加自签ca证书信任

    系列目录 由于服务端设置了https访问,因此如果通过浏览器访问时会提示证书不被信任,但是仍然可以通过处理继续访问.但是在自动化环境中,都是通过命令来请求的,这样不受信任的https就会报错误,这样我 ...

  9. kubernetes国内镜像拉取

    因国内访问不到goole服务器,只能拉取国内的镜像,这里以阿里云为例. 安装minikube时报failed to pull image "k8s.gcr.io/kube-apiserver ...

随机推荐

  1. Docker 入门基础

    Docker是一个能把开发的应用程序自动部署到容器的开源引擎.Docker是新的容器化技术,轻巧,易移植[Build Once, Configure Once And Run Anywhere].Do ...

  2. .NET基础拾遗

    原帖地址: http://www.cnblogs.com/edisonchou/p/4787775.html

  3. 本文摘录 - FlumeJava

    本文节选不保证论文的完整性和理解的准确性  原始的MapReduce.分Map,Shuffle,Reduce. Map里包含shards. Shuffle理解为groupByKey的事情.Reduce ...

  4. mysql重置root密码,并设置可远程访问

    linux系统: mysqld_safe --skip-grant-tables & mysql -u root use mysql UPDATE user SET host = '%' wh ...

  5. DataTable转换为Entity(反射&&泛型)

    public static IEnumerable<T> Parse<T>(IEnumerable<DataRow> rows) where T : class, ...

  6. 解决WPF的ScrollViewer在使用触摸屏时,滑到尽头窗口抖动的情况

    原文:解决WPF的ScrollViewer在使用触摸屏时,滑到尽头窗口抖动的情况 wpf的ScrollViewer在触摸条件下 默认在尽头时会有一个窗口一起被拖动的FeedBack,但对用户的交互很不 ...

  7. jquery动态操作元素

    <!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  8. ASP.NET MVC4使用JCrop裁剪图片并上传

    需要用到的jquery插件Jcrop .Jquery.form 百度webuploader插件( http://fex.baidu.com/webuploader/ ) 引用下载好的css和js文件 ...

  9. jq自定义下拉菜单,在点击非当前下拉菜单区域时,关闭下拉菜单(点击事件的对象不是目标元素本身)

    jq自定义下拉菜单,在点击非当前下拉菜单区域时,关闭下拉菜单(点击事件的对象不是目标元素本身) //点击非当前下拉菜单区域时,关闭下拉菜单 $(document).mousedown(function ...

  10. Linux ssh密钥自动登录 专题

    在开发中,经常需要从一台主机ssh登陆到另一台主机去,每次都需要输一次login/Password,很繁琐.使用密钥登陆就可以不用输入用户名和密码了 实现从主机A免密码登陆到主机B(即把主机A的pub ...