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

k8s 如何支持私有镜像的更多相关文章

  1. k8s创建harbor私有镜像仓库

    1. 部署准备 准备harbor软件包 在部署节点上: mv harbor-offline-installer-v1.4.0.tgz /opt/ && cd /opt tar zxvf ...

  2. 转 docker创建私有仓库和k8s中使用私有镜像

    docker私有仓库建立 环境说明我们选取192.168.5.2做私有仓库地址yum install docker -y1.启动docker仓库端口服务 docker run -d -p 5000:5 ...

  3. 如何在K8S中优雅的使用私有镜像库 (Docker版)

    前言 在企业落地 K8S 的过程中,私有镜像库 (专用镜像库) 必不可少,特别是在 Docker Hub 开始对免费用户限流之后, 越发的体现了搭建私有镜像库的重要性. 私有镜像库不但可以加速镜像的拉 ...

  4. 阿里云函数计算发布新功能,支持容器镜像,加速应用 Serverless 进程

    我们先通过一段视频来看看函数计算和容器相结合后,在视频转码场景下的优秀表现.点击观看视频 >> FaaS 的门槛 Serverless 形态的云服务帮助开发者承担了大量复杂的扩缩容.运维. ...

  5. 使用Nexus3构建Docker私有镜像仓库

    一.安装Nexus3 Nexus3是Sonatype提供的仓库管理平台,Nuexus Repository OSS3能够支持Maven.npm.Docker.YUM.Helm等格式数据的存储和发布:并 ...

  6. 详解docker实战之搭建私有镜像仓库 - kurbernetes

    1.实战目的 搭建企业私有的镜像仓库,满足从开发环境推送和拉取镜像.当我们使用k8s来编排和调度容器时,操作的基本单位是镜像,所以需要从仓库去拉取镜像到当前的工作节点.本来使用公共的docker hu ...

  7. google gcr.io、k8s.gcr.io 国内镜像

    1.首先添加docker官方的国内镜像 sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ...

  8. Docker部署Registry私有镜像库

    拉取镜像 docker pull registry:2.6.2   生成账号密码文件,这里采用htpasswd方式认证 docker run --rm --entrypoint htpasswd re ...

  9. harbor私有镜像仓库的搭建与使用与主从复制

    harbor私有镜像仓库,私有仓库有两种,一种是harbor,一种是小型的私有仓库,harbor有两种模式,一种是主 从,一种是高可用仓库,项目需求,需要两台服务器,都有docker.ldap权限统一 ...

随机推荐

  1. keepalived双主虚拟路由配置

    我使用了两台虚拟机做测试 系统centos7.3 主机A:172.16.1.123 主机B:172.16.1.124 其实和普通配置keepalived差不多,就是复制多了一个vrrp_instanc ...

  2. 多线程、线程池、线程创建、Thread

    转载自https://www.cnblogs.com/jmsjh/p/7762034.html 多线程 1.1 多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行 ...

  3. mysql查询之 连续出现的数字,重复出现的邮箱,删除重复的电子邮箱

    1.编写一个 SQL 查询,查找所有至少连续出现三次的数字. +----+-----+ | Id | Num | +----+-----+ | 1 | 1 | | 2 | 1 | | 3 | 1 | ...

  4. React+antd+less框架搭建步骤,看吧,整的明白儿的

    1.node版本 首先你要先看下你的node版本,如果小于10,建议升级到10及以上,因为低版本的 node 在自动创建 react框架时,有配置文件跟10及以上的有比较大的差异,而且需要增加.修改的 ...

  5. javascript循环遍历数组输出key value

    javascript循环遍历数组输出key value用$.each方法肯定不行的 所以采用如下方法<pre> markers = []; markers[2]=3; markers[3] ...

  6. python实践项目四:猜数字游戏

    题目要求:在1-20中随机生成一个数字,你来猜,只有6次机会. 举例一: #!/usr/bin/python # -*- coding: UTF-8 -*- import random secretN ...

  7. SecureCRT字体、界面优化

    SecureCRT字体.界面优化 本文是secureCRT的第三篇博文,也是目前secureCRT优化的最终篇.首次使用该软件时候.应该会设置字体和编码,接下来,将演示如何设置. 1. 字体.编码设置 ...

  8. 链表习题(6)-链表返回倒数第k个数的位置的值

    /*链表返回倒数第k个数的位置的值*/ /* 算法思想:先取得链表的长度len,之后获取len-k+1的位置元素的值 */ Elemtype Getelem_rear(LinkList L, int ...

  9. linux安装go开发环境

    1下载go wget https://studygolang.com/dl/golang/go1.12.7.linux-amd64.tar.gz执行此命令会将go1.12.7.linux-amd64. ...

  10. quartz2.3.0(七)调度器中断任务执行,手动处理任务中断事件

    job任务类 package org.quartz.examples.example7; import java.util.Date; import org.slf4j.Logger; import ...