kubernetes之镜像拉取策略ImagePullSecrets;

打印 上一主题 下一主题

主题 641|帖子 641|积分 1923

1.容器镜像是什么?

1.容器镜像(Container Image)是最终运行的软件;
2.容器镜像(最初为Docker镜像,现在叫OCI镜像更合适)是将软件打包的形式。但是容器镜像还可以携带额外的设置和命令: 环境变量、启动命令、用户名等。
3.容器镜像是由容器运行时解释和执行。Docker守护进程是最著名的,后来又出现了Runc和Containerd。当然现在还有其他实现,比如CRI-O、gVisor、Kata、Firecracker和Project Pacific,这些都是独立的实现,可以创建相同的运行时行为,通常还具有其他所需的功能。
2. 容器镜像拉取的两种策略;

2.1ImagePullPolicy

在指定容器镜像时,必须要提供镜像值(Image Value)这是一个供容器运行时(如Containerd)从镜像仓库拉取镜像的地址;
关键配置: ImagePullPolicy和ImagePullSecrets这两个都是供容器运行时使用的;
imagePullPolicy设置的是kubernetes节点拉取镜像策略,这个设置很重要。它有三个值可以设置,Always、Never、IfNotPresent;
2.2ImgaePullSecrets

1.ImagePullSecrets的设置是kubernetes机制的另一亮点,习惯于直接使用Docker Pull来拉取公共镜像,但非所有容器镜像都是公开的。此外,并不是所有的镜像仓库都允许匿名拉取,也就是说需要身份认证;
kubernetes有一个secret记录类型,可用于配置镜像登陆凭证。与所有kubernetes记录一样,Secrets通过名称被其他资源引用。此处是通过ImagePullSecrets来引用Secret的;
2.官方文档: https://kubernetes.io/zh-cn/docs/concepts/configuration/secret/#using-imagepullsecrets
3.ImagePullSecret引用;

3.1创建Secrets资源;
  1. [root@kn-server-master01-13 knative]# kubectl create secret docker-registry \
  2. > aliyun-haitang-registry \
  3. > --docker-server=registry.cn-hangzhou.aliyuncs.com \
  4. > --docker-username=xxxxxxx\
  5. > --docker-password=xxxxxx
  6. secret/aliyun-haitang-registry created
复制代码
3.1.2查看Secrets
  1. [root@kn-server-master01-13 knative]# kubectl get secrets
  2. NAME                      TYPE                                  DATA   AGE
  3. aliyun-haitang-registry   kubernetes.io/dockerconfigjson        1      2m46s
复制代码
3.2Pod引用Secret资源;

3.2.1imagePullSecret在spec字段中;和container是平级的;
  1. [root@kn-server-master01-13 knative]# kubectl explain pod.spec.imagePullSecrets
  2. KIND:     Pod
  3. VERSION:  v1
  4. RESOURCE: imagePullSecrets <[]Object>
  5. DESCRIPTION:
  6.      ImagePullSecrets is an optional list of references to secrets in the same
  7.      namespace to use for pulling any of the images used by this PodSpec. If
  8.      specified, these secrets will be passed to individual puller
  9.      implementations for them to use. For example, in the case of docker, only
  10.      DockerConfig type secrets are honored. More info:
  11.      https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
  12.      LocalObjectReference contains enough information to let you locate the
  13.      referenced object inside the same namespace.
  14. FIELDS:
  15.    name        <string>
  16.      Name of the referent. More info:
  17.      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
复制代码
3.2.引入imagePullSecrets
  1. [root@kn-server-master01-13 knative]# vim knative-httpd.yaml
  2. apiVersion: serving.knative.dev/v1
  3. kind: Configuration
  4. metadata:
  5.   name: knative-httpd
  6. spec:
  7.   template:
  8.     spec:
  9.       containers:
  10.       - image: registry.cn-hangzhou.aliyuncs.com/lengyuye/httpd:alpine3.14
  11.       imagePullSecrets:
  12.       - name: aliyun-haitang-registry
  13. [root@kn-server-master01-13 knative]# kubectl apply -f knative-httpd.yaml
  14. configuration.serving.knative.dev/knative-httpd created
复制代码
3.2.3describe查看详情;
可以看到镜像确实来自于我们认证的阿里云仓库;
  1. [root@kn-server-master01-13 knative]# kn revision describe knative-httpd-00001
  2. Name:       knative-httpd-00001
  3. Namespace:  default
  4. Age:        3m
  5. Image:      registry.cn-hangzhou.aliyuncs.com/lengyuye/httpd:alpine3.14 (at 0e0805)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81428

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表