一、pod概述

Pod 是 Kubernetes 最小的调度单元,不是容器,一个 Pod 可以封装一个或多个紧密耦合的容器,这些容器共享网络、存储,运行在同一个节点上。注意:K8s 不直接管理容器,所有容器都必须包装在 Pod 中。

Pod 核心特点

  1. 一个 Pod 内所有容器运行在同一台 Node 节点
  2. 共享网络命名空间
    • 同一个 Pod 内所有容器共用同一个 IP(PodIP)
    • 容器之间可以用 localhost 互相访问端口
    • 不同 Pod 之间 IP 互相独立
  3. 可共享存储卷 (Volume)
    • Volume 挂载到 Pod,Pod 内所有容器都可以访问该存储,实现容器间文件共享
  4. 生命周期短暂
    • Pod 是临时实体,不支持自愈。Pod 销毁后不会自动重建,由控制器 (Deployment/StatefulSet 等) 负责创建、重启、扩缩容 Pod。
    • Pod 不会迁移,删除后会在节点上重新生成全新 Pod,PodIP 会改变

二、pod管理

命令式对象管理

1.命名空间管理

查看集群,查看命名空间,创建以及删除命名空间

2.pod管理

查看pod的运行情况及在哪里运行等信息,创建pod(注意:创建用到的镜像需要存放在集群harbor仓库中)

用了仓库中没有的镜像创建会出问题

查看pod运行的详细信息

删除pod

kubectl 命令实操

1.上传镜像到仓库library中

2.生成实验所需yml文件

3.kubectl命令使用方法

create:

edit:

补丁修改资源 patch

不打开编辑器,直接修改资源字段

expose:

logs:

attach:

exec:

cp:

scale:

三、利用控制器实现版本更替(仓库中必须先有myapp:v1,myapp:v2镜像)

建立控制器

更改业务版本

版本回退

四、利用yaml文件声明资源

在pod中运行多容器

在pod运行主机中暴漏端口

在pod中指定变量

在浏览器中访问 node下面看到的主机ip

选择运行节点

共享主机网络

资源优先级

1.BestEffort没有做任何资源限制,资源使用优先级最低(默认)

2.Burstable 设定了资源限制,但是期望值和限制值不同,资源使用优先级次之

3.Guaranteed期望值和最大使用限制相同,优先级最高

容器重启规则

1.Always 无论什么原因都会从新运行pod

2.OnFailure 非正常管关闭会重启pod

3.Never pod关闭后不重启

五、pod的生命周期

Init 容器是Pod 内、主应用容器启动之前执行的特殊容器,用于做初始化工作;必须全部 Init 容器执行成功退出 (exit code=0),才会启动业务主容器

Pod 完整启动顺序(含 init)

  1. Pod 被调度到 Node 节点
  2. pause(基础设施容器)启动,完成 Pod 网络、Volume 存储挂载
  3. 按顺序串行执行所有 Init 容器(一个执行完,才跑下一个,不是并行)
  4. 全部 Init 容器正常退出,才启动spec.containers里的业务主容器 /sidecar 边车容器
  5. 主容器启动完成,Pod 进入 Running 状态

如果任意一个 Init 容器失败退出,不会往下走,主容器永远不会启动

init容器

Livness存活探针

没有存活探针时,查看pod的状态仍然是runing,但是访问此pod时访问失败

有存活探针时自动恢复

readness 就绪探针

没有就绪探针的情况,删除默认发布目录service的endpoints ip还在

访问业务出现问题

开启后删除默认发布目录

endpoints ip消失

更多推荐