Pod镜像拉取策略

官方文档:https://kubernetes.io/docs/concepts/containers/images/

镜像拉取策略

Pod镜像拉取策略参数为imagePullPolicy,其值有三个:

  • IfNotPresent:默认值,镜像在宿主机上不存在时才拉取
  • Always:每次创建 Pod 都会重新拉取一次镜像
  • Never: Pod 永远不会主动拉取这个镜像

Pod镜像拉取示例

如果要拉取公开镜像,直接使用下面示例即可,但要拉取私有的镜像,是必须认证镜像仓库才可以,文章末尾讲解拉取私人仓库。

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx:latest
    imagePullPolicy: IfNotPresent
    #imagePullPolicy: Always
    #imagePullPolicy: Never

Pod拉取镜像认证方法

如果要拉取私人镜像,则需要与镜像仓库进行认证,即docker login,而在K8S集群中会有多个Node,显然这种方式是很不放方便的!为了解决这个问题,K8s实现了自动拉取镜像的功能。 以secret方式保存到K8S中,然后传给kubelet。

1.生成secret
在集群的主节点上使用 kubectl create 命令来生成secret

kubectl create secret docker-registry aliyun-registry --docker-username=useranme --docker-password=password  --docker-server=registry.cn-shanghai.aliyuncs.com

docker-registry:指定生成secret的名称
–docker-username: 指定docker镜像仓库账号
–docker-password: 指定docker镜像仓库密码
–docker-server: 指定docke镜像仓库地址
–docker-email: 指定邮件地址(选填)

2.在配置清单中指定secret
使用参数是 imagePullSecrets,ImagePullSecrets是一个可选的列表,其中包含对同一名称空间中秘密的引用,可用于提取这个PodSpec使用的任何图像。imagePullSecrets下的name参数指定要引用的secrets的名字

cat aliyun-registry.yaml
apiVersion: v1
kind: Pod
metadata:
  name: busybox
spec:
  imagePullSecrets:
  - name: aliyun-registry
  containers:
  - name: busybox
    image: 指定私有镜像仓库地址
    imagePullPolicy: IfNotPresent
    command: [ "/bin/sh", "-c", "tail -f /etc/passwd" ]

3.创建配置清单并查看pod

kubectl apply -f aliyun-registry.yaml

kubectl get pods -o wide | grep busybox
busybox                             1/1     Running            0          7m59s   10.244.3.44   k8s-node01   <none>           <none>







「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
Kubernetes
Kubernetes
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论