k8s之Pod常用命令详解、镜像拉取策略(imagePullPolicy)

这篇具有很好参考价值的文章主要介绍了k8s之Pod常用命令详解、镜像拉取策略(imagePullPolicy)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

常用命令

 kubectl api-resources #查询可操作的资源对象列表

kubectl get pod #查看默认命名空间下所有pod
kubectl describe pod podname #获取默认命名空间下POD详情

# 如果要查看制定命名空间则使用 -n nsname
kubectl get pod -n ns
kubectl describe pod podname -n ns

# 以YAML格式提供比 kubectl describe pod 更加详细的信息,即系统拥有的关于 Pod 的所有信息
kubectl get pod podname -o yaml

# 查看Pod对应的labels
kubectl get pod --show-labels

# deploy 也能用 --show-labels 查看标签
kubectl get deploy --show-labels

# 通过labels来筛选对应的Pod
kubectl get pod --show-labels --selector=pod-template-hash=748c667d99

kubectl logs podname #查看POD日志,如果有多个容器时,默认查看第一个容器的日志
kubectl logs podname -c containername #使用 -c 查看POD中指定容器的日志
kubectl logs podname containername #也可以省略 -c

# 打印容器在Pod中的前一个实例的日志,如果它存在的话
# 即如果你的容器之前崩溃过,你可以通过此命令访问之前容器的崩溃日志(-p 是 --previous的缩写)
kubectl logs -p podname containername
kubectl logs --previous podname containername

# 在Pod的容器内部执行命令
kubectl exec podname -- cat /var/log/dpkg.log
kubectl exec podname -- ls /var/log/

# 在Pod内部使用 -c 指定容器执行命令
# 如果Pod内有多个容器的情况下若是不用 -c 指定容器,则会默认在第一个容器里执行(也就是配置文件先定义的容器)
k exec podname -c containername -- ls /var/log

# 连接Pod容器的控制台
kubectl exec -it podname -- sh

# 连接Pod指定容器的控制台
k exec nginx -c nginx-container -- ls /var/log

# 不执行命令,而是生成 yaml 的配置文件重定向到配置文件中
kubectl run nginx --image=nginx --dry-run=client -o yaml > nginx.yaml

# 完整一些的
kubectl run nginx --image=nginx --restart=OnFailure --port=80 --env="test_env=test is env" --dry-run=client -o json > pod05

# 列出Pod容器的环境变量
kubectl exec podname -- printenv

Pod配置文件

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: nginx
    imagePullPolicy: IfNotPresent
    name: nginx
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

镜像拉取策略

imagePullPolicy有三个取值:

  • Always 每次都下载最新镜像
  • Never 不会尝试获取镜像,如果镜像已经以某种方式存在本地,kubelet 会尝试启动容器;否则,会启动失败
  • IfNotPresent 只有当镜像在本地不存在时才会拉取
    默认镜像拉取策略:

当你(或控制器)向 API 服务器提交一个新的 Pod 时,你的集群会在满足特定条件时设置 imagePullPolicy 字段:

如果你省略了 imagePullPolicy 字段,并且容器镜像的标签是 :latest,imagePullPolicy 会自动设置为 Always
如果你省略了 imagePullPolicy 字段,并且没有指定容器镜像的标签,imagePullPolicy 会自动设置为 Always
如果你省略了 imagePullPolicy 字段,并且为容器镜像指定了非 :latest 的标签,imagePullPolicy 就会自动设置为 IfNotPresent

注意事项:

1、在生产环境中部署容器时,你应该避免使用 :latest 标签,因为这使得正在运行的镜像的版本难以追踪,并且难以正确地回滚,应指定一个有意义的标签,如 v1.42.0

2、为了确保 Pod 总是使用相同版本的容器镜像,你可以指定镜像的摘要; 将 : 替换为 @,例如image@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2 (当使用镜像标签时,如果镜像仓库修改了代码所对应的镜像标签,可能会出现新旧代码混杂在 Pod 中运行的情况。 镜像摘要唯一标识了镜像的特定版本,因此 Kubernetes 每次启动具有指定镜像名称和摘要的容器时,都会运行相同的代码。 通过摘要指定镜像可固定你运行的代码,这样镜像仓库的变化就不会导致版本的混杂)

3、容器的 imagePullPolicy 的值总是在对象初次创建时设置的,如果后来镜像的标签发生变化,则不会更新。例如,如果你用一个 非 :latest 的镜像标签创建一个 Deployment, 并在随后更新该 Deployment 的镜像标签为 :latest,则 imagePullPolicy 字段 不会 变成 Always 你必须手动更改已经创建的资源的拉取策略

容器重启策略

restartPolicy有三个取值:

  • Always 总是重启
  • OnFailure 失败了才重启
  • Never 从不重启

Pod容器的状态:

