飞天使-k8s知识点26-kubernetes温故知新1-pod

文章目录

        • 创建一个pod
        • [pod 的三种探针](#pod 的三种探针)
        • [pod 探针的实现方式](#pod 探针的实现方式)
          • [prestop 和 prestart](#prestop 和 prestart)
创建一个pod
复制代码
apiVersion: v1 # 必选,API 的版本号
kind: Pod # 必选,类型 Pod
metadata: # 必选,元数据
 name: nginx # 必选,符合 RFC 1035 规范的 Pod 名称
spec: # 必选,用于定义 Pod 的详细信息
 containers: # 必选,容器列表
 - name: nginx # 必选,符合 RFC 1035 规范的容器名称
   image: nginx:1.15.12 # 必选,容器所用的镜像的地址
   ports: # 可选,容器需要暴露的端口号列表
   - containerPort: 80 # 端口号

一般使用yaml 文件进行创建比较好, 命令的方式实验用而已

pod的启动命令和参数更改
复制代码
apiVersion: v1 # 必选,API 的版本号
kind: Pod # 必选,类型 Pod
metadata: # 必选,元数据
  name: nginx # 必选,符合 RFC 1035 规范的 Pod 名称
spec: # 必选,用于定义 Pod 的详细信息
  containers: # 必选,容器列表
  - name: nginx # 必选,符合 RFC 1035 规范的容器名称
    image: nginx:1.15.12 # 必选,容器所用的镜像的地址
    command: # 可选,容器启动执行的命令
    - sleep
    - "10"
    ports: # 可选,容器需要暴露的端口号列表
    - containerPort: 80 # 端口号

# 新增command 部分到yaml 文件中,
pod 镜像拉取策略
复制代码
always  总是拉取, 当镜像tag 为 latest 时, 且 imagepullpollicy  没有配置, 默认为 always
never  不管是否存在,都会拉取
ifNotPresent ,镜像不存在时拉取镜像,如果tag 为非latest ,且 imagepolicy 未配置,默认为 ifNotPresent 

镜像拉取策略, 驾到 command 同级别里
 imagePullPolicy: IfNotPresent # 可选,镜像拉取策略
pod 的三种探针
复制代码
种类 说明
startupProbe Kubernetes1.16 新加的探测方式,用于判断容器内的应用程序是否已经启动。如果
配置了 startupProbe,就会先禁用其他探测,直到它成功为止。如果探测失败,Kubelet
会杀死容器,之后根据重启策略进行处理,如果探测成功,或没有配置 startupProbe,
则状态为成功,之后就不再探测。
livenessProbe 用于探测容器是否在运行,如果探测失败,kubelet 会"杀死"容器并根据重启策略
进行相应的处理。如果未指定该探针,将默认为 Success
readinessProbe 一般用于探测容器内的程序是否健康,即判断容器是否为就绪(Ready)状态。如
果是,则可以处理请求,反之 Endpoints Controller 将从所有的 Service 的 Endpoints
中删除此容器所在 Pod 的 IP 地址。如果未指定,将默认为 Success
pod 探针的实现方式
复制代码
实现方式 说明
ExecAction 在容器内执行一个指定的命令,如果命令返回值为 0,则认为容器健康
TCPSocketAction 通过 TCP 连接检查容器指定的端口,如果端口开放,则认为容器健康
HTTPGetAction 对指定的 URL 进行 Get 请求,如果状态码在 200~400 之间,则认为容器健康


没有探针的pod
apiVersion: v1 # 必选,API 的版本号,这里使用的是 v1 版本
kind: Pod # 必选,资源对象的类型,这里是 Pod
metadata: # 必选,资源对象的元数据
 name: nginx # 必选,资源对象的名称,这里是 nginx
spec: # 必选,资源对象的详细规格说明
 containers: # 必选,Pod 中运行的容器列表
 - name: nginx # 必选,容器的名称,这里是 nginx
   image: nginx:1.15.12 # 必选,容器所用的镜像,这里是 nginx:1.15.12
   imagePullPolicy: IfNotPresent # 镜像拉取策略,这里是 IfNotPresent,表示如果本地有镜像就使用本地镜像,否则从远程仓库拉取
   command: # 可选,容器启动时执行的命令
   - sh
   - -c
   - sleep 10; nginx -g "daemon off;" # 这里是先暂停10秒,然后运行 nginx 服务器
   ports: # 可选,容器需要暴露的端口列表
   - containerPort: 8088 # 容器暴露的端口号,这里是 80
 restartPolicy: Never # Pod 的重启策略,这里是 Never,表示容器退出时不自动重启

配置健康检查,如果是一个java程序,启动时间很慢,则要用startupProbe 探针来减少故障恢复时间

复制代码
apiVersion: v1 # 必选,API 的版本号,这里使用的是 v1 版本
kind: Pod # 必选,资源对象的类型,这里是 Pod
metadata: # 必选,资源对象的元数据
 name: nginx # 必选,资源对象的名称,这里是 nginx
spec: # 必选,资源对象的详细规格说明
 containers: # 必选,Pod 中运行的容器列表
 - name: nginx # 必选,容器的名称,这里是 nginx
   image: nginx:1.15.12 # 必选,容器所用的镜像,这里是 nginx:1.15.12
   imagePullPolicy: IfNotPresent # 镜像拉取策略,这里是 IfNotPresent,表示如果本地有镜像就使用本地镜像,否则从远程仓库拉取
   command: # 可选,容器启动时执行的命令
   - sh
   - -c
   - sleep 10; nginx -g "daemon off;" # 这里是先暂停10秒,然后运行 nginx 服务器
   readinessProbe: # 可选,用于检查容器是否已经准备好提供服务
     httpGet: # 使用 HTTP GET 请求进行检查
       path: /index.html # 请求的路径
       port: 80 # 请求的端口号
       scheme: HTTP # 请求的协议,HTTP 或 HTTPS
     initialDelaySeconds: 10 # 容器启动后首次进行检查的延迟时间(秒)
     timeoutSeconds: 2 # 检查超时时间(秒)
     periodSeconds: 5 # 检查的间隔时间(秒)
     successThreshold: 1 # 表示检查成功的最小连续成功次数
     failureThreshold: 2 # 表示检查失败的最小连续失败次数
   livenessProbe: # 可选,用于检查容器是否还在运行
     tcpSocket: # 使用 TCP Socket 进行检查
       port: 80 # 检查的端口号
     initialDelaySeconds: 10 # 容器启动后首次进行检查的延迟时间(秒)
     timeoutSeconds: 2 # 检查超时时间(秒)
     periodSeconds: 5 # 检查的间隔时间(秒)
     successThreshold: 1 # 表示检查成功的最小连续成功次数
     failureThreshold: 2 # 表示检查失败的最小连续失败次数
   ports: # 可选,容器需要暴露的端口列表
   - containerPort: 80 # 容器暴露的端口号,这里是 80
 restartPolicy: Never # Pod 的重启策略,这里是 Never,表示容器退出时不自动重启
prestop 和 prestart
复制代码
apiVersion: v1 # 必选,API 的版本号,这里使用的是 v1 版本
kind: Pod # 必选,资源对象的类型,这里是 Pod
metadata: # 必选,资源对象的元数据
 name: nginx # 必选,资源对象的名称,这里是 nginx
spec: # 必选,资源对象的详细规格说明
 containers: # 必选,Pod 中运行的容器列表
 - name: nginx # 必选,容器的名称,这里是 nginx
   image: nginx:1.15.12 # 必选,容器所用的镜像,这里是 nginx:1.15.12
   imagePullPolicy: IfNotPresent # 镜像拉取策略,这里是 IfNotPresent,表示如果本地有镜像就使用本地镜像,否则从远程仓库拉取
   lifecycle: # 定义容器的生命周期钩子
     postStart: # 容器创建后要执行的操作
       exec: # 使用 exec 执行 shell 命令
         command: # 定义要执行的命令
         - sh
         - -c
         - 'mkdir /data/' # 这里的命令是创建一个名为 /data/ 的目录
     preStop: # 容器停止前要执行的操作
       exec: # 使用 exec 执行 shell 命令
         command: # 定义要执行的命令
         - sh
         - -c
         - sleep 10 # 这里的命令是暂停10秒
   ports: # 可选,容器需要暴露的端口列表
   - containerPort: 80 # 容器暴露的端口号,这里是 80
 restartPolicy: Never # Pod 的重启策略,这里是 Never,表示容器退出时不自动重启

参考资料: 宽哥

相关推荐
学Linux的语莫1 小时前
kompose、docker转k8s
docker·容器·kubernetes
阿里云云原生1 小时前
探秘 AgentRun丨流量一大就瘫痪?如何解决 AI 模型调用之痛
云原生
是Yu欸2 小时前
从Ascend C算子开发视角看CANN的“软硬协同”
c语言·开发语言·云原生·昇腾·ascend·cann·开放社区
光头熊2 小时前
一次 nerdctl prune -a 导致 Kubernetes 节点不可用的复盘
kubernetes
码界奇点3 小时前
基于微服务架构的企业身份与访问管理系统设计与实现
微服务·云原生·架构·车载系统·毕业设计·源代码管理
一点晖光5 小时前
docker配置npm环境变量出现问题
docker·容器·npm
一分半心动5 小时前
windows docker desktop 安装VibeVoice
运维·docker·容器
LucidX6 小时前
Docker核心操作实战
运维·docker·容器
隔壁阿布都6 小时前
Docker Compose中的网络管理
运维·docker·容器
yuxb737 小时前
kubernetes弹性伸缩
笔记·kubernetes