k8spod管理

1、kubernetes 里,namespace 可以理解成不同的"小房间",资源放在不同房间里,互不干扰。

命名空间管理

查看: kubectl get namespaces

创建:kubectl create namespace xxx

删除:kubectl delete namespaces xxx

2、pod:pod 是最小运行单位,里面可以放一个或多个容器,可以看它、建它、删它、查它详细信息,一个pod代表集群中运行的一个进程,有唯一IP。

pod管理

查看pod的运行情况和在运行地方

创建

创建出现问题时

查看pod运行的详细信息

3、kubectl 常用操作

上传实验镜像到仓库library中

生成所需yml文件

命令使用方法

create :创建控制器

edit:直接改配置

修改内容:

patch:快速改某个字段

expose:把应用暴露成 Service

测试:

logs:看日志

attach:连进正在运行的容器

上传镜像

设置容器

要有一个交互页面才能登录上

exec:在容器里执行命令

cp:拷贝文件

scale:扩容/缩容

label:打标签

rollout:看发布、回滚、重启

查看信息

查看在线状态,回滚、重启

4、deployment 的版本更新和回滚(deployment 就是"自动帮你换版本,还能撤回")

deployment 很像"管版本的总控"。

你改镜像版本,它会自动滚动更新;更新坏了,也能回滚

常用命令:

kubectl set image ... 改镜像版本

kubectl rollout history deployment xxx 看历史版本

kubectl rollout undo deployment xxx --to-revision N 回退

eg:myapp:v1 升级成 myapp:v2

发现有问题后,再回退到旧版本

环境设置:

仓库中的library项目中必须有myapp:v1和myapp:v2两个镜像

建立控制器

生成配置文件修改并启动,查看信息,版本

80端口暴露到集群各节点32073端口,集群内外都可通过节点IP+32073访问pod业务

更新业务版本

回退

5、yaml 是"资源说明书"

很多资源最好用 yaml写清楚,像说明书一样,可复制、可复用、可保存。

常见内容:pod deployment service ReplicaSet

例子:

一个 Pod 里放两个容器:myapp + busybox;给容器加环境变量:比如 MySQL 的密码;指定 Pod 跑到某台节点上:nodeSelector;开主机网络:hostNetwork: true;暴露主机端口:hostPort: 80

6、在pod中运行多容器

一个 Pod 里可以放多个容器,它们共享网络和存储。这很适合"一个主应用 + 一个辅助容器"的场景,可以像住在同一间屋里一样互相访问。

测试:

在pod运行主机中暴漏端口

在pod中指定变量

选择运行节点

添加选择点k8s-node2

错误:未显示标签k8s-node2

原因:80端口被占用

解决方法:改为8080端口解决问题或在ks-node2上把80端口释放

共享宿主机网络

问题 :容器进不去

原因:yaml里面容器的name被改掉了,不是busybox

解决方法 : 将旧的pod删去,确保文件内容正确,重新执行文件

测试:容器可以共享主机网络

资源优先级

BestEffort没有做任何资源限制,资源使用优先级最低

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

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

容器重启规则

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

OnFailure 非正常管关闭会从其pod

删除容器编号

Never pod关闭后不重启

10.pod的生命周期:init、存活、就绪

1)init准备期

先跑初始化容器,等它完成后,主容器才启动。

例子: 等某个文件出现了,主服务再启动。

创建容器

监测:

2)livenessProbe 存活探针 运行期

一句话区分:

liveness:死没死

readiness:能不能对外提供服务

它负责判断容器"活没活着"。

如果应用假死了,K8s 会把它重启。

例子:

nginx 停了,但 Pod 还在,livenessProbe 检查失败后,K8s 自动重启它

没有存活探针时

监测:

测试:

存活探针livness

测试

3)readiness 就绪探针,检测配置文件有内容无错误就显示在列表中,有错误(如配置文件删去),就不会在列表中显示,修改成功后会再 显示。

它负责判断容器"能不能接客"。

如果没准备好,就算 Pod 在跑,也不会被 Service 收进去。

例子:

删掉 index.htmlPod 还在运行

但 readiness 失败后,Service 不再把流量转给它

没有就绪探针情况

测试:

删除默认发布文件,是否还能暴露端点

运行主机IP还在

但访问时内容不存在

有就绪探针情况

清理旧文件,添加探针,并执行文件

监测:

复现问题

删去配置文件

结果:列表中没有显示

添加后

结果:

相关推荐
susplus2 小时前
【linux应用软件编程】进程间的通信方式1【管道&IPC】
linux·进程通信·管道·ipc
AlfredZhao5 小时前
用 crontab 给 LLM 使用量装上“监控眼”
linux
国医中兴8 小时前
电子病历的时序数据分析:ClickHouse在临床指标监控中的落地
微服务·云原生·容器·kubernetes·k8s
刃神太酷啦8 小时前
Linux 系统 MySQL 完整安装配置教程:从卸载 MariaDB 到优化 my.cnf----《Hello MySQL!》(1)
android·linux·c语言·c++·mysql·leetcode·mariadb
赵文宇(温玉)8 小时前
OpenEuler24.03 SP4 系统安装(欧拉/麒麟V10)
linux·openeuler·欧拉
Brilliantwxx10 小时前
【Linux】 进程(7)深度剖析 进程内核O(1)调度队列 + 饥饿问题
linux·运维·服务器
小谈不敲代码10 小时前
【12-kubenetes的持久化存储】
运维·kubernetes
刚入门的大一新生11 小时前
Linux-命令行参数和环境变量
linux·运维·服务器
我星期八休息11 小时前
Linux I/O多路转接—epoll
java·linux·运维·服务器·开发语言·jvm·算法