当前位置: 首页 > news >正文

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=748c667d99kubectl 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: nulllabels:run: nginxname: nginx
spec:containers:- image: nginximagePullPolicy: IfNotPresentname: nginxresources: {}dnsPolicy: ClusterFirstrestartPolicy: 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详解

http://www.lryc.cn/news/254865.html

相关文章:

  • Spark低版本适配Celeborn
  • idea报错:Error:java: 不允许在使用 -release 时从系统模块 java.xml 导出程序包?
  • Vector Quantized Diffusion Model for Text-to-Image Synthesis
  • solidity实现ERC1155多代币标准
  • 10、外观模式(Facade Pattern,不常用)
  • <软考>软件设计师-3程序设计语言基础(总结)
  • C/C++---------------LeetCode第278. 第一个错误的版本
  • C语言三种循环输出9*9乘法表
  • IntelliJ IDEA 之初体验
  • java中synchronized和Lock的区别是什么?
  • ESP32-Web-Server编程-通过 Base64 编码在网页中插入图片
  • 聊一聊大模型 | 京东云技术团队
  • pandas空格及网页空格符NBSP替换处理
  • 智能优化算法应用:基于战争策略算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 数据结构和算法-栈
  • C#基础与进阶扩展合集-进阶篇(持续更新)
  • 快速入门GitHub 之超简单的注册方法和超好用的使用技巧
  • ESP32-Web-Server编程- 在 Web 上开发动态纪念册
  • 双向ESD保护 汽车级TVS二极管 ESD9B3.3ST5G工作原理、特性参数、封装形式
  • Ribbon-IRule 修改负载均衡的规则
  • 双十二电视盒子哪个牌子最好?自费3000+测评整理电视盒子推荐
  • 排序:直接选择排序
  • Nacos多数据源插件
  • 【Java基础篇 | 面向对象】—— 聊聊什么是接口(上篇)
  • golang实现函数yamlToStruct(infile,outFile)
  • 产品成本收集器流程演示
  • 【微服务】springboot整合quartz使用详解
  • Electron+Ts+Vue+Vite桌面应用系列:TypeScript常用时间处理工具
  • 记录 | centos源码编译bazel
  • 常见的Bean工厂后置处理器