Pending Pod已经建立,但是pod里还有容器没有创建完成
Running Pod已经被调度到节点上,且容器工作正常
Completed Pod里所有容器正常退出
Succeeded
Failed

参考

k8s之Pod详解文章来源地址https://www.toymoban.com/news/detail-762124.html

到了这里,关于k8s之Pod常用命令详解、镜像拉取策略(imagePullPolicy)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pod详解(Pod使用、容器分类、镜像拉取和容器重启策略)

    目录 一、Pod基础概念 二、Pod两种使用方式 1.pause容器使得Pod中的所有容器可以共享两种资源:网络和存储 2.Kubernetes为什么设计这样的Pod概念和特殊组成结构? 三、Pod容器的分类 1.自主式Pod 2.控制器管理的Pod 四、Pod中的容器类型分3种 1.pause容器(基础容器/父容器/根容器) 2

    2024年02月10日
    浏览(41)
  • K8s 详解(一) K8s 架构和常用命令

    🎈 作者: Linux猿 🎈 简介: CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! 🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬 本文主要介绍 K8s 的简介、架构以及常用命令。 Kubernetes ( 简称为 K8s )最开始

    2024年02月15日
    浏览(29)
  • K8s拉取habor镜像

    目录 在daemon.json中添加仓库地址 重新加载daemon.json并重启docker 在目标node节点添加域名 验证目标node是否能正常登录镜像仓库 创建pod资源 加载yml文件 验证 查看pod的ip与端口号 此处需要在创建资源对象所在的节点进行添加 路径: /etc/docker/daemon.json vim /etc/docker/daemon.json 格式:

    2024年04月12日
    浏览(21)
  • K8S 自动拉取镜像失败,手动拉取镜像成功

    新创建的Deploy在创建Pod时成功,但Pod报错,提示拉取镜像失败。 通过ssh登录到具体的K8S node上,手动执行docker pull 命令,却能成功拉取到对应的镜像。 根本原因:具体的命名空间缺少imagePullSecrets,不同的命名空间不能直接使用default中的imagePullSecrets。 准备K8S环境时,仅在d

    2024年01月18日
    浏览(34)
  • K8s拉取Harbor私有仓库镜像

    提示:需要先部署Harbor私有镜像库。 insecure-registries对应可信任的镜像服务地址,如果有多个地址,还可以用“,”隔开,配置多个。 提示:每个k8s节点都需要配置,完成之后需要重启docker服务。 选择需要的命名空间,创建密文。 如果没有密文,后面的配置,都会明文数据

    2024年02月16日
    浏览(35)
  • 五、Kubernetes(K8S):Kubectl常用命令详解

    注意:后续技术分享,第一时间更新,以及更多更及时的技术资讯和学习技术资料 ,将在公众号 CTO Plus 发布,请关注公众号: CTO Plus   Kubectl 是Kubernetes命令行工具,用于管理Kubernetes集群资源和应用程序的部署、升级和扩展等。其作用包括但不限于: 1. 创建、更新和删除应

    2024年02月04日
    浏览(34)
  • K8s(四)Pod资源——pod生命周期、重启策略、容器钩子与容器探测

    目录 Pod生命周期 Pod重启策略 初始化容器 容器钩子 容器探测 启动探测 存活探测 就绪探测 参考资料 Pod 的生命周期 | Kubernetes Init 容器 | Kubernetes Pod的生命周期可以分为以下几个阶段: Pending(等待):在这个阶段,Pod被创建,并且正在等待被调度到一个节点上运行。此时,

    2024年01月20日
    浏览(34)
  • 初学K8s错误:本地镜像拉取失败!

    报错:Container image \\\"wangyanglinux/myapp:v1\\\" is not present with pull policy of Never 这个地方我报错,原因很简单,一个是对原理的理解还有欠缺,一方面是自己眼瞎看不见,日志里其实写得很清楚了,我们来看一下是什么原因:  我们这里的报错是说没有在本地找到此镜像,为什么呢?看

    2024年02月10日
    浏览(28)
  • 在K8S中,镜像拉取策略有哪些?

    在Kubernetes(简称K8s)中,镜像更新策略主要由 imagePullPolicy 参数控制。当Pod中的容器镜像需要更新时,Kubernetes会根据这个策略决定如何处理镜像拉取行为。 Always : 如果容器的 imagePullPolicy 设置为 Always ,每次创建Pod或者重启容器时,kubelet都会尝试从镜像仓库拉取最新的镜像

    2024年02月19日
    浏览(26)
  • k8s查看所有在运行pod内的镜像版本

    本地跑的算法镜像有时候与线上跑的环境不一致,这时候又需要同步,每一个都去查找又很麻烦 这时候查看两边的镜像,选取其中不同的地方edit一下,就方便多了 名称空间更改为自己的名称空间 查询镜像并去重,有名称空间的  记得把名称空间加上  同时显示pod名称和镜像

    2024年02月12日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包