k8s如何支持私有镜像

实现无密钥编排

kubectl create secret docker-registry regsecret --docker-server=registry.cn-shenzhen.aliyuncs.com --docker-username=abc@aliyun.com --docker-password=xxxxxx --docker-email=abc@aliyun.com

--docker-server 参数为私有镜像地址,阿里云地址详解:

公网:registry.cn-shenzhen.aliyuncs.com

vpc网:registry-vpc.cn-shenzhen.aliyuncs.com

经典网:registry-internal.cn-shenzhen.aliyuncs.com

其中:

regsecret: 指定密钥的键名称,可自行定义。

—docker-server:指定 Docker 仓库地址。
—docker-username: 指定 Docker 仓库用户名。
—docker-password:指定 Docker 仓库登录密码。
—docker-email:指定邮件地址(选填)。

yml 文件加入密钥参数。

containers:
- name: foo
image: registry-internal.cn-hangzhou.aliyuncs.com/abc/test:1.0
imagePullSecrets:
- name: regsecret

其中:

imagePullSecrets 是声明拉取镜像时需要指定密钥。

regsecret 必须和上面生成密钥的键名一致。

image 中的 Docker 仓库名称必须和 --docker-server 中的 Docker 仓库名一致。

详情信息参见官方文档 使用私有仓库。

实现无密钥编排

为了避免每次使用私有镜像部署时,都需要引用密钥,您可将secret添加到namespace的default serviceaccount中,参见Add ImagePullSecrets to a service account。

首先找到前面创建的拉取私有镜像的secret。

# kubectl get secret regsecret

NAME        TYPE                             DATA      AGE
regsecret kubernetes.io/dockerconfigjson 1 13m

本例中采用手动配置的方式,修改命名空间的默认服务帐户default,从而将此secret作为imagePullSecret。

首先创建一个sa.yaml配置文件,将服务账号default的配置导入到该文件中。

  • kubectl get serviceaccounts default -o yaml > ./sa.yaml
    
    cat  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-uudgeoken-uudge

    执行vim sa.yaml命令,删除resourceVersion,并增加拉取镜像的密钥配置项imagePullSecrets。修改后的配置如下。

  • 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: regsecret

随后用 sa.yaml配置文件替换default的服务账号配置。

kubectl replace serviceaccount default -f ./sa.yaml

serviceaccount "default" replaced

以一个tomcat编排为例,执行kubectl create -f 命令创建。

apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
name: tomcat-deployment
labels:
app: tomcat
spec:
replicas: 1
selector:
matchLabels:
app: tomcat
template:
metadata:
labels:
app: tomcat
spec:
containers:
- name: tomcat
image: registry-internal.cn-hangzhou.aliyuncs.com/abc/test:1.0 #替换为您自己的私有镜像地址
ports:
- containerPort: 8080

若配置正常,Pod会启动成功。然后执行 kubectl get pod tomcat-xxx -o yaml命令,你可看到以下配置项。

spec:
imagePullSecrets: - nameregsecretey

最新文章

  1. jsf组件对应表
  2. [课程设计]任务进度条&开发日志目录
  3. three.js 根据png生成heightmap
  4. 邻接表有向图(三)之 Java详解
  5. mysql用命令行导入sql文件
  6. Wordpress更改后台地址
  7. 我就是认真:Linux SWAP 深度解读(必须收藏)
  8. Copy-On-Write技术 (摘录)
  9. com.intellij.javaee.oss.admin.jmx.JmxAdminException: com.intellij.execution.ExecutionException idea 导出war 报错
  10. iOS开发人员必看的精品资料(100个)
  11. javsscript总结
  12. react球形文字旋转标签
  13. Mysql 存储过程查询结果赋值到变量的方法
  14. Java学习之代码块(静态,构造代码块,构造方法)执行顺序
  15. 防止get访问方式乱码
  16. s5-13 RIP 为什么会 衰败
  17. [BeiJing2011]元素[贪心+线性基]
  18. java8,方法引用
  19. 我们在地址栏中输入一个网址,比如百度(www.baidu.com)后浏览器做了哪些事
  20. Lua学习笔记(2): 流程控制与循环以及初涉迭代器

热门文章

  1. [LeetCode] 112. Path Sum 路径和
  2. jmap使用
  3. redis主从分节
  4. HTTP协议:从原理到流程|乐字节
  5. ForEach Controller学习
  6. LeetCode | 152. 乘积最大子序列
  7. php将二维数组转换成我想要的一维数组
  8. 使用Python快速实现简单的人脸检测
  9. 记一次stm8l程序跑飞
  10. LeetCode977.Squares of a Sorted Array