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

kubernetes之镜像拉取策略;

时间:2022-08-20 08:55:48浏览次数:83  
标签:httpd kubernetes tomcat Normal 拉取 ks kubelet 镜像

  1. 各工作节点负责运行Pod对象,而Pod的核心功能用于运行容器,因此工作节点上必须配置容器引擎,如Dokcer、Containerd等,启动容器时,容器引擎将首先于本地查找指定的镜像文件,不存在的镜像则需要从指定的镜像仓库(Registry)下载至本地;

  2. kubernetes支持用户自定义镜像文件的获取方式策略,例如在网络资源紧张的时候可以禁止从仓库中获取文件镜像等,容器的ImagePullPolicy字段用于为其指定镜像获取策略,可用值包括:

    • IfNotPresent: 本地有镜像则使用本地镜像,本地不存在则拉取镜像;(默认值)
    • Always: 每次都尝试拉取镜像;
    • Never: 永不拉取,禁止从仓库下载镜像,如果本地镜像已经存在,kubelet会尝试启动容器,否则,启动失败;
  3. 官方文档: https://kubernetes.io/zh-cn/docs/concepts/containers/images/

  4. 我们可以通过explain来查看它的属性
    imgaepullpolicy是容器级别的;

root@ks-master01-10:~# kubectl explain pod.spec.containers.imagePullPolicy
KIND:     Pod
VERSION:  v1

FIELD:    imagePullPolicy <string>

DESCRIPTION:
     Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always
     if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated.
     More info:
     https://kubernetes.io/docs/concepts/containers/images#updating-images
  1. 示例说明;
root@ks-master01-10:~#  cat tomcat-test.yaml 

apiVersion: v1
kind: Pod
metadata:
  name: tomcat-test
  namespace: default
spec:
  containers:
  - name: tomcat
    image: tomcat:latest
    imagePullPolicy: Always

root@ks-master01-10:~# kubectl apply -f tomcat-test.yaml 
pod/tomcat-test created
  1. 现在Pod是正常状态;
root@ks-master01-10:~# kubectl get pods
NAME                          READY   STATUS    RESTARTS      AGE
tomcat-test                   1/1     Running   0             87s
  1. 我们来看看详细描述;
    定义了使用tomcat:latest镜像,其获取策略为Always,这就意味每次启动容器时,它都会从镜像仓库获取最新版本的镜像文件;
root@ks-master01-10:~# kubectl describe pods tomcat-test
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  82s   default-scheduler  Successfully assigned default/mysql-test to ks-node24-24
  Normal  Pulling    81s   kubelet            Pulling image "tomcat:latest"
  Normal  Pulled     45s   kubelet            Successfully pulled image "tomcat:latest" in 36.41152006s
  Normal  Created    45s   kubelet            Created container tomcat
  Normal  Started    45s   kubelet            Started container tomcat
  1. IfNotPresent
    对于其他标签的镜像,其默认策略为IfNotPresent,需要注意的是,使用私有仓库中的镜像时通常需要由Registry服务器完成认证才能进行,认证过程要么需要在相关节点上交互执行docker login命令进行,要么就是将认证信息定义为secret资源,通过ImagePullSecrets字段来完成认证信息;
  • 示例
root@ks-master01-10:~# cat httpdpod-test.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: httpd-testpod
  namespace: default
spec:
  containers:
  - name: httpd
    image: registry.cn-hangzhou.aliyuncs.com/lengyuye/httpd:alpine3.14
    imagePullPolicy: IfNotPresent

root@ks-master01-10:~# kubectl apply -f httpdpod-test.yaml 
pod/httpd-testpod created

来查看下详情;
为什么能拉取私有仓库的镜像,因为docker login认证过。没有认证的话拉取镜像的时候会Error;

root@ks-master01-10:~# kubectl describe pods httpd-testpod
Events:
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  4m28s  default-scheduler  Successfully assigned default/httpd-testpod to ks-node24-24
  Normal  Pulling    4m27s  kubelet            Pulling image "registry.cn-hangzhou.aliyuncs.com/lengyuye/httpd:alpine3.14"
  Normal  Pulled     4m24s  kubelet            Successfully pulled image "registry.cn-hangzhou.aliyuncs.com/lengyuye/httpd:alpine3.14" in 3.56652979s
  Normal  Created    4m23s  kubelet            Created container httpd
  Normal  Started    4m23s  kubelet            Started container httpd

Pod运行正常;

root@ks-master01-10:~# kubectl get pods
NAME                          READY   STATUS    RESTARTS     AGE
httpd-testpod                 1/1     Running   0            3m26s

标签:httpd,kubernetes,tomcat,Normal,拉取,ks,kubelet,镜像
From: https://www.cnblogs.com/xunweidezui/p/16600323.html

相关文章

  • 使用 Kubernetes Ingress-Nginx 实现蓝绿、灰度发布!你会用了吗?
    背景介绍某些情况下,我们在使用Kubernetes作为业务应用的云平台,想要实现应用的蓝绿部署用来迭代应用版本,用lstio太重太复杂,而且它本身定位于流控和网格治理;Ingress-Nginx在......
  • kubernetes的HPA控制器使用
    安装metricsserver      MetricsServer是Kubernetes内置的容器资源指标来源。      MetricsServer从node节点上的Kubelet收集资源指标,并通过MetricsA......
  • 给大家推荐一下常用的镜像站
    很多编程语言、系统服务、操作系统等,需要从国外官网进行下载,如Python、MySQL、CentOS,但网速可想而知。这时,可以通过国内镜像站进行下载。常用的国内镜像站如下:华为源:http......
  • Docker镜像的导出导入
    1.import+export1.1导出示例dockerexport-onginx-test.tarnginx-test*-o表示输出到文件*nginx-test.tar为目标文件*nginx-test是源容器名(na......
  • docker配置ros镜像
    一、docker入门问题0.常用命令dockerimagels//查看本地镜像dockerimagerm501//删除本地镜像dockerpullubuntu:20.04//拉取镜像dockerrun-it--rmubuntu:20......
  • 使用SVNSYNC实现多个SVN服务器之间的数据镜像同步复制
    1.源库准备(mastersvn): 1)新建一个普通用户,对整个库有读权限即可,用于连接源库读取数据 #vi/svndata/conf/passwd test=123 #vi/svndata/conf/authz [......
  • 解决TortoiseSVN或者TortoiseGit拉取的文件夹不能完整显示绿色打钩、黄色、红色感叹号
    某天突然发现用SVNCheckout过的文件夹不显示任何SVN相关的小图标了,例如:绿色打钩,红色感叹等 排查发现是我更新了某个软件(微软的OneDrive),于是它的注册表排在了SVN的前面,......
  • docker 镜像中的none
    docker镜像中的none千次阅读docker使用久了会出现很多名字为none的镜像,这些镜像大致可分为两类:有用镜像和无用镜像有用镜像通过dockerimages-a命令才会显......
  • Kubernetes学习笔记(十一):Node Selectors & Affinity
    NodeSelectorspod-definition.ymlspec:nodeSelector:size:Large##生效前需要先标记nodekubectllabelnodes<node-name><label-key>=<label-value>:......
  • Kubernetes-概述
    Kubernetes概述Kubernetes概述Kubernetes是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。Kubernetes拥有一个庞大且快速......