云原生:kubernetes pod管理
·
一、pod概述
Pod 是 Kubernetes 最小的调度单元,不是容器,一个 Pod 可以封装一个或多个紧密耦合的容器,这些容器共享网络、存储,运行在同一个节点上。注意:K8s 不直接管理容器,所有容器都必须包装在 Pod 中。
Pod 核心特点
- 一个 Pod 内所有容器运行在同一台 Node 节点
- 共享网络命名空间
- 同一个 Pod 内所有容器共用同一个 IP(PodIP)
- 容器之间可以用
localhost互相访问端口 - 不同 Pod 之间 IP 互相独立
- 可共享存储卷 (Volume)
- Volume 挂载到 Pod,Pod 内所有容器都可以访问该存储,实现容器间文件共享
- 生命周期短暂
- 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)
- Pod 被调度到 Node 节点
- pause(基础设施容器)启动,完成 Pod 网络、Volume 存储挂载
- 按顺序串行执行所有 Init 容器(一个执行完,才跑下一个,不是并行)
- 全部 Init 容器正常退出,才启动
spec.containers里的业务主容器 /sidecar 边车容器 - 主容器启动完成,Pod 进入 Running 状态
如果任意一个 Init 容器失败退出,不会往下走,主容器永远不会启动
init容器




Livness存活探针


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

有存活探针时自动恢复
readness 就绪探针





没有就绪探针的情况,删除默认发布目录service的endpoints ip还在
访问业务出现问题

开启后删除默认发布目录

endpoints ip消失
更多推荐

所有评论(0)