企业级运维之云原生与Kubernetes实战课程 第三章第2讲 深入剖析linux容器&Pod(下)

简介: 理解容器和pod的基本原理以及差异 理解pod创建的过程 理解各个控制器的作用 理解ack集群的网络原理以及coredns的原理

企业级运维之云原生与Kubernetes实战课程

第三章第2讲 深入剖析linux容器&Pod(下)

 

视频地址:https://developer.aliyun.com/learning/course/913/detail/14555

 

 

三、资源限制(cgroup

 

1.  控制器组(cgroup

 

cgroupLinux control group的缩写,cgroup是内核的一个特性,进程可以通过树形结构的cgroup来监控和限制进程可以使用的资源,比如限制某个进程对cpumemory的使用量等。

 

cgroup 驱动:

  • systemd cgroup driver
  • cgroupfs cgroup driver

 

cgroup 类型:

  • cpu
  • memory
  • pid
  • blkio
  • device
  • freezer

 

查看podcgroup信息:

a.  登录pod所在的节点, docker ps |grep <pod name>找到容器的容器id

b.  找到容器的Pid : docker inspect <容器id> |grep Pid

c.  查看容器cgroup相对路径: cat /proc/ <Pid>/cgroup |grep memory

 

示例:

# docker inspect 0683e462045a |grep -i pid

# cat /proc/905215/cgroup

image.png

 

# kubectl exec -it multi-containers-6695d87b75-dsxgn -- bash

 image.png

 

2.  cgroup子系统

 

pod中最主要的2cgroup子系统: cpumemory

 

a.  子系统cpu

 

cpu子系统:观察cpu是否受限以及如何临时取消限制。

 

  • cpuacct.stat
  • cpu.cfs_period_us
  • cpu.cfs_quota_us
  • cpuacct.usage
  • cpu.shares
  • cpu.stat
  • tasks

 

示例:

 image.png

 

# kubectl exec -it multi-containers-6695d87b75-dsxgn -c nginx -- bash

# cat /sys/fs/cgroup/cpu.stat

 image.png

 

# ssh root@192.168.88.156

# docker ps |grep mu

# docker inspect 0683e462045a |grep -i -pid

# grep -i cpu /proc/905215/cgroup

 image.png

 

# grep -i cpu /proc/905215/cgroup

 image.png

 

# cat cpu.cfs_quota_us

50000

# cat cpu.cfs_period_us

100000

 

Top命令查看,Cat cpu使用在50%,然后临时取消catcpu限制:

#echo -1 >cpu.cfs_quota_us

cat 瞬时cpu使用达到100%

 image.png

 

b.  子系统memory

 

Memory子系统:观察memory是否受限以及如何临时取消限制。

 image.png

 

  • memory.failcnt
  • memory.limit_in_bytes
  • memory.max_ usage_in_ bytes
  • memory.usage_in_bytes
  • memory.stat
  • memory.oom_control
  • tasks

 image.png

 

3.  超好用的commandsystem-cg*

 

  • Systemd-cgtop:观察systemd驱动管理的cgroup相关资源使用情况;
  • Systemd-cgls:列出systemd驱动管理的cgroup相关资源;

 

四、Init容器

 

Init容器是一种特殊容器,Pod内的应用容器启动之前运行。Init容器可以包括一些应用镜像中不存在的实用工具和安装脚本。

 

特点:

 

  • Init容器总是运行到完成;
  • Init容器不支持lifecyclelivenessProbereadinessProbestartupProbe,因为它们必须在Pod就绪之前运行完成;
  • 每一个Init容器都必须在下一个容器启动之前成功完成;
  • Pod内多个Init容器会按顺序依次执行;

 

示例:

 

  • 安装定制化的工具或者下载文件等;
  • 等待依赖准备完毕;
  • 初始化pod内核参数;

 image.png

 

五、pause容器

 

Pause容器在K8s中,被当作pod中所有容器的父容器,它为Pod提供一个沙箱(sandbox)环境。

 

作用:

  • pod中容器准备所需共享的命名空间;
  • 启用pid命名空间,开启init进程,回收容器中的进程;

 

代码片段:

 image.png

 

六、最佳实践

 

pod中容器缺少需要的sh命令,可以创建一个临时容器去调试pod中的容器。

 

步骤:

 

a.  查看pod名称;

b.  登录到pod所在节点;

c.  创建容器并绑定pod容器的命名空间;

d.  执行ps -efnetstat -ntp等命令;

 image.png

image.png

 

本讲小结

 

1.  容器中命名空间隔离以及控制器组限制资源的原理;

2.  容器中/容器外如何查看命名空间以及cgroup的配置文件;

3.  podInit容器与pause容器的基本概念和作用;

4.  如何创建一个临时容器来调试pod容器。

 

思考:

1.   pod多容器之间,共享哪些命名空间?

2.   如何修改pod的内核参数?

3.   有哪几种方法查看pod里的tcp/udp连接信息?

4.   如何查看pod是否有cpu/memory受限与否?

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
9月前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
962 3
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
针对本地存储和 PVC 这两种容器存储使用方式,我们对 ACK 的容器存储监控功能进行了全新升级。此次更新完善了对集群中不同存储类型的监控能力,不仅对之前已有的监控大盘进行了优化,还针对不同的云存储类型,上线了全新的监控大盘,确保用户能够更好地理解和管理容器业务应用的存储资源。
820 280
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
ACK One注册集群已正式支持ACS(容器计算服务)算力,为企业的容器化工作负载提供更多选择和更强大的计算能力。
|
运维 安全 Linux
试试Linux设备命令行运维工具——Wowkey
WowKey 是一款专为 Linux 设备设计的命令行运维工具,提供自动化、批量化、标准化、简单化的运维解决方案。它简单易用、高效集成且无依赖,仅需 WIS 指令剧本文件、APT 账号密码文件和 wowkey 命令即可操作。通过分离鉴权内容与执行内容,WowKey 让运维人员专注于决策,摆脱繁琐的交互与执行细节工作,大幅提升运维效率与质量。无论是健康检查、数据采集还是配置更新,WowKey 都能助您轻松应对大规模设备运维挑战。立即从官方资源了解更多信息:https://atsight.top/training。
|
数据采集 运维 安全
Linux设备命令行运维工具WowKey问答
WowKey 是一款用于 Linux 设备运维的工具,可通过命令行手动或自动执行指令剧本,实现批量、标准化操作,如健康检查、数据采集、配置更新等。它简单易用,只需编写 WIS 指令剧本和 APT 帐号密码表文件,学习成本极低。支持不同流派的 Linux 系统,如 RHEL、Debian、SUSE 等,只要使用通用 Shell 命令即可通吃Linux设备。
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
484 10
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
351 1
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
455 0
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
|
弹性计算 人工智能 资源调度
DeepSeek大解读系列公开课上新!阿里云专家主讲云上智能算力、Kubernetes容器服务、DeepSeek私有化部署
智猩猩「DeepSeek大解读」系列公开课第三期即将开讲,聚焦阿里云弹性计算助力大模型训练与部署。三位专家将分别讲解智能算力支撑、Kubernetes容器服务在AI场景的应用实践、以及DeepSeek一键部署和多渠道应用集成,分享云计算如何赋能大模型发展。欲观看直播,可关注【智猩猩GenAI视频号】预约。 (239字符)
|
存储 监控 对象存储
ACK容器监控存储全面更新:让您的应用运行更稳定、更透明
介绍升级之后的ACK容器监控体系,包括各大盘界面展示和概要介绍。

相关产品

  • 容器服务Kubernetes版