首页 > 其他分享 >kubernetes之镜像拉取策略ImagePullSecrets;

kubernetes之镜像拉取策略ImagePullSecrets;

时间:2022-08-23 09:22:05浏览次数:102  
标签:httpd kubernetes 容器 拉取 knative 镜像 ImagePullSecrets registry

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资源;

[root@kn-server-master01-13 knative]# kubectl create secret docker-registry \
> aliyun-haitang-registry \
> --docker-server=registry.cn-hangzhou.aliyuncs.com \
> --docker-username=xxxxxxx\
> --docker-password=xxxxxx
secret/aliyun-haitang-registry created

3.1.2查看Secrets

[root@kn-server-master01-13 knative]# kubectl get secrets
NAME                      TYPE                                  DATA   AGE
aliyun-haitang-registry   kubernetes.io/dockerconfigjson        1      2m46s

3.2Pod引用Secret资源;

3.2.1imagePullSecret在spec字段中;和container是平级的;

[root@kn-server-master01-13 knative]# kubectl explain pod.spec.imagePullSecrets
KIND:     Pod
VERSION:  v1

RESOURCE: imagePullSecrets <[]Object>

DESCRIPTION:
     ImagePullSecrets is an optional list of references to secrets in the same
     namespace to use for pulling any of the images used by this PodSpec. If
     specified, these secrets will be passed to individual puller
     implementations for them to use. For example, in the case of docker, only
     DockerConfig type secrets are honored. More info:
     https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod

     LocalObjectReference contains enough information to let you locate the
     referenced object inside the same namespace.

FIELDS:
   name	<string>
     Name of the referent. More info:
     https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

3.2.引入imagePullSecrets

[root@kn-server-master01-13 knative]# vim knative-httpd.yaml
apiVersion: serving.knative.dev/v1
kind: Configuration
metadata:
  name: knative-httpd
spec:
  template:
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/lengyuye/httpd:alpine3.14
      imagePullSecrets:
      - name: aliyun-haitang-registry
[root@kn-server-master01-13 knative]# kubectl apply -f knative-httpd.yaml 
configuration.serving.knative.dev/knative-httpd created

3.2.3describe查看详情;
可以看到镜像确实来自于我们认证的阿里云仓库;

[root@kn-server-master01-13 knative]# kn revision describe knative-httpd-00001
Name:       knative-httpd-00001
Namespace:  default
Age:        3m
Image:      registry.cn-hangzhou.aliyuncs.com/lengyuye/httpd:alpine3.14 (at 0e0805)

标签:httpd,kubernetes,容器,拉取,knative,镜像,ImagePullSecrets,registry
From: https://www.cnblogs.com/xunweidezui/p/16613584.html

相关文章

  • Docker 拉取Nginx镜像 和运行
    Docker镜像拉取dockerpull[OPTIONS]NAME[:TAG|@DIGEST]镜像拉取命令OPTIONS说明:-a:拉取所有tagged镜像--disable-conten......
  • Gerrit拉取代码
    从Git上获取的公钥add到Gerrit上,显示的是主机名,重新生成密钥,后缀为邮箱;在从Gerrit上拉取代码时,要区分从仓库HTTP拉取,还是从SSH,如果选择错误,Git出现以下错误:   ......
  • 关于使用Git不能拉取GitLab https项目地址的问题
    现在使用Git命令直接clonehttps://xxx项目时候会报错“没有权限拉取代码”,其实我们需要在“UserSettings ---》AccessTokens“界面新增一个 accesstoken就好了,......
  • kubernetes网络排错思想
    Overview本文将引入一个思路:“在Kubernetes集群发生网络异常时如何排查”。文章将引入Kubernetes集群中网络排查的思路,包含网络异常模型,常用工具,并且提出一些案例以供学......
  • Kubernetes学习笔记(十八):命令和参数
    pod-definition.ymlapiVersion:v1kind:Podmetadata:name:ubuntu-sleeper-podspec:containers:-name:ubuntu-sleeperimage:ubuntu-sleeper......
  • Git代码拉取与推送
    转自:https://www.cnblogs.com/techflow/p/13895261.html1.拉取实gitpull并不是严格意义上的代码拉取命令,至少它还不是最细粒度,更细粒度的是gitfetch。gitfetch:将远程......
  • Kubernetes学习笔记(十六):Monitoring
    Kubernetes没有提供功能全面的内置监控解决方案,但有许多开源解决方案可用,如Metrics-Server、Prometheus、ElasticStack、DATADOG、dynatrace。Heapster是Kubernetes启用......
  • Kubernetes学习笔记(十四):Static Pods
    kubelet依赖于kube-apiserver来获得关于在其node上加载哪些pod的指令,这是基于存储在etcd数据库中的kube-scheduler所做的决定。kubelet也可以独立运行,可以创建pod,可以指定......
  • Kubernetes学习笔记(十三):Daemon Sets
    DaemonSets确保pod的一个副本始终存在于集群的所有节点中,常用于MonitoringSolution、LogsViewer、Kube-porxy、Weave-net(networking)。daemon-set-definition.yamlkind......
  • kubernetes之镜像拉取策略;
    各工作节点负责运行Pod对象,而Pod的核心功能用于运行容器,因此工作节点上必须配置容器引擎,如Dokcer、Containerd等,启动容器时,容器引擎将首先于本地查找指定的镜像文件,不存......