在 Kubernetes 集群如何支持私有镜像

本文详细介绍了在Kubernetes集群中如何使用私有镜像进行容器编排,包括创建密钥编排和实现无密钥编排的步骤。用户需要配置Docker仓库的认证信息,然后在YAML文件中添加imagePullSecrets,或者将secret添加到namespace的default service account中,以实现私有镜像的自动拉取。

简介: 本文主要为大家介绍在Kubernetes集群,如何使用私有镜像编排容器。

vcg_VCG211141660873_RF.jpg


镜像下载、域名解析、时间同步请点击 阿里巴巴开源镜像站

操作方法

Kubernetes集群支持使用私有镜像编排容器。首先需创建密钥用于编排容器,并且可实现无密钥编排。

一、使用密钥编排容器

1、使用kubectl连接Kubernetes集群的Master节点,详情请参见通过kubectl连接Kubernetes集群
2、执行如下命令,创建拉取私有镜像的密钥。

kubectl create secret docker-registry [$Reg_Secret] --docker-server=[$Registry] --docker-username=[$Username] --docker-password=[$Password] --docker-email=[$Email]

注:

  • [$Reg_Secret]为密钥的键名称,可自行定义。
  • [$Registry]为Docker仓库地址。
  • [$Username]为登录Docker仓库的用户名。
  • [$Password]为登录Docker仓库的密码。
  • [$Email]为邮件地址,该配置项可选填。

3、在编排的YAML文件中加入密钥相关配置项,完成后YAML文件类似如下。

containers:
    - name: foo
     image: [$Registry]/abc/test:1.0
imagePullSecrets:
    - name: [$Reg_Secret]

注:

  • imagePullSecrets 配置为在声明拉取镜像时指定的密钥。
  • 详情信息参见官方文档使用私有仓库

二、实现无密钥编排

为了避免每次使用私有镜像部署时,都需要引用密钥,您可将secret添加到namespace的default service account中,参见Add ImagePullSecrets to a service account
本例中采用手动配置的方式,修改命名空间的默认服务帐户default,从而将此secret作为imagePullSecret。
1、执行如下命令,查看之前创建的密钥。

kubectl get secret [$Reg_Secret]

系统显示类似如下:

NAME          TYPE                             DATA      AGE
[$Reg_Secret] kubernetes.io/dockerconfigjson   1         13m

2、依次执行如下命令,将服务账号default的配置导出到sa.yaml文件并查看该文件。

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-uudge

3、编辑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

4、执行如下命令,用sa.yaml配置文件更新default服务账号。

kubectl replace serviceaccount default -f ./sa.yaml

系统显示类似如下:

serviceaccount "default" replaced

5、本文以编排tomcat为例,执行kubectl create -f命令创建Pod。该配置文件如下所示。

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]/abc/test:1.0
        ports:
        - containerPort: 8080

6、若配置正确,Pod会启动成功。执行如下命令,查看配置项。

kubectl get pod tomcat-XXX -o yaml

系统显示类似如下,确认无密钥编排成功。

spec:
  imagePullSecrets:
  - nameregsecretey

 本文转自:在 Kubernetes 集群如何支持私有镜像-阿里云开发者社区

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值